Почему реквизиты объекта недоступны для редактирования в обычном приложении 1С?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Анализ механизма работы автогенерируемых форм

Для понимания сути проблемы выясним, как платформа 1С:Предприятие обрабатывает запуск форм в гибридном режиме:

  1. Ограничение автоматической генерации: Опция использования управляемых форм в обычном приложении разрешает отображение только тех управляемых форм, которые были явно созданы в дереве метаданных. Платформа в режиме обычного приложения не выполняет динамическую генерацию управляемого интерфейса на лету.
  2. Специфика стандартных диалогов толстого клиента: Если у объекта метаданных нет собственной назначенной формы, система в обычном приложении пытается автоматически сформировать стандартную обычную форму. Однако в конфигурациях, ориентированных на управляемый интерфейс или работающих в определенных режимах совместимости, у таких автогенерируемых форм нарушается инициализация контекста редактирования, из-за чего элементы управления блокируются или получают свойство ТолькоПросмотр = Истина.
  3. Влияние функциональных опций: Если доступность полей привязана к функциональным опциям конфигурации, стандартные формы обычного приложения не могут правильно применить эти зависимости без явного кода или структуры управляемой формы.

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

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

  1. Откроем дерево метаданных в конфигураторе и перейдем к проблемному объекту (например, к справочнику или документу).
  2. В ветке Формы нажмем кнопку добавления новой формы.
  3. В мастере создания формы выберем тип Управляемая форма и назначим её в качестве основной формы объекта (или формы элемента).
  4. Разместим необходимые реквизиты на форме и сохраним изменения.

После создания формы платформа в обычном приложении откроет именно её, и все элементы управления будут доступны для полноценного редактирования.

Способ 2. Настройка параметров редактирования в конфигураторе

Для удобного управления формами для обоих режимов запуска настроим конфигуратор. Выполним следующие действия:

  1. В главном меню конфигуратора перейдем в Сервис → Параметры.
  2. На закладке Общие найдем раздел Редактирование конфигурации для режимов запуска.
  3. Установим переключатель в положение Управляемое приложение и обычное приложение.
  4. В свойствах каждого объекта метаданных на вкладке Формы появится возможность раздельно назначать основные формы для управляемого и обычного режимов.

Способ 3. Программное открытие управляемой формы

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


ПараметрыОткрытия = Новый Структура("Ключ", СсылкаНаОбъект);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыОткрытия);

Такой вызов гарантирует, что толстый клиент откроет нужную управляемую форму с полной передачей контекста объекта.

Способ 4. Создание обычной формы для толстого клиента

Если в системе предполагается преимущественная работа пользователей в толстом клиенте обычного приложения, альтернативным решением будет создание классической обычной формы:

  1. В мастере создания формы объекта выберем переключатель Обычная форма.
  2. Сгенерируем элементы диалога с помощью конструктора.
  3. Назначим созданную форму в качестве основной формы для обычного приложения.

Таким образом, явное создание формы (управляемой или обычной) полностью устраняет проблему блокировки реквизитов и обеспечивает корректную работу пользователей в любых режимах запуска платформы.

← На главную