Подключаемые команды БСП — это подсистема, которая сама добавляет на формы объектов команды печати, отчётов и создания на основании. Чтобы команды появились на форме своего (нетипового) документа или справочника, нужны четыре вещи: вызов ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект) в форме, обработчики Подключаемый_... в модуле формы, процедуры ДобавитьКомандыПечати, ДобавитьКомандыОтчетов, ДобавитьКомандыСозданияНаОсновании в модуле менеджера и регистрация объекта в переопределяемых модулях подсистем печати, вариантов отчётов и создания на основании.
Последний пункт забывают чаще всего: форма и менеджер сделаны «как у типового», а команд нет. Ниже — полный порядок подключения и отличия от старых версий БСП, с которыми сталкиваются при обновлении.
Что изменилось с версии БСП 2.4
| До 2.4 | С 2.4 |
|---|---|
УправлениеПечатью.ПриСозданииНаСервере(Форма, Элементы.ПодменюПечать) | ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект) |
ВводНаОсновании.ПриСозданииНаСервере(...) | тот же единый вызов |
МенюОтчеты.ПриСозданииНаСервере(...) | тот же единый вызов |
Отдельные обработчики Подключаемый_ВыполнитьКомандуПечати, ..._СоздатьНаОсновании, ..._Отчет | Один Подключаемый_ВыполнитьКоманду |
При обновлении конфигурации со старой БСП типовые формы переписывают разработчики фирмы «1С», а все свои формы — вы. Поэтому при переходе через 2.4 я сначала составляю список нетиповых объектов с печатью и отчётами и для каждого проверяю пункты из этой статьи.
Шаг 1. Форма объекта

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




