понедельник, 27 января 2025 г.

Групповое заполнение дополнительного реквизита справочника в 1С Документооборот 2.1

Требуется: В 1С Документооборот 2.1, дать пользователю доступ на изменение для справочника "Должности". Однако, текущие наименования должностей надо сохранить."для истории".

Решение:

Добавить новый дополнительный реквизит для справочника "Должности", тип Строка, 150.

Присвоить имя - "Исходное наименование" (в справочник наименование запишется как "Исходное наименование (Должности)", по нему в дальнейшем и будем искать).

В стандартной обработке "Групповое изменение реквизитов" записываем произвольный алгоритм, и выполняем его.


ДолжностьОбъект = Объект;
ДолжностьСсылка = Объект.Ссылка;

Сообщить("Обрабатывается: "+ДолжностьСсылка);

СвойствоИсходноеНаименование = Неопределено;

МассивСвойствДолжностей = УправлениеСвойствами.ПолучитьСписокСвойств(ДолжностьСсылка, Истина, Ложь);    // только доп. реквизиты
Для Каждого ЭлементМассива Из МассивСвойствДолжностей Цикл
    Если ЭлементМассива.Наименование = "Исходное наименование (Должности)" Тогда
        СвойствоИсходноеНаименование = ЭлементМассива;
    КонецЕсли;
КонецЦикла;

// 
РеквизитЗаполнен = Ложь;
Для Каждого СтрокаДопРеквизит Из ДолжностьОбъект.ДополнительныеРеквизиты Цикл
    Если СтрокаДопРеквизит.Свойство.Наименование = "Исходное наименование (Должности)" Тогда
        Сообщить("    Реквизит уже заполнен");
        РеквизитЗаполнен = Истина;
    КонецЕсли;
КонецЦикла;

//
Если НЕ РеквизитЗаполнен Тогда
    СтрокаДопРеквизит = ДолжностьОбъект.ДополнительныеРеквизиты.Добавить();
    СтрокаДопРеквизит.Свойство = СвойствоИсходноеНаименование;
    СтрокаДопРеквизит.Значение = СокрЛП(Объект.Наименование);
КонецЕсли;


Комментариев нет: