1 подписчик
#1С #1C #УНФ
Структура подчинённости в расширении для существующих документов.
Задача:
Добавить новую связь между существующими документами (пункт меню
создать на основании) Событие и ЗаказНаПроизводство. Связь должна
отображаться в типовой форме подчинённых документов.
Решение:
Для решения я создаю два расширения (можно делать в одно).
Первое расширение я назвал ФормаСтруктурыПодчиненности.
В него заимствую функцию из общей формы ФормаСтруктурыПодчиненности -
"ПолучитьСписокПодчиненныхДокументов".
Внутри функции нужно заменить:
Для каждого ЭлементСостава Из Метаданные.КритерииОтбора.СтруктураПодчиненности.Состав Цикл
На
КритерииОтбораСостав = СоздатьМассивКритериевОтбора();
Для Каждого ЭлементСостава Из КритерииОтбораСостав Цикл
И добавить функцию:
Функция СоздатьМассивКритериевОтбора()
МассивКритериевОтбора = Новый Массив;
Для каждого ЭлементСостава Из Метаданные.КритерииОтбора.СтруктураПодчиненности.Состав Цикл
МассивКритериевОтбора.Добавить(ЭлементСостава);
КонецЦикла;
Для каждого КритерииОтбораЭлемент Из Метаданные.КритерииОтбора Цикл
Если СтрНайти(КритерииОтбораЭлемент.Имя, "_СтруктураПодчиненности") > 0 Тогда
Для каждого ЭлементСостава Из КритерииОтбораЭлемент.Состав Цикл
МассивКритериевОтбора.Добавить(ЭлементСостава);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат МассивКритериевОтбора;
КонецФункции
Cоздаю второе расширение.
Второе расширение я назвал "ДокументСобытие".
В расширение заимствую документы "Событие" и "ЗаказНаПроизводство".
Добавляю общую команду и называю её "ЗаказНаПроизводство".
Группа: Командная панель формы.Создать на основании
Тип параметра команды: ДокументСсылка.Событие
Режим использования параметра: Одиночный
В модуле команды добавляю открытие формы нового документа "ЗаказНаПроизводство":
СтрДанные
= Новый Структура("Основание", ПараметрКоманды); ПараметрыФормы =
Новый Структура("ЗначенияЗаполнения", СтрДанные);
ОткрытьФорму("Документ.ЗаказНаПроизводство.Форма.ФормаДокумента",
ПараметрыФормы, ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно,
ПараметрыВыполненияКоманды.НавигационнаяСсылка);
В документ "ЗаказНаПроизводство" добавляю новый реквизит и называю его "Событие" с типом "ДокументСсылка.Событие".
В модуле документа заимствую процедуру "ОбработкаЗаполнения" (мне это необходимо для реализации дальнейшей логики работы).
&После("ОбработкаЗаполнения")Процедура ДСОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Добавляю новый критерий отбора и называю его "ДокументСобытие_СтруктураПодчиненности".
Тип: ДокументСсылка.Событие
Состав: Документ.ЗаказНаПроизводство.Реквизит.Событие
Пояснение:
В модуле формы структуры подчинённости я добавил функцию "СоздатьМассивКритериевОтбора", чтобы собрать в него все родные для конфигурации критерии отбора и добавить критерии отбора по подстроке имени "_СтруктураПодчиненности" из других расширений.
В следующий раз, если мне понадобится создать ещё одну связку документов в расширении, мне будет достаточно повторить действия для второго расширения.
2 минуты
23 декабря 2022