Разработка и Конфигурация · 13 мин
Как добавить кнопку на обычную форму в 1С
Подробная инструкция: как добавить кнопку на обычную форму 1С 8.3 через конфигуратор, назначить обработчик нажатия и проверить результат. Типичные ошибки и FAQ.
Обычные формы используются в конфигурациях 1С, работающих в режиме обычного приложения (платформа 8.2 и 8.3), а также в старых типовых решениях вроде «Управление торговлей 10.3» или «Бухгалтерии 1.6/2.0». Добавление кнопки на такую форму — стандартная задача доработки: например, нужно вывести команду печати, запуск обработки или быстрый переход к связанному документу.
Работа выполняется в конфигураторе через редактор формы: вы размещаете элемент «Кнопка» на форме или добавляете команду в командную панель, а затем привязываете к ней процедуру-обработчик в модуле формы. Весь процесс занимает несколько минут, если понимать структуру обычной формы и не путать её с управляемой.
Важно сразу определить, с каким типом формы вы работаете, потому что механизмы различаются принципиально. В обычной форме элементы размещаются визуально, с привязкой к координатам и размерам, а обработчики создаются через диалог свойств. В управляемой форме кнопка добавляется через команду формы — это другая инструкция.
Как убедиться, что форма обычная, а не управляемая
Перед началом работы откройте конфигуратор и найдите нужный объект (документ, справочник, обработку) в дереве конфигурации. Раскройте ветку «Формы» объекта. Если форма обычная, при двойном щелчке откроется визуальный редактор с готовым «рисунком» формы — полями, надписями и табличными частями, расположенными так, как их видит пользователь.
Управляемая форма выглядит иначе: вместо визуального макета вы увидите дерево элементов в левой части окна и список реквизитов. Если у объекта вообще нет форм и используются «формы по умолчанию», проверьте свойства конфигурации: параметр «Режим использования модальности» и «Основной режим запуска» подскажут, в каком режиме работает приложение. Обычное приложение — признак обычных форм.
Ещё один надёжный признак — запуск предприятия. Если интерфейс выглядит «классически», с меню сверху и отдельными окнами, как в старых версиях 1С, — это обычное приложение. Интерфейс «Такси» или управляемый интерфейс с панелями разделов означает управляемые формы, и инструкция ниже для них не подходит.
Где разместить кнопку: на форме или в командной панели
В обычной форме есть два типичных места для кнопки. Первый вариант — отдельная кнопка прямо на форме, рядом с полями ввода. Так делают, когда действие относится к конкретному полю или реквизиту: например, «Заполнить» возле табличной части или «Подобрать» возле поля контрагента.
Второй вариант — кнопка в командной панели формы. Командная панель обычно расположена сверху или снизу формы и содержит стандартные действия: «Записать», «Провести», «Печать». Добавление сюда уместно для действий над объектом целиком: выгрузка, обмен, запуск связанной обработки. Табличные части имеют собственные командные панели — кнопки туда относятся к строкам таблицы.
Сравнение вариантов размещения
Подходит для действия, привязанного к конкретному полю или области. Ограничение: занимает место на форме, при большом количестве кнопок форма перегружается.
Подходит для действий над объектом целиком. Не загромождает рабочую область, логично смотрится рядом со стандартными командами.
Подходит для операций со строками таблицы: подбор, заполнение, пересчёт. Видна только когда видна сама табличная часть.
Добавление кнопки на форму через редактор
Откройте форму в конфигураторе двойным щелчком по её имени в ветке «Формы». Убедитесь, что видна панель элементов управления: если её нет, включите через меню «Вид» → «Панель элементов управления» (в некоторых версиях — «Элементы управления»). На этой панели находятся все доступные элементы: поле ввода, надпись, кнопка, флажок и другие.
Нажмите на панели пиктограмму «Кнопка», затем щёлкните в том месте формы, где кнопка должна располагаться. Элемент появится на форме, и конфигуратор автоматически откроет диалог его свойств. Если диалог не открылся, выделите кнопку и нажмите правую кнопку мыши → «Свойства».
В свойствах задайте два ключевых параметра. «Имя» — программный идентификатор, по которому к кнопке обращаются из кода, например КнопкаПечатьАкта. Используйте осмысленные имена без пробелов и кириллицы в служебных целях допустима, но латиница надёжнее для совместимости. «Заголовок» (или «Текст») — надпись, которую увидит пользователь, например «Печать акта».
- 1Откройте форму объекта в конфигураторе двойным щелчком
- 2Включите панель элементов управления через меню «Вид», если она скрыта
- 3Выберите элемент «Кнопка» и щёлкните по нужному месту формы
- 4В свойствах задайте имя (например, КнопкаЗаполнить) и заголовок (например, «Заполнить»)
- 5В свойстве «Действие» нажмите кнопку с лупой — конфигуратор создаст процедуру-обработчик в модуле формы
- 6Впишите нужный код в тело процедуры
- 7Сохраните форму и обновите конфигурацию базы данных (F7)
- 8Запустите 1С:Предприятие и проверьте работу кнопки
Добавление кнопки в командную панель
Если кнопка должна находиться в командной панели, технология немного другая. Выделите командную панель на форме (щелчком по ней), затем правой кнопкой мыши откройте контекстное меню и выберите «Добавить» → «Кнопка». В старых версиях платформы доступен пункт «Конструктор командной панели», который показывает список кнопок и позволяет добавлять новые.
Новая кнопка появится в конце списка. Порядок можно менять перетаскиванием или кнопками перемещения в конструкторе. У кнопки командной панели так же заполняются имя, заголовок и действие. Дополнительно можно назначить картинку (свойство «Картинка»), сочетание клавиш (свойство «СочетаниеКлавиш») и подсказку — это улучшает удобство, особенно если кнопок много.
Полезная возможность командной панели — подменю. Через контекстное меню можно добавить кнопку типа «Подменю» и поместить внутрь неё несколько действий. Так группируют редко используемые команды, например несколько вариантов печати или выгрузки, не растягивая панель.
Создание обработчика нажатия
Кнопка без обработчика ничего не делает. В диалоге свойств найдите событие «Действие» (у кнопки формы) или «Нажатие» — в зависимости от версии платформы название отличается. Нажмите кнопку с лупой справа от поля: конфигуратор создаст в модуле формы процедуру с именем вида КнопкаЗаполнитьНажатие(Элемент) и сразу откроет модуль на этой процедуре.
Внутри процедуры пишется код на встроенном языке. Например, для открытия внешней обработки:
Процедура КнопкаЗаполнитьНажатие(Элемент)
Обработка = ВнешниеОбработки.ПолучитьФорму("C:\Обработки\Заполнение.epf");
Обработка.Открыть();
КонецПроцедуры
Для действий с данными текущего объекта используйте реквизиты формы и объект: например, ЭтотОбъект.Записать() в форме документа или обращение к табличной части через её имя. Если процедура создана, а потом кнопку переименовали, связь не сломается — обработчик привязан через свойство, но имя процедуры останется старым, что может запутать при сопровождении. Лучше переименовать процедуру и обновить ссылку в свойстве «Действие».
Обновление конфигурации и проверка результата
После сохранения формы изменения существуют только в конфигураторе. Чтобы пользователи их увидели, обновите конфигурацию базы данных: меню «Конфигурация» → «Обновить конфигурацию базы данных» или клавиша F7. Добавление кнопки — нересурсоёмкое изменение, реструктуризация данных не требуется, обновление проходит быстро.
Запустите режим предприятия (можно прямо из конфигуратора, «Сервис» → «1С:Предприятие» или Ctrl+F5), откройте нужный объект и проверьте: кнопка видна, заголовок читается, нажатие выполняет задуманное действие, при повторном нажатии нет ошибок. Проверьте также поведение при незаполненных обязательных данных — если обработчик обращается к реквизитам, которые могут быть пустыми, добавьте проверки в код.
Как проверить результат
Кнопка видна на форме или в командной панели с заданным заголовком
Кнопки нет — форма не сохранена, конфигурация БД не обновлена или открыта другая форма объекта
Выполняется заданное действие, ошибок в журнале нет
Ничего не происходит (пустое «Действие») или появляется сообщение об ошибке
Кнопка доступна всем, кому нужна
У части пользователей форма открывается в старом виде — проверьте роли и права на объект
Типичные ошибки и ограничения
Частая ошибка — редактирование не той формы. У документа может быть несколько форм (ФормаДокумента, ФормаСписка, ФормаВыбора), и кнопка, добавленная в форму списка, не появится в форме документа. Проверьте, какая форма назначена основной в свойствах объекта, и открывайте именно её.
Вторая типичная ситуация — конфигурация на поддержке без возможности изменения. Если замок у объекта закрыт (режим «на поддержке, изменения запрещены»), конфигуратор не даст сохранить форму. Нужно снять объект с поддержки или включить режим «с сохранением поддержки» через «Конфигурация» → «Поддержка» → «Настройка поддержки». Учтите: это усложнит будущие обновления типовой конфигурации — при обновлении доработанную форму придётся сопоставлять вручную.
Альтернативы: программное добавление и внешние обработки
В обычных формах кнопку можно создать программно — в обработчике «ПриОткрытии» или «ПередОткрытием» формы. Элементы формы доступны через коллекцию ЭлементыФормы, а кнопки командной панели — через ЭлементыФормы.КоманднаяПанель.Кнопки.Добавить(). Такой подход применяют, когда кнопка нужна не всегда: например, только для определённого вида документа или роли пользователя.
Если дорабатывать конфигурацию нельзя (запрещено политикой поддержки или договором сопровождения), рассмотрите альтернативы. Внешняя печатная форма или обработка заполнения подключается без изменения конфигурации и добавляет кнопку в стандартные меню «Печать» и «Заполнить». Для разовых операций достаточно внешней обработки, открываемой через «Файл» → «Открыть».
Как выбрать подход
Частые вопросы
Можно ли добавить кнопку на форму без конфигуратора, прямо в режиме предприятия?
Нет. Обычные формы изменяются только в конфигураторе. В режиме предприятия пользователь может лишь настроить видимость некоторых элементов в отдельных типовых решениях, но добавить новую кнопку с обработчиком невозможно. Без доступа к конфигуратору используйте внешние обработки.
Почему после обновления конфигурации моя кнопка пропала?
При обновлении типовой конфигурации поставщик мог изменить ту же форму. Если при сравнении/объединении форму не сопоставили вручную, типовая версия заменила доработанную. Восстановите кнопку из резервной копии формы и при следующих обновлениях отслеживайте этот объект в окне сопоставления.
Как сделать кнопку недоступной (серой) по условию?
Используйте свойство «Доступность» элемента формы. В коде формы, например в обработчике «ПриОткрытии» или «ПриИзменении» нужного реквизита, установите ЭлементыФормы.КнопкаЗаполнить.Доступность = Ложь;. Аналогично работает свойство «Видимость», если кнопку нужно полностью скрыть.
Чем отличается кнопка на форме от кнопки командной панели технически?
Это разные типы элементов управления: «Кнопка» — самостоятельный элемент с координатами на форме, а кнопка командной панели — элемент коллекции кнопок панели, её положение определяется порядком в списке, а не координатами. Обработчики создаются одинаково, через свойство действия, но программное обращение различается: к кнопке формы — через ЭлементыФормы, к кнопке панели — через коллекцию Кнопки командной панели.
Можно ли назначить кнопке горячие клавиши?
Да, у кнопок командной панели есть свойство «СочетаниеКлавиш», где выбирается комбинация из предложенного списка (например, Ctrl+Shift+буква). У отдельной кнопки на форме такого свойства нет — для неё горячие клавиши настраивают через кнопку «по умолчанию» (свойство «КнопкаПоУмолчанию» для Enter) или программно.
Кнопка работает у администратора, но не у обычного пользователя. В чём причина?
Скорее всего, обработчик кнопки обращается к объектам, на которые у пользователя нет прав: чтение регистра, запись документа, запуск обработки. Проверьте текст ошибки у пользователя и настройте роли. Сама кнопка права не проверяет — ограничения срабатывают внутри кода обработчика.
Что важно запомнить
Кнопка на обычную форму добавляется в конфигураторе: элемент «Кнопка» размещается на форме или в командной панели, затем через свойство «Действие» создаётся процедура-обработчик в модуле формы. После сохранения обязательно обновите конфигурацию базы данных и проверьте работу под реальным пользователем. Для типовых конфигураций на поддержке предпочтительнее внешние обработки и печатные формы.