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