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