Как добавить опцию “Изменить выделенные” в списках для своей конфигурации

Данная статья для начинающих о том, как добавить в свою конфигурацию функцию группового изменения реквизитов в формах списков справочников и документов.

Итак, допустим, перед нами стоит задача: сделать удобное групповое изменение реквизитов справочников и документов в своей собственной конфигурации.

Мы можем сделать это также как это реализовано в 1С “Бухгалтерии предприятия 3.0”, где мы можем выделить элементы списка, нажать правую кнопку мыши и в контекстном меню выбрать пункт “Изменить выделенные”.

Приступим!

Допустим, что мы уже создали конфигурацию на управляемых формах в платформе 8.3.

Создаем (или перетаскиваем из примера в этой публикации) общий модуль “ГрупповоеИзменениеОбъектовКлиент” (в свойствах модуля поставить флажок напротив “Клиент”):

////////////////////////////////////////////////////////////////////////////////
// Подсистема "Групповое изменение объектов".
//
////////////////////////////////////////////////////////////////////////////////

#Область ПрограммныйИнтерфейс

// Используется для открытия формы группового изменения объектов.
//
// Параметры:
//  Список - ТаблицаФормы - элемент формы списка, содержащий ссылки на изменяемые объекты.
//
Процедура ИзменитьВыделенные(Список) Экспорт
    
    ВыделенныеСтроки = Список.ВыделенныеСтроки;
    
    ПараметрыФормы = Новый Структура("МассивОбъектов", Новый Массив);
    
    Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
        Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
            Продолжить;
        КонецЕсли;
        
        ТекущаяСтрока = Список.ДанныеСтроки(ВыделеннаяСтрока);
        
        Если ТекущаяСтрока <> Неопределено Тогда
            
            ПараметрыФормы.МассивОбъектов.Добавить(ТекущаяСтрока.Ссылка);
            
        КонецЕсли;
        
    КонецЦикла;
    
    Если ПараметрыФормы.МассивОбъектов.Количество() = 0 Тогда
        ПоказатьПредупреждение(, НСтр("ru = 'Команда не может быть выполнена для указанного объекта.'"));
        Возврат;
    КонецЕсли;
        
    ОткрытьФорму("Обработка.ГрупповоеИзменениеРеквизитов.Форма", ПараметрыФормы);
    
КонецПроцедуры

#КонецОбласти

Заимствуем обработку “ГрупповоеИзменениеРеквизитов” из типовых конфигураций в свою. Т.е. открываете два окна конфигуратора и перетаскиваете себе обработку “ГрупповоеИзменениеРеквизитов”.

Открываем форму списка любого справочника или документа. В моем случае это будет “Контрагенты”.
В числе колонок списка обязательно должно быть поле с именем “Ссылка”, которое содержит ссылку на объект справочника или документа. Если у вас Список типа “Динамический список” с произвольным запросом, убедитесь, что в числе выбираемых полей есть поле “Ссылка”, а напротив стоит галка “Использовать всегда”.

Теперь нам нужно добавить команду для того, чтобы пользователь мог производить изменение реквизитов.

На вкладке команды создаем новую команду и процедуру (выполняемую на клиенте). Содержание процедуры такое:

&НаКлиенте
Процедура ИзменитьВыделенные(Команда)
    ГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Элементы.Список);
КонецПроцедуры

Чтобы эту команду пользователь мог вызывать из контекстного меню списка, нам надо это меню добавить в контекстное меню списка.

По сути все просто – мы добавили в форму списка команду (а именно – засунули ее в контекстное меню), которая вызывает процедуру общего модуля, который в свою очередь открывает обработку редактирования реквизитов.

Само собой, что это можно внедрить не только в форму списка справочника, но и документа.

Яндекс.Метрика