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