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