При совмещении функционала управляемого и обычного интерфейсов разработчики часто сталкиваются с ситуацией, когда флаг Использовать управляемые формы в обычном приложении в свойствах конфигурации установлен, однако при попытке открыть объект метаданных в толстом клиенте все его реквизиты оказываются заблокированными для изменения (форма открывается только на просмотр). Разберем причины такого поведения платформы и рассмотрим способы корректной настройки форм для редактирования данных.
Анализ механизма работы автогенерируемых форм
Для понимания сути проблемы выясним, как платформа 1С:Предприятие обрабатывает запуск форм в гибридном режиме:
Ограничение автоматической генерации: Опция использования управляемых форм в обычном приложении разрешает отображение только тех управляемых форм, которые были явно созданы в дереве метаданных. Платформа в режиме обычного приложения не выполняет динамическую генерацию управляемого интерфейса на лету.
Специфика стандартных диалогов толстого клиента: Если у объекта метаданных нет собственной назначенной формы, система в обычном приложении пытается автоматически сформировать стандартную обычную форму. Однако в конфигурациях, ориентированных на управляемый интерфейс или работающих в определенных режимах совместимости, у таких автогенерируемых форм нарушается инициализация контекста редактирования, из-за чего элементы управления блокируются или получают свойство ТолькоПросмотр = Истина.
Влияние функциональных опций: Если доступность полей привязана к функциональным опциям конфигурации, стандартные формы обычного приложения не могут правильно применить эти зависимости без явного кода или структуры управляемой формы.
Способ 1. Явное создание управляемой формы объекта
Самым простым и правильным решением является явное создание управляемой формы в дереве метаданных конфигурации. Разберем по шагам, как это сделать:
Откроем дерево метаданных в конфигураторе и перейдем к проблемному объекту (например, к справочнику или документу).
В ветке Формы нажмем кнопку добавления новой формы.
В мастере создания формы выберем тип Управляемая форма и назначим её в качестве основной формы объекта (или формы элемента).
Разместим необходимые реквизиты на форме и сохраним изменения.
После создания формы платформа в обычном приложении откроет именно её, и все элементы управления будут доступны для полноценного редактирования.
Способ 2. Настройка параметров редактирования в конфигураторе
Для удобного управления формами для обоих режимов запуска настроим конфигуратор. Выполним следующие действия:
В главном меню конфигуратора перейдем в Сервис → Параметры.
На закладке Общие найдем раздел Редактирование конфигурации для режимов запуска.
Установим переключатель в положение Управляемое приложение и обычное приложение.
В свойствах каждого объекта метаданных на вкладке Формы появится возможность раздельно назначать основные формы для управляемого и обычного режимов.
Способ 3. Программное открытие управляемой формы
Если открытие формы выполняется программно из кода обычного приложения, важно явно указывать имя созданной управляемой формы и передавать ссылку на редактируемый объект. Рассмотрим пример кода:
ПараметрыОткрытия = Новый Структура("Ключ", СсылкаНаОбъект);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыОткрытия);
Такой вызов гарантирует, что толстый клиент откроет нужную управляемую форму с полной передачей контекста объекта.
Способ 4. Создание обычной формы для толстого клиента
Если в системе предполагается преимущественная работа пользователей в толстом клиенте обычного приложения, альтернативным решением будет создание классической обычной формы:
В мастере создания формы объекта выберем переключатель Обычная форма.
Сгенерируем элементы диалога с помощью конструктора.
Назначим созданную форму в качестве основной формы для обычного приложения.
Таким образом, явное создание формы (управляемой или обычной) полностью устраняет проблему блокировки реквизитов и обеспечивает корректную работу пользователей в любых режимах запуска платформы.