К статье
Практический материал

Разработка и Конфигурация · 12 мин

Когда появились управляемые формы в 1С и что это изменило

Управляемые формы появились в 1С:Предприятии 8.2. Разбираем, когда это произошло, чем они отличаются от обычных форм и как выбрать режим для конфигурации.

Управляемые формы появились вместе с выходом технологической платформы «1С:Предприятие 8.2». Именно версия 8.2 принесла новую архитектуру интерфейса: управляемое приложение, тонкий клиент и веб-клиент, для которых обычные формы не подходили. До этого разработчики работали только с тем, что позже получило название «обычные формы», — они строились и выполнялись целиком на клиенте.

Переход на управляемые формы был не косметическим изменением, а сменой модели взаимодействия клиента и сервера. В обычных формах вся логика и данные находились на стороне клиента, что делало невозможной работу через интернет с низкой пропускной способностью. Управляемые формы разделили выполнение кода между клиентом и сервером, а внешний вид формы стал декларативным: разработчик описывает структуру, а платформа сама решает, как её отрисовать.

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

Когда именно появились управляемые формы

Технологическая платформа «1С:Предприятие 8.2» вышла в конце 2000-х годов и стала первой версией, где был реализован управляемый режим работы. Вместе с ней появились три ключевые новинки: управляемое приложение как новый режим запуска, тонкий клиент и веб-клиент, работающий через браузер без установки платформы на компьютер пользователя.

Платформа 8.2 не отменила обычные формы: они остались доступны для совместимости, и конфигурации, написанные под 8.1, продолжали работать в режиме обычного приложения. Это позволило предприятиям постепенно мигрировать, не переписывая весь код одномоментно. Однако все новые разработки фирма «1С» стала ориентировать на управляемый режим.

Такой подход объяснялся стратегической задачей: сделать 1С работающей через интернет. Обычные формы требовали «толстого» клиента и постоянной передачи больших объёмов данных между клиентом и сервером. Управляемые формы передают по сети только описание изменений интерфейса и результат серверных вызовов, что радикально снижает трафик.

Платформа 8.1Только обычные формы

Вся логика и отрисовка интерфейса выполняются на клиенте

Платформа 8.2Появление управляемых форм

Управляемое приложение, тонкий клиент, веб-клиент; обычные формы сохранены для совместимости

Платформа 8.3Управляемые формы — стандарт

Типовые конфигурации переведены на управляемый режим, интерфейс «Такси»

Чем управляемые формы отличаются от обычных

Главное отличие — разделение кода на клиентский и серверный. В обычной форме модуль выполнялся целиком на клиенте и имел прямой доступ к данным. В управляемой форме разработчик явно указывает контекст выполнения с помощью директив компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Платформа сама организует передачу данных между сторонами.

Второе принципиальное отличие — декларативное описание интерфейса. В обычной форме разработчик размещал элементы по координатам и управлял их отрисовкой вручную. В управляемой форме элементы образуют дерево, а конкретное расположение, размеры и поведение определяет платформа с учётом устройства: монитора, планшета или браузера.

Третье отличие — работа с данными через реквизиты формы. Управляемая форма не имеет прямого доступа к объектам базы данных из клиентского кода. Данные объектов преобразуются в данные формы (например, ДанныеФормыСтруктура или ДанныеФормыКоллекция), а обратное преобразование выполняется на сервере при записи.

КритерийОбычные формы (8.1)Управляемые формы (8.2+)
Исполнение кодаЦеликом на клиентеРазделено: клиент и сервер
Описание интерфейсаКоординатная разметкаДекларативное дерево элементов
КлиентыТолько толстыйТонкий, веб-клиент, мобильный
Доступ к даннымПрямой из модуля формыЧерез реквизиты и серверные вызовы

Зачем понадобилась новая модель форм

Обычные формы проектировались для локальных сетей, где клиент и сервер соединены быстрым каналом. Каждое обращение к данным из клиентского кода порождало обмен с сервером, и в сумме трафик был огромным. При работе через интернет такая схема давала неприемлемые задержки: форма «зависала» на каждое действие пользователя.

Управляемые формы решают проблему за счёт группировки серверных вызовов. Вся тяжёлая логика — запросы, проведение документов, расчёты — выполняется на сервере одним вызовом, а на клиент возвращается только результат. Клиентский код занимается исключительно интерфейсной логикой: реакцией на ввод, проверкой заполнения, навигацией.

Дополнительная причина — унификация интерфейса под разные устройства. Декларативная модель позволила одной и той же форме работать в толстом клиенте, браузере и позже в мобильном приложении без переписывания разметки. Для бизнеса это означало снижение стоимости поддержки и возможность выдавать сотрудникам доступ через веб без установки платформы.

Как определить, какие формы использует конфигурация

Самый быстрый признак — внешний вид приложения. Управляемый режим имеет панель разделов, панель функций и современный интерфейс (в новых версиях — «Такси»). Обычное приложение выглядит как классическое меню с выпадающими пунктами и окнами внутри главного окна программы.

Точный ответ даёт конфигуратор. Откройте свойства корневого узла конфигурации и посмотрите два свойства: «Основной режим запуска» и «Режим использования модальности». Если основной режим — «Управляемое приложение», конфигурация работает на управляемых формах. Для отдельной формы тип виден в дереве метаданных: у документа или справочника может быть и обычная, и управляемая форма одновременно.

На уровне кода управляемую форму легко узнать по директивам компиляции &НаКлиенте и &НаСервере в модуле формы. Их наличие — однозначный признак управляемой формы: в обычных формах таких директив нет, поскольку весь код и так выполняется на клиенте.

Как проверить режим конфигурации
  1. 1
    Откройте конфигуратор и выделите корень дерева конфигурации
  2. 2
    Откройте палитру свойств и найдите «Основной режим запуска»
  3. 3
    Проверьте значение: «Управляемое приложение» или «Обычное приложение»
  4. 4
    Откройте любую форму документа и посмотрите модуль: директивы &НаКлиенте и &НаСервере подтверждают управляемую форму

Что изменилось для разработчика

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

Изменился и подход к модальности. Управляемые формы изначально ориентированы на асинхронную модель: вместо модальных окон с ожиданием результата используются оповещения (ОписаниеОповещения). В платформе 8.3 поддержка модальных вызовов в управляемом режиме по умолчанию ограничена, и типовые конфигурации пишутся без модальности.

Наконец, иначе устроена работа с табличными частями и динамическими списками. Динамический список — механизм, доступный только в управляемых формах, — позволяет выводить произвольные запросы с автоматической постраничной загрузкой, что в обычных формах требовало ручной реализации.

bsl
&НаКлиенте
Процедура ПровестиДокумент(Команда)
    ПровестиДокументНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПровестиДокументНаСервере()
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
    ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры

Обычные формы сегодня: когда они ещё встречаются

Обычные формы продолжают жить в старых конфигурациях, которые не переписывались под управляемый режим: самописные решения времён 8.1, сильно доработанные старые типовые. Такие конфигурации запускаются в режиме обычного приложения, который платформа 8.3 по-прежнему поддерживает для совместимости.

Для новых разработок обычные формы использовать не следует. Они не работают в веб-клиенте и мобильном клиенте, не поддерживают интерфейс «Такси» и перспективные механизмы платформы. Фактически обычные формы — это унаследованная технология, которую поддерживают, но не развивают.

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

Типичные ошибки при переходе
01
Копирование кода из обычной формы в управляемую без разделения контекста — методы объекта недоступны на клиенте, код не компилируется
02
Частые серверные вызовы в цикле из клиентского кода — форма работает медленнее, чем обычная, из-за сетевых задержек
03
Использование модальных окон без проверки режима модальности — ошибка выполнения в конфигурациях, где модальность запрещена
04
Попытка управлять координатами элементов — в управляемой форме разметка декларативна, прямое позиционирование невозможно

Как подойти к выбору режима для своей задачи

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

Если вы поддерживаете старую конфигурацию на обычных формах, решение о миграции зависит от требований. Когда пользователям нужен доступ через интернет или веб-клиент — миграция неизбежна. Если система работает в локальной сети и устраивает всех, переводить её на управляемый режим только ради моды нерационально: это трудоёмкая переработка с риском регрессий.

Промежуточный вариант — постепенная миграция: новые формы и механизмы разрабатываются в управляемом виде, а старые продолжают работать как обычные, пока не дойдёт очередь их переписывания. Такой подход снижает риски, но требует дисциплины, чтобы смешанная архитектура не превратилась в постоянное состояние.

Маршрут решения

Как выбрать действие

Разрабатывается новая конфигурация или новый функционалИспользуйте только управляемые формы и управляемое приложение
Нужен доступ через браузер или с мобильных устройствОбычные формы не подойдут — требуется управляемый режим
Старая конфигурация стабильно работает в локальной сетиМиграцию можно отложить, но новые формы делайте управляемыми
Код из обычной формы не компилируется в управляемойПеренесите работу с объектами в серверные процедуры, клиенту оставьте интерфейсную логику
Итог

Что важно запомнить

Управляемые формы появились в платформе 8.2 вместе с управляемым приложением, тонким и веб-клиентом. Их суть — разделение кода на клиентский и серверный и декларативное описание интерфейса. Все современные конфигурации строятся на управляемых формах, а обычные остаются только в унаследованных решениях.

Частые вопросы об управляемых формах

В какой версии 1С появились управляемые формы?

В технологической платформе «1С:Предприятие 8.2». Именно этот релиз ввёл управляемое приложение, тонкий клиент и веб-клиент, для работы которых потребовалась новая модель форм с разделением кода между клиентом и сервером.

Можно ли запустить обычные формы в браузере?

Нет. Веб-клиент и тонкий клиент работают только с управляемыми формами. Обычные формы требуют толстого клиента и режима обычного приложения, поэтому для доступа через интернет конфигурацию придётся переводить на управляемый режим.

Как понять, управляемая форма или обычная, по коду?

По директивам компиляции в модуле формы. Наличие &НаКлиенте, &НаСервере или &НаСервереБезКонтекста однозначно указывает на управляемую форму. В обычных формах таких директив нет.

Почему код из обычной формы не работает в управляемой?

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

Поддерживаются ли обычные формы в платформе 8.3?

Да, режим обычного приложения сохраняется для совместимости, и старые конфигурации продолжают работать. Однако новые механизмы платформы, включая интерфейс «Такси» и мобильный клиент, ориентированы только на управляемые формы.

Сложно ли перевести конфигурацию с обычных форм на управляемые?

Трудоёмкость зависит от объёма и структуры кода. Меняется не только разметка, но и архитектура модулей: нужно разделить логику на клиентскую и серверную, убрать модальность, переработать обращения к данным. Для больших конфигураций это отдельный проект, а не техническая настройка.