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