Добавление собственных документов в стандартный отчет «Связанные документы» в 1С:ERP 2.5
Допустим, на повестке дня, по ТЗ, возник вопрос: «А как добавить в структуру подчиненности, то есть в отчет «Связанные документы», свои документы, добавленные через расширение?». Данная статья опишет, один из способов решения этого вопроса на примере стандартной конфигурации 1С:ERP 2.5 (релиз: 2.5.25.72).
По факту, у нас на руках есть уже заготовленное расширение, в котором есть стандартный документ «Заказ клиента» и наш документ «Корректировка заказа». Необходимо «прикрутить» наш документ в стандартный отчет «Связанные документы». Для интриги приведу конечный результат наших доработок.
Так выглядит отчет «Связанные документы», со стороны документа «Заказ клиента»:
Так выглядит отчет со стороны нашего добавленного документа через расширение:
Итак, поехали)
В наличии есть расширение, подключенное в конфигурации. В нем создан документ «Корректировка заказа клиента».
На форму документа «Корректировка заказа клиента» выведена общая команда «Связанные документы». Для этого добавим в наше расширение общую команду «СвязанныеДокументы».
В свойствах общей команды, в типе параметров команды добавим наш тип документа – ДокументСсылка.
После обновления конфигурации убедимся, что необходимая команда появилась на форме документа.
Форма Документа — раздел команды — глобальные команды.
Теперь в нашем расширении создаем свой критерий отбора.
В его состав включаем наш документ и ссылку на исходный документ (условно, на примере моего ТЗ). Тип реквизита — в моем случае является ссылкой на ЗаказКлиента.
На вкладке «Данные» укажем, что в тип данных входит необходимый документ «Заказ клиента». В моем случае:
Теперь перейдем к более сложной части и, наверное, более «спорной» – редактирование, через наше расширение, общего модуля.
Модуль, который мы будем редактировать — это: «СтруктураПодчиненностиСлужебный», модуль серверный.
Выбираем функцию «ИндексТиповСвязанныхОбъектов()», добавляем ее в расширение, с префиксом &ИзменениеИКонтроль.
Кратко прокомментирую код: в функцию мы добавляем наш критерий отбора, который обходим в цикле и возвращаем значение индекса при построении иерархии документов, в нашем отчете «Связанные документы».
Можно поступить еще проще и просто к индексу добавить наш тип документа:
Оба варианта, по моему мнению, имею право на существование.
Чтобы было легче, приведу оба примера текстом. Первый пример:
Функция Импро_ИндексТиповСвязанныхОбъектов() Индекс = Новый Соответствие; МетаданныеСвязанныхОбъектов = Метаданные.КритерииОтбора.СвязанныеДокументы; ТипыСвязанныхОбъектов = МетаданныеСвязанныхОбъектов.Тип.Типы(); ТипПараметраКоманды = Метаданные.ОбщиеКоманды.СвязанныеДокументы.ТипПараметраКоманды; Для Каждого ТипСвязанногоОбъекта Из ТипыСвязанныхОбъектов Цикл Если Не ТипПараметраКоманды.СодержитТип(ТипСвязанногоОбъекта) Тогда Индекс.Вставить(ТипСвязанногоОбъекта, Истина); КонецЕсли; КонецЦикла; #Вставка МетаданныеСвязанныхОбъектов = Метаданные.КритерииОтбора.КоррЗак_СвязанныеДокументы; ТипыСвязанныхОбъектов = МетаданныеСвязанныхОбъектов.Тип.Типы(); ТипПараметраКоманды = Метаданные.ОбщиеКоманды.СвязанныеДокументы.ТипПараметраКоманды; Для Каждого ТипСвязанногоОбъекта Из ТипыСвязанныхОбъектов Цикл Если Не ТипПараметраКоманды.СодержитТип(ТипСвязанногоОбъекта) Тогда Индекс.Вставить(ТипСвязанногоОбъекта, Истина); КонецЕсли; КонецЦикла; #КонецВставки Возврат Индекс; КонецФункции
Второй пример:
&ИзменениеИКонтроль("ИндексТиповСвязанныхОбъектов")
Функция Импро_ИндексТиповСвязанныхОбъектов()
Индекс = Новый Соответствие;
МетаданныеСвязанныхОбъектов = Метаданные.КритерииОтбора.СвязанныеДокументы;
ТипыСвязанныхОбъектов = МетаданныеСвязанныхОбъектов.Тип.Типы();
ТипПараметраКоманды = Метаданные.ОбщиеКоманды.СвязанныеДокументы.ТипПараметраКоманды;
Для Каждого ТипСвязанногоОбъекта Из ТипыСвязанныхОбъектов Цикл
Если Не ТипПараметраКоманды.СодержитТип(ТипСвязанногоОбъекта) Тогда
Индекс.Вставить(ТипСвязанногоОбъекта, Истина);
КонецЕсли;
КонецЦикла;
#Вставка
Индекс.Вставить(Тип("ДокументСсылка.КооректировкаЗаказаКлиента"), Истина);
#КонецВставки
Возврат Индекс;
КонецФункции
Надеюсь, эта статья-инструкция помогла вам найти ответ на вопрос и облегчила выполнение ТЗ. Хорошего всем дня и интересных ТЗ!
Подпишитесь на Телеграм-канал, чтобы быть в курсе