Общая команда, команда объекта и формы в 1С 8.3: создание, права и аудит

· 9 мин

Содержание

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

Частое заблуждение — искать «команду» в кластере серверов. В консоли администрирования такого объекта нет. Там есть администраторы кластера, профили безопасности и требования назначения функциональности. Команда — это объект конфигурации: кнопка или пункт меню, который запускает ваш код. Создать её может администратор базы с доступом к конфигуратору, а ограничить — через роли и журнал регистрации.

Какие бывают команды в 1С и где их создают

В платформе 8.3 четыре вида команд. Выбор зависит от того, где кнопка должна появиться и с чем работать.

Вид командыГде создаётсяГде видна пользователюКогда выбирать
📌 Общая командаОбщие → Общие командыПанель разделов, панель действий, формы объектовДействие нужно в разных местах или для нескольких типов объектов
📄 Команда объектаОкно редактирования справочника, документа, отчёта — закладка «Команды»Формы этого объекта и связанные панелиДействие относится к одному объекту метаданных
🪟 Команда формыРедактор формы — закладка «Команды»Только в этой формеКнопка нужна в одной конкретной форме
🧩 Команда дополнительной обработкиВнешняя обработка, функция СведенияОВнешнейОбработке()Раздел или форма, куда её разместилиТиповая база, конфигурацию менять нельзя

Если вы искали «команду» в кластере серверов

Под «командой кластера» обычно понимают группу людей с правами администрирования. В консоли кластера 1С это настраивают так:

  1. Откройте консоль, раскройте центральный сервер и нужный кластер.
  2. Узел «Администраторы» кластера — добавьте пользователя с именем и паролем. С этого момента консоль спрашивает пароль при подключении к кластеру.
  3. Узел «Профили безопасности» — создайте профиль и назначьте его базе в её свойствах. Профиль ограничивает внешние обработки и доступ к файлам сервера.

Сохраните имя и пароль первого администратора в надёжном месте: после его добавления консоль без них к кластеру не подключится. Для консольной утилиты подсказки по администраторам кластера выводит rac help cluster.

💡 Если сомневаетесь, начинайте с команды объекта. Она проще общей: не нужно задавать тип параметра, а права определяются правами на сам объект.

Что проверить до создания команды

Подготовка занимает десять минут, но спасает от отката изменений.

  • 💾 Резервная копия. Выгрузите базу в .dt через Администрирование → Выгрузить информационную базу в конфигураторе. Для выгрузки нужен монопольный доступ — предупредите пользователей, их сеансы придётся завершить.
  • 🔒 Режим поддержки. Откройте Конфигурация → Поддержка → Настройка поддержки. Если типовая конфигурация стоит «на замке», не снимайте её с поддержки ради одной кнопки — создайте расширение.
  • 👤 Права в базе. Для работы в конфигураторе нужна роль с административными правами (в типовых — «Полные права» или «Администратор системы»).
  • 🧪 Тестовая копия. Отлаживайте команду на копии базы. В рабочей базе обновление структуры потребует монопольного режима, если меняются объекты с данными.
  • 📋 Постановка. Запишите: что делает команда, для каких ролей, нужен ли ей выбранный объект, меняет ли она данные.

Как создать общую команду в конфигураторе пошагово

Шаг 1. Добавьте объект

  1. Откройте конфигурацию: Конфигурация → Открыть конфигурацию.
  2. В дереве раскройте ветку Общие → Общие команды.
  3. Правой кнопкой — Добавить. Откроется палитра свойств новой команды.

Шаг 2. Заполните свойства

СвойствоЧто указатьПример
ИмяЛатиница или кириллица без пробеловПроверитьОстатки
СинонимТекст на кнопке«Проверить остатки»
ГруппаКуда встанет командаПанель навигации.Важное, Панель действий.Сервис, Командная панель формы.Важное
Тип параметра командыТип объекта, с которым работает командаДокументСсылка.РеализацияТоваровУслуг
Режим использования параметраОдиночный или МножественныйМножественный — если выделяют несколько строк списка
Изменяет данныеФлажок, если команда пишет в базуВключить для команд заполнения и проведения
Картинка, Подсказка, Сочетание клавишОформлениеCtrl+Shift+R

Тип параметра решает, где появится команда. Без параметра она встаёт в панель разделов подсистемы. С параметром — в формы объектов указанного типа: в форму документа и в его список.

Шаг 3. Напишите обработчик

Двойной щелчок по свойству «Модуль команды» откроет модуль с заготовкой. Пример для команды, открывающей форму обработки:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

	ПараметрыФормы = Новый Структура("Документы", ПараметрКоманды);
	ОткрытьФорму("Обработка.ПроверкаОстатков.Форма", ПараметрыФормы,
		ПараметрыВыполненияКоманды.Источник,
		ПараметрыВыполненияКоманды.Уникальность,
		ПараметрыВыполненияКоманды.Окно);

КонецПроцедуры

При режиме «Множественный» в ПараметрКоманды приходит массив ссылок, даже если выделена одна строка. Учитывайте это в коде формы.

Если команде нужна серверная логика, вынесите её в общий модуль с флажками «Сервер» и «Вызов сервера» и вызывайте оттуда: ПроверкаОстатковСервер.Проверить(ПараметрКоманды).

Шаг 4. Включите в подсистему и обновите базу

  1. В свойствах команды откройте «Подсистемы» или в нужной подсистеме добавьте команду на закладке «Состав».
  2. Сохраните конфигурацию и нажмите F7 — «Обновить конфигурацию базы данных».
  3. Запустите режим 1С:Предприятие (F5) и проверьте кнопку под пользователем с нужной ролью, а не под администратором.

Команда объекта и команда формы: чем отличается создание

Команда объекта

  1. Откройте окно редактирования документа или справочника (двойной щелчок в дереве).
  2. Перейдите на закладку «Команды» и нажмите «Добавить».
  3. Свойства те же, что у общей команды. Тип параметра по умолчанию уже указывает на сам объект.

Команда объекта автоматически попадает в его формы. Отдельно включать её в форму не нужно, если группа выбрана правильно.

Команда формы

  1. Откройте форму в редакторе, закладка «Команды» → «Команды формы».
  2. Добавьте команду и в свойстве «Действие» нажмите лупу — платформа создаст процедуру в модуле формы.
  3. Перетащите команду в дерево элементов: в командную панель или в нужную группу формы.
&НаКлиенте
Процедура ЗаполнитьПоОстаткам(Команда)
	ЗаполнитьПоОстаткамНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
	// здесь работа с Объект и запросы к базе
КонецПроцедуры

Команда формы не появится в интерфейсе, пока её нет в дереве элементов. Это самая частая причина вопроса «создал, а кнопки нет».

Права доступа к команде и место в интерфейсе

Видимость команды складывается из трёх условий. Не выполнено одно — пользователь кнопку не увидит.

  1. Право «Просмотр» на общую команду. Откройте роль, найдите в дереве прав Общие команды → ПроверитьОстатки и поставьте флажок «Просмотр». Для каждой роли, которой команда нужна.
  2. Права на данные. Команда объекта видна, если у роли есть права на сам объект. Команда, меняющая документы, без права «Изменение» не поможет — пользователь получит ошибку нарушения прав при записи.
  3. Командный интерфейс подсистемы. В подсистеме нажмите «Командный интерфейс». Здесь задают порядок и видимость команд, в том числе по отдельным ролям.

Дополнительно команду можно привязать к функциональной опции (свойство «Функциональные опции»). Выключили опцию в настройках программы — команда скрылась у всех.

💡 Для проверки прав внутри кода используйте ПравоДоступа("Изменение", Метаданные.Документы.РеализацияТоваровУслуг). Это надёжнее проверки по имени роли через РольДоступна(): роли переименовывают, а права остаются.

Что настроитьГдеЧто даёт
Право «Просмотр»Роль → Общие командыДоступ к общей команде
Видимость по ролямКомандный интерфейс подсистемыПрячет команду у части пользователей
Функциональная опцияСвойства командыВключение и отключение для всей базы
Проверка в кодеОбработчик командыЗащита от запуска без прав на данные

Команда без правки типовой конфигурации: расширение и дополнительная обработка

Через расширение конфигурации

Расширения появились в 8.3.6 и подходят для типовых баз на поддержке.

  1. Конфигурация → Расширения конфигурации → Добавить.
  2. В дереве расширения добавьте общую команду так же, как в основной конфигурации.
  3. Чтобы команда попала в раздел, заимствуйте подсистему: правой кнопкой по подсистеме основной конфигурации → «Добавить в расширение», затем включите в неё команду.
  4. Обновите расширение в базе и перезапустите сеанс.

Обновление типовой конфигурации расширение не ломает, если заимствованные объекты не удалили в новом релизе.

Через дополнительную обработку (БСП)

В типовых конфигурациях на БСП команды подключают без конфигуратора. Внешняя обработка описывает свои команды в модуле объекта:

Функция СведенияОВнешнейОбработке() Экспорт

	Параметры = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
	Параметры.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	Параметры.Версия = "1.0";
	Параметры.БезопасныйРежим = Истина;

	Команда = Параметры.Команды.Добавить();
	Команда.Представление = "Проверить остатки";
	Команда.Идентификатор = "ПроверитьОстатки";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Истина;

	Возврат Параметры;

КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
	Если ИдентификаторКоманды = "ПроверитьОстатки" Тогда
		// серверная логика команды
	КонецЕсли;
КонецПроцедуры

Файл .epf загружают в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. В карточке обработки указывают размещение (раздел) и пользователей, которым команда доступна. Одна обработка может нести несколько команд — добавьте строки в таблицу Команды.

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

Журнал регистрации: кто и когда запускал команду

Платформа не пишет нажатие кнопки в журнал сама. Если нужен аудит, добавьте запись в серверную часть команды:

ЗаписьЖурналаРегистрации("Команды.ПроверитьОстатки",
	УровеньЖурналаРегистрации.Информация,
	Метаданные.Документы.РеализацияТоваровУслуг,
	,
	"Проверено документов: " + Формат(МассивДокументов.Количество(), "ЧГ=0"));

Имя события задавайте с префиксом — по нему удобно фильтровать. Пользователя, компьютер и время платформа добавит сама.

Где смотреть:

  • 🖥️ в конфигураторе — Администрирование → Журнал регистрации;
  • 📊 в типовых конфигурациях — Администрирование → Обслуживание → Журнал регистрации, отбор по событию Команды.ПроверитьОстатки.

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

Почему созданная команда не появилась у пользователя

Диагностика: выберите симптом

Частые вопросы

Можно ли создать команду в кластере серверов 1С?
Нет. В консоли кластера нет объекта «команда». Доступ к администрированию кластера дают через список администраторов кластера, а ограничения для баз — через профили безопасности.
Нужно ли снимать типовую конфигурацию с поддержки, чтобы добавить команду?
Нет. Команду добавляют в расширение конфигурации или подключают дополнительной обработкой. Это не мешает обновлять типовую конфигурацию.
Как запустить команду по расписанию?
Команда работает в интерфейсе пользователя. Для запуска по расписанию вынесите логику в общий модуль и вызовите её из регламентного задания.
Как назначить команде сочетание клавиш?
В свойстве «Сочетание клавиш» общей команды или команды формы. Не занимайте сочетания платформы, например F7, F8 и Ctrl+S.
Почему в ПараметрКоманды приходит массив, хотя выделен один документ?
У команды включён режим использования параметра «Множественный». Переключите на «Одиночный» или обрабатывайте массив.