Почему динамические подключаемые команды БСП не отображаются на форме списка и как это исправить

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

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

1. Проверка типов параметров общих команд в метаданных

Одной из наиболее частых причин отсутствия стандартных команд отчетов и навигации является ограничение по типам в дереве метаданных. Такие команды, как структура подчиненности или отчет о движениях документа, реализованы как общие команды конфигурации со строго заданным составом поддерживаемых типов.

Проанализируем необходимые настройки дерева метаданных:

  1. Откроем дерево метаданных конфигуратора и перейдем в ветку Общие → Общие команды.
  2. Найдем команды СтруктураПодчиненности (или СвязанныеДокументы) и ПоказатьДвиженияДокумента.
  3. Откроем свойства команды и проверим свойство Тип параметра команды.
  4. Убедимся, что для ссылки созданного документа или справочника установлен флаг в списке доступных типов. Если тип отсутствует, платформа не сможет предоставить команду для контекста текущего объекта.
  5. Аналогично проверим ветку Общие → Определяемые типы, в частности определяемый тип ОбъектСДополнительнымиКомандами (или аналогичные типы подсистем отчетов и печати, используемые в вашей версии БСП).

2. Настройка подключения через переопределяемые модули БСП

Для сохранения типовой функциональности и корректной поддержки конфигурации при обновлении правильнее регистрировать объекты в переопределяемых модулях соответствующих подсистем.

Рассмотрим пример добавления команды отчета о движениях документа в модуле ВариантыОтчетовПереопределяемый:


Процедура ПередДобавлениемКомандОтчетов(КомандыОтчетов, Параметры) Экспорт
    
    ДокументыСОтчетомОДвижениях = Новый Массив;
    ДокументыСОтчетомОДвижениях.Добавить(Метаданные.Документы.РеализацияТоваровУслуг);
    ДокументыСОтчетомОДвижениях.Добавить(Метаданные.Документы.НовыйДокументПродажи);
    
    Отчеты.ДвиженияДокумента.ДобавитьКомандуОтчетОДвиженияхДокумента(
        КомандыОтчетов, 
        Параметры, 
        ДокументыСОтчетомОДвижениях
    );
    
КонецПроцедуры

Аналогично, если в конфигурации используется модуль СтруктураПодчиненностиПереопределяемый, регистрация выполняется в процедуре переопределения состава документов подсистемы связанных документов.

3. Корректная программная инициализация команд на форме

В зависимости от версии БСП механизм подключения команд может отличаться. В современных редакциях БСП подключение унифицировано через единый общий модуль ПодключаемыеКоманды.

Рассмотрим правильное оформление модуля формы списка:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Инициализация стандартных подсистем БСП
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    
КонецПроцедуры

&НаКлиенте
Процедура ПриАктивизацииСтроки(Элемент)
    
    // Обновление доступности динамических команд в зависимости от текущей строки
    ПодключаемыеКомандыКлиент.ПриАктивизацииСтроки(ЭтотОбъект);
    
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    
    // Универсальный обработчик выполнения динамической команды
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
    
КонецПроцедуры

Если в конфигурации используется модульный подход БСП предыдущих версий (где команды подключались раздельно), обратите внимание на соответствие клиентских процедур:


&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуОтчет(Команда)
    
    МенюОтчетыКлиент.ВыполнитьПодключаемуюКомандуОтчет(Команда, ЭтаФорма, Элементы.Список);
    
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуСоздатьНаОсновании(Команда)
    
    ВводНаОснованииКлиент.ВыполнитьПодключаемуюКомандуСоздатьНаОсновании(Команда, ЭтаФорма, Элементы.Список);
    
КонецПроцедуры

4. Специфика динамических списков и кэширование

Если все методы прописаны, но элементы по-прежнему не выводятся, выясним скрытые технические причины:

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