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