К статье
Практический материал

Разработка и Конфигурация · 13 мин

Как добавить кнопку на обычную форму в 1С

Подробная инструкция: как добавить кнопку на обычную форму 1С 8.3 через конфигуратор, назначить обработчик нажатия и проверить результат. Типичные ошибки и FAQ.

Обычные формы используются в конфигурациях 1С, работающих в режиме обычного приложения (платформа 8.2 и 8.3), а также в старых типовых решениях вроде «Управление торговлей 10.3» или «Бухгалтерии 1.6/2.0». Добавление кнопки на такую форму — стандартная задача доработки: например, нужно вывести команду печати, запуск обработки или быстрый переход к связанному документу.

Работа выполняется в конфигураторе через редактор формы: вы размещаете элемент «Кнопка» на форме или добавляете команду в командную панель, а затем привязываете к ней процедуру-обработчик в модуле формы. Весь процесс занимает несколько минут, если понимать структуру обычной формы и не путать её с управляемой.

Важно сразу определить, с каким типом формы вы работаете, потому что механизмы различаются принципиально. В обычной форме элементы размещаются визуально, с привязкой к координатам и размерам, а обработчики создаются через диалог свойств. В управляемой форме кнопка добавляется через команду формы — это другая инструкция.

Как убедиться, что форма обычная, а не управляемая

Перед началом работы откройте конфигуратор и найдите нужный объект (документ, справочник, обработку) в дереве конфигурации. Раскройте ветку «Формы» объекта. Если форма обычная, при двойном щелчке откроется визуальный редактор с готовым «рисунком» формы — полями, надписями и табличными частями, расположенными так, как их видит пользователь.

Управляемая форма выглядит иначе: вместо визуального макета вы увидите дерево элементов в левой части окна и список реквизитов. Если у объекта вообще нет форм и используются «формы по умолчанию», проверьте свойства конфигурации: параметр «Режим использования модальности» и «Основной режим запуска» подскажут, в каком режиме работает приложение. Обычное приложение — признак обычных форм.

Ещё один надёжный признак — запуск предприятия. Если интерфейс выглядит «классически», с меню сверху и отдельными окнами, как в старых версиях 1С, — это обычное приложение. Интерфейс «Такси» или управляемый интерфейс с панелями разделов означает управляемые формы, и инструкция ниже для них не подходит.

Где разместить кнопку: на форме или в командной панели

В обычной форме есть два типичных места для кнопки. Первый вариант — отдельная кнопка прямо на форме, рядом с полями ввода. Так делают, когда действие относится к конкретному полю или реквизиту: например, «Заполнить» возле табличной части или «Подобрать» возле поля контрагента.

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

Сравнение вариантов размещения

Кнопка на форме

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

Кнопка в командной панели формы

Подходит для действий над объектом целиком. Не загромождает рабочую область, логично смотрится рядом со стандартными командами.

Кнопка в командной панели табличной части

Подходит для операций со строками таблицы: подбор, заполнение, пересчёт. Видна только когда видна сама табличная часть.

Добавление кнопки на форму через редактор

Откройте форму в конфигураторе двойным щелчком по её имени в ветке «Формы». Убедитесь, что видна панель элементов управления: если её нет, включите через меню «Вид» → «Панель элементов управления» (в некоторых версиях — «Элементы управления»). На этой панели находятся все доступные элементы: поле ввода, надпись, кнопка, флажок и другие.

Нажмите на панели пиктограмму «Кнопка», затем щёлкните в том месте формы, где кнопка должна располагаться. Элемент появится на форме, и конфигуратор автоматически откроет диалог его свойств. Если диалог не открылся, выделите кнопку и нажмите правую кнопку мыши → «Свойства».

В свойствах задайте два ключевых параметра. «Имя» — программный идентификатор, по которому к кнопке обращаются из кода, например КнопкаПечатьАкта. Используйте осмысленные имена без пробелов и кириллицы в служебных целях допустима, но латиница надёжнее для совместимости. «Заголовок» (или «Текст») — надпись, которую увидит пользователь, например «Печать акта».

Порядок добавления кнопки на форму
  1. 1
    Откройте форму объекта в конфигураторе двойным щелчком
  2. 2
    Включите панель элементов управления через меню «Вид», если она скрыта
  3. 3
    Выберите элемент «Кнопка» и щёлкните по нужному месту формы
  4. 4
    В свойствах задайте имя (например, КнопкаЗаполнить) и заголовок (например, «Заполнить»)
  5. 5
    В свойстве «Действие» нажмите кнопку с лупой — конфигуратор создаст процедуру-обработчик в модуле формы
  6. 6
    Впишите нужный код в тело процедуры
  7. 7
    Сохраните форму и обновите конфигурацию базы данных (F7)
  8. 8
    Запустите 1С:Предприятие и проверьте работу кнопки

Добавление кнопки в командную панель

Если кнопка должна находиться в командной панели, технология немного другая. Выделите командную панель на форме (щелчком по ней), затем правой кнопкой мыши откройте контекстное меню и выберите «Добавить» → «Кнопка». В старых версиях платформы доступен пункт «Конструктор командной панели», который показывает список кнопок и позволяет добавлять новые.

Новая кнопка появится в конце списка. Порядок можно менять перетаскиванием или кнопками перемещения в конструкторе. У кнопки командной панели так же заполняются имя, заголовок и действие. Дополнительно можно назначить картинку (свойство «Картинка»), сочетание клавиш (свойство «СочетаниеКлавиш») и подсказку — это улучшает удобство, особенно если кнопок много.

Полезная возможность командной панели — подменю. Через контекстное меню можно добавить кнопку типа «Подменю» и поместить внутрь неё несколько действий. Так группируют редко используемые команды, например несколько вариантов печати или выгрузки, не растягивая панель.

Создание обработчика нажатия

Кнопка без обработчика ничего не делает. В диалоге свойств найдите событие «Действие» (у кнопки формы) или «Нажатие» — в зависимости от версии платформы название отличается. Нажмите кнопку с лупой справа от поля: конфигуратор создаст в модуле формы процедуру с именем вида КнопкаЗаполнитьНажатие(Элемент) и сразу откроет модуль на этой процедуре.

Внутри процедуры пишется код на встроенном языке. Например, для открытия внешней обработки:

Процедура КнопкаЗаполнитьНажатие(Элемент)

Обработка = ВнешниеОбработки.ПолучитьФорму("C:\Обработки\Заполнение.epf");

Обработка.Открыть();

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

Для действий с данными текущего объекта используйте реквизиты формы и объект: например, ЭтотОбъект.Записать() в форме документа или обращение к табличной части через её имя. Если процедура создана, а потом кнопку переименовали, связь не сломается — обработчик привязан через свойство, но имя процедуры останется старым, что может запутать при сопровождении. Лучше переименовать процедуру и обновить ссылку в свойстве «Действие».

Обновление конфигурации и проверка результата

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

Запустите режим предприятия (можно прямо из конфигуратора, «Сервис» → «1С:Предприятие» или Ctrl+F5), откройте нужный объект и проверьте: кнопка видна, заголовок читается, нажатие выполняет задуманное действие, при повторном нажатии нет ошибок. Проверьте также поведение при незаполненных обязательных данных — если обработчик обращается к реквизитам, которые могут быть пустыми, добавьте проверки в код.

Контрольные точки

Как проверить результат

Отображение кнопки
Норма

Кнопка видна на форме или в командной панели с заданным заголовком

Тревожный признак

Кнопки нет — форма не сохранена, конфигурация БД не обновлена или открыта другая форма объекта

Реакция на нажатие
Норма

Выполняется заданное действие, ошибок в журнале нет

Тревожный признак

Ничего не происходит (пустое «Действие») или появляется сообщение об ошибке

Права пользователей
Норма

Кнопка доступна всем, кому нужна

Тревожный признак

У части пользователей форма открывается в старом виде — проверьте роли и права на объект

Типичные ошибки и ограничения

Частая ошибка — редактирование не той формы. У документа может быть несколько форм (ФормаДокумента, ФормаСписка, ФормаВыбора), и кнопка, добавленная в форму списка, не появится в форме документа. Проверьте, какая форма назначена основной в свойствах объекта, и открывайте именно её.

Вторая типичная ситуация — конфигурация на поддержке без возможности изменения. Если замок у объекта закрыт (режим «на поддержке, изменения запрещены»), конфигуратор не даст сохранить форму. Нужно снять объект с поддержки или включить режим «с сохранением поддержки» через «Конфигурация» → «Поддержка» → «Настройка поддержки». Учтите: это усложнит будущие обновления типовой конфигурации — при обновлении доработанную форму придётся сопоставлять вручную.

Типичные ошибки
01
Кнопка добавлена, но свойство «Действие» не заполнено — нажатие ничего не делает
02
Изменения сохранены в конфигураторе, но конфигурация базы данных не обновлена — пользователи не видят кнопку
03
Кнопку добавили не в ту форму объекта (форму списка вместо формы документа)
04
Обработчик обращается к реквизитам без проверки заполнения — ошибка при пустых данных
05
Доработка типовой формы без учёта обновлений — при обновлении конфигурации изменения теряются или конфликтуют

Альтернативы: программное добавление и внешние обработки

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

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

Маршрут решения

Как выбрать подход

Конфигурация снята с поддержки или доработки разрешеныДобавляйте кнопку напрямую в форму через конфигуратор — это самый прозрачный способ
Конфигурация типовая на полной поддержке, менять её нельзяИспользуйте внешнюю печатную форму или обработку заполнения табличных частей
Кнопка нужна только части пользователей или в особых условияхСоздавайте кнопку программно в обработчике ПередОткрытием с проверкой условий
Действие разовое и не требует постоянной кнопкиОграничьтесь внешней обработкой без изменения формы

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

Можно ли добавить кнопку на форму без конфигуратора, прямо в режиме предприятия?

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

Почему после обновления конфигурации моя кнопка пропала?

При обновлении типовой конфигурации поставщик мог изменить ту же форму. Если при сравнении/объединении форму не сопоставили вручную, типовая версия заменила доработанную. Восстановите кнопку из резервной копии формы и при следующих обновлениях отслеживайте этот объект в окне сопоставления.

Как сделать кнопку недоступной (серой) по условию?

Используйте свойство «Доступность» элемента формы. В коде формы, например в обработчике «ПриОткрытии» или «ПриИзменении» нужного реквизита, установите ЭлементыФормы.КнопкаЗаполнить.Доступность = Ложь;. Аналогично работает свойство «Видимость», если кнопку нужно полностью скрыть.

Чем отличается кнопка на форме от кнопки командной панели технически?

Это разные типы элементов управления: «Кнопка» — самостоятельный элемент с координатами на форме, а кнопка командной панели — элемент коллекции кнопок панели, её положение определяется порядком в списке, а не координатами. Обработчики создаются одинаково, через свойство действия, но программное обращение различается: к кнопке формы — через ЭлементыФормы, к кнопке панели — через коллекцию Кнопки командной панели.

Можно ли назначить кнопке горячие клавиши?

Да, у кнопок командной панели есть свойство «СочетаниеКлавиш», где выбирается комбинация из предложенного списка (например, Ctrl+Shift+буква). У отдельной кнопки на форме такого свойства нет — для неё горячие клавиши настраивают через кнопку «по умолчанию» (свойство «КнопкаПоУмолчанию» для Enter) или программно.

Кнопка работает у администратора, но не у обычного пользователя. В чём причина?

Скорее всего, обработчик кнопки обращается к объектам, на которые у пользователя нет прав: чтение регистра, запись документа, запуск обработки. Проверьте текст ошибки у пользователя и настройте роли. Сама кнопка права не проверяет — ограничения срабатывают внутри кода обработчика.

Итог

Что важно запомнить

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