Заполнение доп реквизитов на основании другого доп реквизита
Задача. Заполнить значения всех уровней категории из имеющегося доп реквизита. То есть значения одного дополнительного реквизита разбить на 4 подкатегории и вписать их в другие дополнительные реквизиты без внесения изменений в конфигураторе
- Создаём доп реквизиты, в которые будут записываться значения

На форме появляются реквизиты

Обработчик события нам не поможет, т.к. при создании документ ещё занят и заблокирован для записи, при старте процесса – данный документ не всегда требуется запускать по маршруту. Создаём процесс, в котором будет выполняться скрипт с отложенным стартом на 1час.

Код скрипта:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
ДокСсылка = Процесс.Предметы[0].Предмет; // Получаем полный путь категории из основного реквизита Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", ДокСсылка); Запрос.Текст = "ВЫБРАТЬ | ВходящиеДокументы.Наименование КАК Наименование, | МАКСИМУМ(ВЫБОР | КОГДА ВходящиеДокументыДополнительныеРеквизиты.Свойство.Имя = ""КатегорияПодкатегория_07e3e94347ee4760a426bf82adef0694"" | ТОГДА ВходящиеДокументыДополнительныеРеквизиты.Значение.Родитель.Родитель.Родитель.Наименование | КОНЕЦ) КАК Категория1, | МАКСИМУМ(ВЫБОР | КОГДА ВходящиеДокументыДополнительныеРеквизиты.Свойство.Имя = ""КатегорияПодкатегория_07e3e94347ee4760a426bf82adef0694"" | ТОГДА ВходящиеДокументыДополнительныеРеквизиты.Значение.Родитель.Родитель.Наименование | КОНЕЦ) КАК Категория2, | МАКСИМУМ(ВЫБОР | КОГДА ВходящиеДокументыДополнительныеРеквизиты.Свойство.Имя = ""КатегорияПодкатегория_07e3e94347ee4760a426bf82adef0694"" | ТОГДА ВходящиеДокументыДополнительныеРеквизиты.Значение.Родитель.Наименование | КОНЕЦ) КАК Категория3, | МАКСИМУМ(ВЫБОР | КОГДА ВходящиеДокументыДополнительныеРеквизиты.Свойство.Имя = ""КатегорияПодкатегория_07e3e94347ee4760a426bf82adef0694"" | ТОГДА ВходящиеДокументыДополнительныеРеквизиты.Значение.Наименование | КОНЕЦ) КАК Подкатегория |ПОМЕСТИТЬ ВТ |ИЗ | Справочник.ВходящиеДокументы КАК ВходящиеДокументы | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВходящиеДокументы.ДополнительныеРеквизиты КАК ВходящиеДокументыДополнительныеРеквизиты | ПО (ВходящиеДокументыДополнительныеРеквизиты.Ссылка = ВходящиеДокументы.Ссылка) |ГДЕ | ВходящиеДокументы.Ссылка = &Ссылка |СГРУППИРОВАТЬ ПО | ВходящиеДокументы.Наименование |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВЫБОР | КОГДА ВТ.Категория1 ЕСТЬ НЕ NULL | ТОГДА ВТ.Категория1 | ИНАЧЕ ВЫБОР | КОГДА ВТ.Категория2 ЕСТЬ НЕ NULL | ТОГДА ВТ.Категория2 | ИНАЧЕ ВЫБОР | КОГДА ВТ.Категория3 ЕСТЬ НЕ NULL | ТОГДА ВТ.Категория3 | ИНАЧЕ """" | КОНЕЦ | КОНЕЦ | КОНЕЦ КАК К1, | ВЫБОР | КОГДА ВТ.Категория1 ЕСТЬ НЕ NULL | И ВТ.Категория2 ЕСТЬ НЕ NULL | ТОГДА ВТ.Категория2 | ИНАЧЕ ВЫБОР | КОГДА ВТ.Категория1 ЕСТЬ NULL | И ВТ.Категория2 ЕСТЬ НЕ NULL | ТОГДА ВТ.Категория3 | ИНАЧЕ """" | КОНЕЦ | КОНЕЦ КАК К2, | ВЫБОР | КОГДА ВТ.Категория1 ЕСТЬ НЕ NULL | И ВТ.Категория2 ЕСТЬ НЕ NULL | И ВТ.Категория3 ЕСТЬ НЕ NULL | ТОГДА ВТ.Категория3 | ИНАЧЕ """" | КОНЕЦ КАК К3, | ВЫБОР | КОГДА ВТ.Подкатегория ЕСТЬ НЕ NULL | ТОГДА ВТ.Подкатегория | ИНАЧЕ """" | КОНЕЦ КАК К4 |ИЗ | ВТ КАК ВТ"; РезультатЗапроса = Запрос.Выполнить(); Если НЕ РезультатЗапроса.Пустой() Тогда Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл // головная категория СвойствоКатегория1 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "КатегорияОбращения_917118fca7244c719d482599f9389848"); ТаблицаСвойствИЗначений1 = Новый Массив; ТаблицаСвойствИЗначений1.Добавить(Новый Структура("Свойство, Значение", СвойствоКатегория1, Выборка.К1)); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокСсылка, ТаблицаСвойствИЗначений1); // 2 уровень СвойствоКатегория2 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "КатегорияОбращения2Уровень_f77914194b974b5b9e21be496dd645e1"); ТаблицаСвойствИЗначений2 = Новый Массив; ТаблицаСвойствИЗначений2.Добавить(Новый Структура("Свойство, Значение", СвойствоКатегория2, Выборка.К2)); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокСсылка, ТаблицаСвойствИЗначений2); // 3 уровень СвойствоКатегория3 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "КатегорияОбращения3Уровень_2ce2bd33e9564a0aa66092eac71e06da"); ТаблицаСвойствИЗначений3 = Новый Массив; ТаблицаСвойствИЗначений3.Добавить(Новый Структура("Свойство, Значение", СвойствоКатегория3, Выборка.К3)); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокСсылка, ТаблицаСвойствИЗначений3); // Конечное Значение СвойствоКатегория4 = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "КатегорияОбращения4Уровень_9916b16d3ff543f9b29305c7889229c8"); ТаблицаСвойствИЗначений4 = Новый Массив; ТаблицаСвойствИЗначений4.Добавить(Новый Структура("Свойство, Значение", СвойствоКатегория4, Выборка.К4)); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ДокСсылка, ТаблицаСвойствИЗначений4); КонецЦикла; КонецЕсли; |
Для автостарта нужен хотя бы один участник. Добавляем какую-нибудь левую учётку

Настроим автозапуск

Отложенный старт

Для закрытия этой задачи настроим правило эскалации


Проверяем


Комментарии закрыты