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

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

Как в 1С добавить кнопку редактирования

Как добавить кнопку редактирования в форму 1С: через конфигуратор, команду формы и код. Разбор для обычных и управляемых форм, типовые ошибки и проверка результата.

Кнопка «Редактировать» в 1С — это элемент формы, связанный с командой, которая открывает объект на изменение или переводит форму в режим редактирования. В зависимости от задачи кнопку добавляют либо средствами конфигуратора без программирования, либо с созданием собственной команды и обработчика на встроенном языке. Правильный способ зависит от того, работаете вы с управляемой формой (такси-интерфейс большинства современных конфигураций) или с обычной формой старых решений.

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

Определите, какая именно кнопка редактирования нужна

Под «кнопкой редактирования» пользователи и разработчики обычно понимают три разные задачи. Первая — вернуть или вывести стандартную кнопку «Изменить» в форме списка, чтобы открывать элемент на редактирование мышью, а не клавишей F2. Вторая — добавить в форму документа или справочника собственную кнопку, которая переводит заблокированную форму в режим изменения. Третья — создать кнопку, открывающую связанный объект (например, редактирование контрагента прямо из документа).

От сценария зависит и объём работ: вывод стандартной команды занимает минуту и не требует кода, а собственная кнопка потребует создания команды формы и процедуры-обработчика. Определите сценарий до открытия конфигуратора — это избавит от лишних доработок.

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

Как выбрать действие

В форме списка нет кнопки изменения, но F2 работаетВыведите стандартную команду «Изменить» в командную панель через редактор формы
Нужна своя кнопка с особой логикой (проверки, открытие другого объекта)Создайте команду формы и напишите обработчик на встроенном языке
Форма открывается только для просмотраПроверьте, не установлено ли свойство ТолькоПросмотр у формы или параметра открытия

Вывод стандартной кнопки «Изменить» в форму списка

Откройте конфигуратор, найдите нужный объект (справочник, документ) в дереве конфигурации и раскройте ветку «Формы». Двойным щелчком откройте форму списка. В редакторе управляемой формы слева находится дерево элементов, справа вверху — вкладки «Элементы» и «Команды».

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

Проверьте результат в режиме «1С:Предприятие»: откройте список, выделите строку и нажмите новую кнопку — элемент должен открыться в режиме редактирования. Если кнопка видна, но неактивна, проверьте права пользователя на изменение объекта.

Порядок действий для стандартной кнопки
  1. 1
    Откройте конфигуратор и форму списка нужного объекта
  2. 2
    Перейдите на вкладку «Команды» и найдите стандартную команду «Изменить»
  3. 3
    Перетащите команду в командную панель дерева элементов
  4. 4
    Сохраните форму и обновите конфигурацию базы данных
  5. 5
    Проверьте работу кнопки в режиме «1С:Предприятие»

Создание собственной кнопки редактирования в управляемой форме

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

Пример обработчика, открывающего текущий объект списка на редактирование:

&НаКлиенте

Процедура РедактироватьКарточку(Команда)

ТекущиеДанные = Элементы.Список.ТекущиеДанные;

Если ТекущиеДанные = Неопределено Тогда

ПоказатьПредупреждение(, "Выберите строку для редактирования");

Возврат;

КонецЕсли;

ПоказатьЗначение(, ТекущиеДанные.Ссылка);

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

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

1c
&НаКлиенте
Процедура РедактироватьКарточку(Команда)
    ТекущиеДанные = Элементы.Список.ТекущиеДанные;
    Если ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    ПоказатьЗначение(, ТекущиеДанные.Ссылка);
КонецПроцедуры

Кнопка редактирования в обычной форме

В старых конфигурациях на обычных формах (режим обычного приложения) механика другая. Откройте форму в конфигураторе, на панели инструментов выберите «Кнопка» и разместите её на форме или в командной панели. В свойствах кнопки задайте имя и надпись «Редактировать», затем в событии «Нажатие» создайте обработчик.

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

Кнопка «Редактировать» для формы, открытой только на просмотр

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

Пример такого обработчика:

&НаКлиенте

Процедура ВключитьРедактирование(Команда)

ЭтаФорма.ТолькоПросмотр = Ложь;

Элементы.ФормаВключитьРедактирование.Доступность = Ложь;

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

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

Типовые ошибки и проверка результата

Самая частая проблема — кнопка создана, но при нажатии ничего не происходит. Обычно причина в том, что команде не назначен обработчик (свойство «Действие» пустое) или кнопка в дереве элементов не связана с командой: в свойствах кнопки поле «ИмяКоманды» должно ссылаться на созданную команду. Вторая типичная ошибка — обращение к элементу формы по неверному имени, из-за чего возникает ошибка «Поле объекта не обнаружено».

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

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

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

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

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

Видимость кнопки
Норма

Кнопка отображается в командной панели формы

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

Кнопки нет — проверьте видимость элемента и группу размещения

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

Открывается форма выбранного объекта

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

Ничего не происходит или ошибка — проверьте ИмяКоманды и обработчик

Работа под ограниченными правами
Норма

Кнопка недоступна или корректно сообщает о запрете

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

Кнопка позволяет открыть объект, который пользователю запрещён

Изменение типовых форм без снятия с поддержки

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

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

Сравнение вариантов доработки

Прямое изменение формы в конфигураторе

Быстро и гибко, но снимает объект с полной поддержки и усложняет обновления

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

Сохраняет поддержку и обновляемость; требует аккуратности при изменении типовой формы поставщиком

Дополнительные команды через БСП

Без изменения конфигурации вообще, но кнопка попадает в меню «Ещё», а не в командную панель

Часто задаваемые вопросы

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

Частично да. В конфигурациях на базе Библиотеки стандартных подсистем есть механизм дополнительных команд через внешние обработки — они добавляются пользователем с правами администратора прямо в режиме «1С:Предприятие» и появляются в меню «Ещё». Полноценную кнопку в командную панель формы без конфигуратора или расширения добавить нельзя.

Почему кнопка «Изменить» есть, но неактивна?

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

Как сделать, чтобы кнопка открывала объект в новом окне, а не в текущем?

Используйте метод ОткрытьЗначение или ПоказатьЗначение со ссылкой на объект — платформа сама откроет форму в отдельном окне. Если форма открывается внутри текущей, проверьте, не задано ли у формы свойство блокирования окна владельца в параметрах открытия.

Чем отличается команда формы от команды объекта?

Команда объекта (например, команда справочника) доступна глобально — в панелях интерфейса и во всех формах, где объект используется. Команда формы существует только внутри конкретной формы и доступна только её кнопкам. Для кнопки редактирования внутри одной формы достаточно команды формы.

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

Проверьте три момента: обновлена ли конфигурация базы данных после изменений, подключено ли расширение в базе пользователей (расширения могут быть отключены флагом «Использовать») и не скрыта ли кнопка настройкой видимости командной панели у конкретного пользователя через «Изменить форму».