Общая команда, команда объекта и формы в 1С 8.3: создание, права и аудит
Содержание
Команду в 1С создают в конфигураторе: Общие → Общие команды → Добавить, затем пишут обработчик ОбработкаКоманды в модуле команды, включают её в подсистему, дают ролям право «Просмотр» и обновляют конфигурацию базы данных (F7). Для типовой базы на поддержке то же самое делают в расширении конфигурации или через дополнительную обработку.
Частое заблуждение — искать «команду» в кластере серверов. В консоли администрирования такого объекта нет. Там есть администраторы кластера, профили безопасности и требования назначения функциональности. Команда — это объект конфигурации: кнопка или пункт меню, который запускает ваш код. Создать её может администратор базы с доступом к конфигуратору, а ограничить — через роли и журнал регистрации.
Какие бывают команды в 1С и где их создают
В платформе 8.3 четыре вида команд. Выбор зависит от того, где кнопка должна появиться и с чем работать.
| Вид команды | Где создаётся | Где видна пользователю | Когда выбирать |
|---|---|---|---|
| 📌 Общая команда | Общие → Общие команды | Панель разделов, панель действий, формы объектов | Действие нужно в разных местах или для нескольких типов объектов |
| 📄 Команда объекта | Окно редактирования справочника, документа, отчёта — закладка «Команды» | Формы этого объекта и связанные панели | Действие относится к одному объекту метаданных |
| 🪟 Команда формы | Редактор формы — закладка «Команды» | Только в этой форме | Кнопка нужна в одной конкретной форме |
| 🧩 Команда дополнительной обработки | Внешняя обработка, функция СведенияОВнешнейОбработке() | Раздел или форма, куда её разместили | Типовая база, конфигурацию менять нельзя |
Если вы искали «команду» в кластере серверов
Под «командой кластера» обычно понимают группу людей с правами администрирования. В консоли кластера 1С это настраивают так:
- Откройте консоль, раскройте центральный сервер и нужный кластер.
- Узел «Администраторы» кластера — добавьте пользователя с именем и паролем. С этого момента консоль спрашивает пароль при подключении к кластеру.
- Узел «Профили безопасности» — создайте профиль и назначьте его базе в её свойствах. Профиль ограничивает внешние обработки и доступ к файлам сервера.
Сохраните имя и пароль первого администратора в надёжном месте: после его добавления консоль без них к кластеру не подключится. Для консольной утилиты подсказки по администраторам кластера выводит rac help cluster.
💡 Если сомневаетесь, начинайте с команды объекта. Она проще общей: не нужно задавать тип параметра, а права определяются правами на сам объект.
Что проверить до создания команды
Подготовка занимает десять минут, но спасает от отката изменений.
- 💾 Резервная копия. Выгрузите базу в
.dtчерезАдминистрирование → Выгрузить информационную базув конфигураторе. Для выгрузки нужен монопольный доступ — предупредите пользователей, их сеансы придётся завершить. - 🔒 Режим поддержки. Откройте
Конфигурация → Поддержка → Настройка поддержки. Если типовая конфигурация стоит «на замке», не снимайте её с поддержки ради одной кнопки — создайте расширение. - 👤 Права в базе. Для работы в конфигураторе нужна роль с административными правами (в типовых — «Полные права» или «Администратор системы»).
- 🧪 Тестовая копия. Отлаживайте команду на копии базы. В рабочей базе обновление структуры потребует монопольного режима, если меняются объекты с данными.
- 📋 Постановка. Запишите: что делает команда, для каких ролей, нужен ли ей выбранный объект, меняет ли она данные.
Как создать общую команду в конфигураторе пошагово
Шаг 1. Добавьте объект
- Откройте конфигурацию:
Конфигурация → Открыть конфигурацию. - В дереве раскройте ветку
Общие → Общие команды. - Правой кнопкой —
Добавить. Откроется палитра свойств новой команды.
Шаг 2. Заполните свойства
| Свойство | Что указать | Пример |
|---|---|---|
| Имя | Латиница или кириллица без пробелов | ПроверитьОстатки |
| Синоним | Текст на кнопке | «Проверить остатки» |
| Группа | Куда встанет команда | Панель навигации.Важное, Панель действий.Сервис, Командная панель формы.Важное |
| Тип параметра команды | Тип объекта, с которым работает команда | ДокументСсылка.РеализацияТоваровУслуг |
| Режим использования параметра | Одиночный или Множественный | Множественный — если выделяют несколько строк списка |
| Изменяет данные | Флажок, если команда пишет в базу | Включить для команд заполнения и проведения |
| Картинка, Подсказка, Сочетание клавиш | Оформление | Ctrl+Shift+R |
Тип параметра решает, где появится команда. Без параметра она встаёт в панель разделов подсистемы. С параметром — в формы объектов указанного типа: в форму документа и в его список.
Шаг 3. Напишите обработчик
Двойной щелчок по свойству «Модуль команды» откроет модуль с заготовкой. Пример для команды, открывающей форму обработки:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("Документы", ПараметрКоманды);
ОткрытьФорму("Обработка.ПроверкаОстатков.Форма", ПараметрыФормы,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
При режиме «Множественный» в ПараметрКоманды приходит массив ссылок, даже если выделена одна строка. Учитывайте это в коде формы.
Если команде нужна серверная логика, вынесите её в общий модуль с флажками «Сервер» и «Вызов сервера» и вызывайте оттуда: ПроверкаОстатковСервер.Проверить(ПараметрКоманды).
Шаг 4. Включите в подсистему и обновите базу
- В свойствах команды откройте «Подсистемы» или в нужной подсистеме добавьте команду на закладке «Состав».
- Сохраните конфигурацию и нажмите
F7— «Обновить конфигурацию базы данных». - Запустите режим 1С:Предприятие (
F5) и проверьте кнопку под пользователем с нужной ролью, а не под администратором.
Команда объекта и команда формы: чем отличается создание
Команда объекта
- Откройте окно редактирования документа или справочника (двойной щелчок в дереве).
- Перейдите на закладку «Команды» и нажмите «Добавить».
- Свойства те же, что у общей команды. Тип параметра по умолчанию уже указывает на сам объект.
Команда объекта автоматически попадает в его формы. Отдельно включать её в форму не нужно, если группа выбрана правильно.
Команда формы
- Откройте форму в редакторе, закладка «Команды» → «Команды формы».
- Добавьте команду и в свойстве «Действие» нажмите лупу — платформа создаст процедуру в модуле формы.
- Перетащите команду в дерево элементов: в командную панель или в нужную группу формы.
&НаКлиенте
Процедура ЗаполнитьПоОстаткам(Команда)
ЗаполнитьПоОстаткамНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
// здесь работа с Объект и запросы к базе
КонецПроцедуры
Команда формы не появится в интерфейсе, пока её нет в дереве элементов. Это самая частая причина вопроса «создал, а кнопки нет».
Права доступа к команде и место в интерфейсе
Видимость команды складывается из трёх условий. Не выполнено одно — пользователь кнопку не увидит.
- Право «Просмотр» на общую команду. Откройте роль, найдите в дереве прав
Общие команды → ПроверитьОстаткии поставьте флажок «Просмотр». Для каждой роли, которой команда нужна. - Права на данные. Команда объекта видна, если у роли есть права на сам объект. Команда, меняющая документы, без права «Изменение» не поможет — пользователь получит ошибку нарушения прав при записи.
- Командный интерфейс подсистемы. В подсистеме нажмите «Командный интерфейс». Здесь задают порядок и видимость команд, в том числе по отдельным ролям.
Дополнительно команду можно привязать к функциональной опции (свойство «Функциональные опции»). Выключили опцию в настройках программы — команда скрылась у всех.
💡 Для проверки прав внутри кода используйте ПравоДоступа("Изменение", Метаданные.Документы.РеализацияТоваровУслуг). Это надёжнее проверки по имени роли через РольДоступна(): роли переименовывают, а права остаются.
| Что настроить | Где | Что даёт |
|---|---|---|
| Право «Просмотр» | Роль → Общие команды | Доступ к общей команде |
| Видимость по ролям | Командный интерфейс подсистемы | Прячет команду у части пользователей |
| Функциональная опция | Свойства команды | Включение и отключение для всей базы |
| Проверка в коде | Обработчик команды | Защита от запуска без прав на данные |
Команда без правки типовой конфигурации: расширение и дополнительная обработка
Через расширение конфигурации
Расширения появились в 8.3.6 и подходят для типовых баз на поддержке.
Конфигурация → Расширения конфигурации → Добавить.- В дереве расширения добавьте общую команду так же, как в основной конфигурации.
- Чтобы команда попала в раздел, заимствуйте подсистему: правой кнопкой по подсистеме основной конфигурации → «Добавить в расширение», затем включите в неё команду.
- Обновите расширение в базе и перезапустите сеанс.
Обновление типовой конфигурации расширение не ломает, если заимствованные объекты не удалили в новом релизе.
Через дополнительную обработку (БСП)
В типовых конфигурациях на БСП команды подключают без конфигуратора. Внешняя обработка описывает свои команды в модуле объекта:
Функция СведенияОВнешнейОбработке() Экспорт
Параметры = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
Параметры.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
Параметры.Версия = "1.0";
Параметры.БезопасныйРежим = Истина;
Команда = Параметры.Команды.Добавить();
Команда.Представление = "Проверить остатки";
Команда.Идентификатор = "ПроверитьОстатки";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Истина;
Возврат Параметры;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "ПроверитьОстатки" Тогда
// серверная логика команды
КонецЕсли;
КонецПроцедуры
Файл .epf загружают в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. В карточке обработки указывают размещение (раздел) и пользователей, которым команда доступна. Одна обработка может нести несколько команд — добавьте строки в таблицу Команды.
Безопасный режим отключайте только для обработок, код которых вы проверили сами. Обработка без безопасного режима получает доступ к файлам и внешним ресурсам сервера.
Журнал регистрации: кто и когда запускал команду
Платформа не пишет нажатие кнопки в журнал сама. Если нужен аудит, добавьте запись в серверную часть команды:
ЗаписьЖурналаРегистрации("Команды.ПроверитьОстатки",
УровеньЖурналаРегистрации.Информация,
Метаданные.Документы.РеализацияТоваровУслуг,
,
"Проверено документов: " + Формат(МассивДокументов.Количество(), "ЧГ=0"));
Имя события задавайте с префиксом — по нему удобно фильтровать. Пользователя, компьютер и время платформа добавит сама.
Где смотреть:
- 🖥️ в конфигураторе —
Администрирование → Журнал регистрации; - 📊 в типовых конфигурациях —
Администрирование → Обслуживание → Журнал регистрации, отбор по событиюКоманды.ПроверитьОстатки.
Для команд, которые массово меняют данные, пишите в журнал и количество обработанных объектов, и ошибки с уровнем Ошибка. Тогда разбор инцидента займёт минуты.
Почему созданная команда не появилась у пользователя
Частые вопросы
Можно ли создать команду в кластере серверов 1С?
Нужно ли снимать типовую конфигурацию с поддержки, чтобы добавить команду?
Как запустить команду по расписанию?
Как назначить команде сочетание клавиш?
F7, F8 и Ctrl+S.