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