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