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