Нужна была универсальная обработка, для редактирования реквизитов Номенклатуры. Ничего прочего.
Немного модифицирована от типовой. Список товаров для отбора заполняется как вручную, так и с помощью вставки значений из буфера (коды Артикулов, по ним происходит поиск требуемых для редактирования номенклатур. Также реализован механизм считывания данных с файлов Excel (xls, xlsx формата), в которых есть заполненные данные, с первой колонкой "Артикул".
- Запускается обработка.
- В форме отбора выбираются, или загружаются из буфера, excel данные артикулы товаров, по которым надо массово заменить значения в реквизитах.
- После считывания данных определяем список товаров, которые редактируем.
- На панели реквизитов определяем список реквизитов, которые изменяем, напротив указываем требуемое значение.
- Запускаем изменение.
Для безопасности, из редактируемых реквизитов убраны: Наименование, Код, Артикул.
Также после выполнения изменения редактирования реквизитов в журнал регистрации создается запись о редактируемом объекте с данными о пользователе, который вносил изменения, и дата изменения. (для контроля проверки).
Обработка тестировалась на платформе 8.3.13-8.3.17. Подойдет также под платформы свежее.
Обработка универсальная. В модуле объекта и в основной форме обработки основополагающим есть общий модуль. Он может быть в разных конфигурациях именоваться по своему.
Потому в данном куске кода желательно заменять название модуля на свой. К примеру в обработчике модуля формы:
&НаСервереБезКонтекста
Функция МетодыМенеджераОбъектаДляРедактированияРеквизитов(ИмяОбъекта)
МодульИнтеграцияПодсистемБСП = ОбщийМодуль("ИнтеграцияПодсистемБСП");
//тут ОбщийМодуль("наименование Вашего модуля из конфигурации, обычно это "Интеграция"")
МодульГрупповоеИзменениеОбъектовПереопределяемый = ОбщийМодуль("ГрупповоеИзменениеОбъектовПереопределяемый");
Если МодульИнтеграцияПодсистемБСП = Неопределено Или МодульГрупповоеИзменениеОбъектовПереопределяемый = Неопределено Тогда
Возврат Новый Массив;
КонецЕсли;
ОбъектыСЗаблокированнымиРеквизитами = Новый Соответствие;
МодульИнтеграцияПодсистемБСП.ПриОпределенииОбъектовСРедактируемымиРеквизитами(ОбъектыСЗаблокированнымиРеквизитами);
МодульГрупповоеИзменениеОбъектовПереопределяемый.ПриОпределенииОбъектовСРедактируемымиРеквизитами(ОбъектыСЗаблокированнымиРеквизитами);
СведенияОМенеджереОбъекта = ОбъектыСЗаблокированнымиРеквизитами[ИмяОбъекта];
Если СведенияОМенеджереОбъекта = Неопределено Тогда
Возврат "НеПоддерживается";
КонецЕсли;
ДоступныеМетоды = СтрРазделить(СведенияОМенеджереОбъекта, Символы.ПС, Ложь);
Возврат ДоступныеМетоды;
КонецФункции
и в обработчике модуля объекта:
Функция МенеджерыОбъектовДляРедактированияРеквизитов()
МодульИнтеграцияПодсистемБСП = ОбщийМодуль("ИнтеграцияПодсистемБСП");
//тут ОбщийМодуль("наименование Вашего модуля из конфигурации, обычно это "Интеграция"")
МодульГрупповоеИзменениеОбъектовПереопределяемый = ОбщийМодуль("ГрупповоеИзменениеОбъектовПереопределяемый");
Если МодульИнтеграцияПодсистемБСП = Неопределено Или МодульГрупповоеИзменениеОбъектовПереопределяемый = Неопределено Тогда
Возврат Новый Массив;
КонецЕсли;
ОбъектыСЗаблокированнымиРеквизитами = Новый Соответствие;
МодульИнтеграцияПодсистемБСП.ПриОпределенииОбъектовСРедактируемымиРеквизитами(ОбъектыСЗаблокированнымиРеквизитами);
МодульГрупповоеИзменениеОбъектовПереопределяемый.ПриОпределенииОбъектовСРедактируемымиРеквизитами(ОбъектыСЗаблокированнымиРеквизитами);
Возврат ОбъектыСЗаблокированнымиРеквизитами;
КонецФункции