При доработке конфигураций на базе 1С:ERP или 1С:Комплексная автоматизация 2.4 программисты часто сталкиваются с задачей добавления новых документов и настройки связей между ними. Одной из ключевых функций для пользователя является отчет «Связанные документы» (также известный как структура подчиненности), который позволяет наглядно увидеть цепочку документов. Однако простого добавления типа документа в критерий отбора часто бывает недостаточно. В этой статье мы подробно разберем, какие шаги необходимо предпринять, чтобы новые связи корректно отображались в отчете.
Рассмотрим ситуацию: вы создали новый документ, настроили его ввод на основании существующего, добавили тип документа в критерий отбора СвязанныеДокументы, но дерево связей остается пустым. Проанализируем самую распространенную ошибку, связанную с настройкой метаданных в конфигураторе.
Многие начинающие разработчики полагают, что достаточно просто добавить тип документа в список «Данные» критерия отбора. На самом деле, механизм работы критерия отбора строится на поиске ссылок в конкретных реквизитах. Разберем по шагам правильную последовательность действий в конфигураторе:
СвязанныеДокументы.ДокументОснование, ЗаказКлиента или Сделка).Если вы просто отметите тип документа, но не укажете реквизит связи, платформа не будет знать, по какому полю выполнять поиск, и связь в отчете не появится. Помните, что связь в критерии отбора всегда происходит по конкретному реквизиту документа. В качестве альтернативы ручной правке метаданных можно использовать доработку отчета «Связанные документы» для вывода объектов из любого расширения.
Даже если критерий отбора настроен верно, отчет может не работать, если в самой базе данных связь не установлена. Выясним причину: часто при программном создании документа на основании или при интерактивном вводе разработчики забывают физически записать ссылку на родительский документ в реквизит-основание.
Проанализируем пример кода, который необходимо добавить в модуль объекта нового документа в процедуру ОбработкаЗаполнения. Это гарантирует, что при создании документа на основании другого объекта связь будет зафиксирована в базе данных.
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
// Проверяем, что заполнение происходит на основании другого документа
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
// Заполняем реквизит, который указан в составе критерия отбора
ЭтотОбъект.ДокументОснование = ДанныеЗаполнения;
// Дополнительная логика заполнения табличных частей и реквизитов шапки
ЗаполнитьПоОснованию(ДанныеЗаполнения);
КонецЕсли;
КонецПроцедуры
Без этой строки — ДокументОснование = ДанныеЗаполнения — реквизит в базе останется пустым, и отчет «Связанные документы» не сможет найти «родителя» для текущего объекта, так как критерий отбора анализирует именно записанные данные.
В современных конфигурациях, таких как КА 2.4, отчет «Связанные документы» интегрирован через подсистему «Варианты отчетов» Библиотеки стандартных подсистем (БСП). Для того чтобы команда вызова отчета появилась в интерфейсе документа и работала корректно, рекомендуется внести изменения в модуль менеджера вашего документа.
Рассмотрим, как добавить стандартную команду структуры подчиненности. В модуле менеджера необходимо создать или дополнить процедуру ДобавитьКомандыОтчетов:
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов) Экспорт
// Если используется типовой механизм УТ/КА/ERP
ВариантыОтчетовУТПереопределяемый.ДобавитьКомандуСтруктураПодчиненности(КомандыОтчетов);
КонецПроцедуры
Эта процедура позволяет отчету динамически подтягиваться в подменю «Отчеты» формы документа. Это профессиональный подход, принятый в типовых решениях 1С, который обеспечивает единообразие интерфейса. Для быстрого вывода команды структуры подчиненности непосредственно на командную панель списков и документов можно воспользоваться расширением для размещения кнопки «Связанные документы» на панели инструментов.
При работе в крупных информационных базах отчет «Связанные документы» может работать медленно, если реквизиты связи не оптимизированы. Разберем несколько важных технических нюансов:
ДокументОснование), который вы добавили в критерий отбора, установлено свойство «Индексировать». Это значительно ускорит поиск связей при формировании отчета.СвязанныеДокументы. Даже при наличии прав на сами документы, отсутствие прав на критерий отбора может привести к пустому отчету.СвязанныеДокументы. Если ваш документ является специфическим (например, не наследуется от стандартных типов), может потребоваться расширение логики в общем модуле СвязанныеДокументыПереопределяемый.Таким образом, полноценная настройка отчета «Связанные документы» для нового объекта включает в себя три уровня: правильную настройку метаданных критерия отбора, обязательное программное заполнение реквизита связи и регистрацию команды в модуле менеджера согласно стандартам БСП. Соблюдение этих шагов гарантирует корректную работу отчета и удобство пользователей при анализе цепочек документов.