Как вывести кнопку «Связные документы» на командную панель журнала документов

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке новых журналов документов в 1С часто возникает ситуация, когда стандартная команда «Связные документы» (структура подчиненности) либо автоматически попадает в подменю «Отчеты», либо вовсе не отображается на форме. Это связано с особенностями работы механизмов БСП (Библиотеки стандартных подсистем), настройками критериев отбора и параметрами динамических списков. Рассмотрим подробно, как решить эту задачу несколькими способами.

Способ 1. Программный вызов формы (Универсальный метод)

Если стандартная команда не подтягивается автоматически или вам нужно строго закрепить кнопку в определенном месте командной панели, самым надежным решением будет создание собственной команды формы. Этот метод не зависит от обновлений БСП и гарантированно работает в управляемых формах.

Для реализации выполним следующие шаги:

  1. Откроем форму списка журнала документов в конфигураторе.
  2. Перейдем на вкладку «Команды» и создадим новую команду формы, например, с именем СвязныеДокументыНаПанели.
  3. Перетащим созданную команду на командную панель формы. В свойствах элемента установим «Отображение» как «Картинка и текст» и выберем стандартную иконку структуры подчиненности (если необходимо).
  4. В обработчике команды на клиенте пропишем код для открытия общей формы структуры подчиненности.

Пример программного кода для вызова формы:


&НаКлиенте
Процедура СвязныеДокументыНаПанели(Команда)
    
    // Получаем текущую строку списка (ссылку на документ)
    ПараметрКоманды = Элементы.Список.ТекущаяСтрока;
    
    Если ЗначениеЗаполнено(ПараметрКоманды) Тогда
        
        // Формируем структуру параметров для открытия формы
        ПараметрыВыполнения = Новый Структура;
        ПараметрыВыполнения.Вставить("ОбъектОтбора", ПараметрКоманды);
        
        // Открываем общую форму структуры подчиненности
        ОткрытьФорму("ОбщаяФорма.СтруктураПодчиненности", 
            ПараметрыВыполнения, 
            ЭтаФорма, 
            ЭтаФорма.КлючУникальности);
            
    КонецЕсли;
    
КонецПроцедуры

Этот способ позволяет четко контролировать, какой объект передается в структуру подчиненности, что особенно важно при использовании сложных журналов.

Способ 2. Настройка критерия отбора и типов общей команды

Если мы хотим использовать стандартный механизм платформы, нам необходимо проверить настройки метаданных. Кнопка «Связные документы» часто привязана к Критерию отбора (обычно он называется СвязанныеДокументы).

Проанализируем ситуацию по шагам:

  1. Проверка состава критерия отбора: Перейдем в дерево метаданных: Общие -> Критерии отбора -> СвязанныеДокументы. На вкладке «Состав» должны быть отмечены все документы, которые входят в ваш новый журнал. Если документа там нет, структура подчиненности по нему строиться не будет.
  2. Настройка общей команды: Найдем общую команду (например, СвязанныеДокументы в БСП). В свойстве «Тип параметра команды» должны быть перечислены ссылки на все типы документов журнала.
  3. Глобальные команды в редакторе формы: В окне редактирования формы списка перейдем на вкладку «Команды», затем в раздел «Глобальные команды». Развернем ветку Параметризуемые -> Объект. Если настройки типов в метаданных верны, команда появится в этом списке, и ее можно будет просто перетащить на командную панель.

Способ 3. Проблема «Произвольного запроса» и основной таблицы

Часто в журналах документов используется динамический список с произвольным запросом. Проанализируем важный нюанс: если в настройках динамического списка (свойство «Основная таблица») не указано конкретное имя журнала или документа, система «теряет» контекст типа данных.

Почему это критично: Стандартные команды 1С и БСП анализируют тип текущей строки. Если основная таблица не задана, ТекущаяСтрока для системы — это неопределенный тип данных, и соответствующие команды (включая структуру подчиненности) автоматически не активируются. Всегда указывайте основную таблицу в свойствах динамического списка, даже если используете сложный запрос с объединениями.

Способ 4. Использование механизмов БСП (для продвинутых)

Если в вашей конфигурации активно используется БСП, состав кнопок управляется через процедуру ПриСозданииНаСервере. По умолчанию БСП группирует отчеты в соответствующее подменю. Рассмотрим, как программно обратиться к команде, которую создает БСП, и вызвать её через «костыль», если штатные средства не помогают вывести её из подменю.

Разберем пример вызова через подключенные команды:


&НаКлиенте
Процедура МояКнопкаСвязныеДокументы(Команда)
    
    // Пытаемся найти команду, созданную программно при инициализации БСП
    ИмяКомандыБСП = "Подключаемая_СвязанныеДокументы"; // Имя может отличаться в вашей версии
    НужнаяКоманда = ЭтотОбъект.Команды.Найти(ИмяКомандыБСП);
    
    Если НужнаяКоманда <> Неопределено Тогда
        // Вызываем стандартный обработчик БСП
        МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
        МодульПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, НужнаяКоманда, Элементы.Список);
    КонецЕсли;
    
КонецПроцедуры

Важный совет: Чтобы узнать точное имя команды, которую создает БСП для вашего журнала, поставьте точку останова в процедуре ПриСозданииНаСервере после вызова ПодключаемыеКоманды.ПриСозданииНаСервере и изучите коллекцию ЭтотОбъект.Команды.

Резюме

Для быстрого и стабильного результата мы рекомендуем Способ 1. Он дает полный контроль над интерфейсом и поведением программы. Однако, если вы стремитесь к максимальному соответствию стандартам типовых конфигураций, обязательно проверьте состав Критерия отбора и наличие Основной таблицы в динамическом списке вашего журнала.

← На главную