В процессе разработки или эксплуатации управляемого приложения 1С пользователи и разработчики часто сталкиваются с ситуацией, когда стандартная команда Изменить форму, присутствующая в конфигураторе, внезапно исчезает в режиме «Предприятие». Это ограничивает возможности кастомизации интерфейса под конкретные задачи. Разберем детально, почему это происходит и как восстановить доступ к этой важной функции. В качестве альтернативы штатному механизму можно использовать внешний редактор форм для режима предприятия.
Первое, что нам необходимо сделать, — это проанализировать структуру самой формы. В управляемых формах 1С существует иерархия элементов, и у каждого крупного элемента может быть своя командная панель. Рассмотрим ситуацию, когда на форме расположен Динамический список (например, список справочника или документов).
Важно понимать, что в этом случае на экране может отображаться две кнопки Еще:
Команда Изменить форму по умолчанию относится к объекту Форма. Если мы ищем ее в меню «Еще», которое принадлежит таблице (списку), мы ее там не найдем. Проанализируем настройки командной панели списка: если в ее свойствах не выведена команда изменения всей формы, пользователю придется обращаться к верхней панели. Убедимся, что мы проверяем именно ту панель, которая нам нужна.
Перейдем к техническим настройкам в конфигураторе. Самая очевидная причина отсутствия команды — установленный запрет на уровне свойств самой формы. Выполним следующие шаги:
Разрешить изменять форму.Если эта галочка снята, платформа принудительно скрывает команду Изменить форму для всех пользователей, независимо от их прав. Установим этот флаг, если он был выключен.
Часто корень проблемы кроется не в настройках интерфейса, а в системе безопасности (ролях). Для того чтобы команда Изменить форму была доступна, у пользователя должно быть специфическое право на уровне метаданных всей конфигурации. Выясним причину через проверку ролей:
Платформа 1С скрывает возможность изменения формы, если пользователь не имеет права на Сохранение настроек пользователя (Save user settings). Это логично: если система не может сохранить измененную структуру формы в системное хранилище настроек, то и давать пользователю менять ее «на один раз» нет смысла.
Проанализируем роли пользователя:
Сохранение настроек пользователя.Если права в порядке и свойство формы установлено, рассмотрим настройки командной панели. У любого элемента типа Командная панель есть свойство Автозаполнение. Разберем ситуацию подробнее:
Если флаг Автозаполнение снят, разработчик берет на себя ответственность за ручное наполнение панели командами. В этом случае стандартные команды, такие как Печать, Создать на основании или Изменить форму, не появятся сами по себе. Посмотрим, как добавить их вручную:
Форма.Изменить форму в дерево элементов на нужную нам командную панель.Также стоит проверить свойство Состав команд. В окне свойств командной панели нажмите на ссылку «Открыть» рядом с пунктом Состав команд. Здесь можно точечно включить или выключить видимость стандартных кнопок для текущей панели. Убедимся, что напротив нужной команды стоит галочка Видимость.
Иногда настройки конфигуратора перекрываются программным кодом. Проанализируем процедуру ПриСозданииНаСервере в модуле формы. Разработчики могут использовать код для динамической очистки интерфейса. Рассмотрим пример кода, который может скрывать элементы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Поиск и скрытие кнопок командной панели
Для Каждого ЭлементПанели Из ЭтаФорма.КоманднаяПанель.ПодчиненныеЭлементы Цикл
Если ЭлементПанели.Имя = "ФормаИзменитьФорму" Тогда
ЭлементПанели.Видимость = Ложь;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Если в коде присутствует подобная логика или используется метод УстановитьОтображениеЭлементаКоманднойПанели, то ручные настройки в конфигураторе не помогут. Необходимо закомментировать или изменить условия выполнения данного кода.
В современных конфигурациях широко используются Функциональные опции. Если определенная функциональность отключена в константах или настройках программы, платформа может автоматически скрывать связанные реквизиты. В редких случаях, если форма становится «пустой» или жестко ограниченной функциональной опцией, доступ к ее изменению может блокироваться на уровне ядра платформы.
Также не стоит забывать о различии между командами Изменить форму и Настроить список. Для динамических списков (таблиц) основной командой является именно настройка списка (фильтры, группировки). Если вам нужно именно менять состав колонок, убедитесь, что вы не пытаетесь найти функционал Настройки списка внутри меню Изменить форму, и наоборот.
Если все вышеперечисленные методы не помогли, проанализируем ситуацию с точки зрения стабильности данных пользователя. Иногда «залипшие» настройки интерфейса в кэше мешают корректному отображению кнопок. Рекомендуется выполнить следующие действия:
Это сбросит форму к «заводскому» виду, определенному в конфигураторе, и восстановит все стандартные команды, если они предусмотрены разработчиком. При необходимости можно воспользоваться инструментом для просмотра и очистки хранилища настроек пользователя.