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

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

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

Что такое УФ (управляемые формы) в 1С, чем они отличаются от обычных форм, как перейти на управляемое приложение и какие ошибки допускают при разработке.

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

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

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

Что скрывается за аббревиатурой УФ

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

Термин неразрывно связан с понятием «управляемое приложение» — режимом запуска, в котором весь интерфейс конфигурации (панели разделов, списки, формы документов) строится на управляемых формах. Все типовые решения фирмы «1С» последних поколений — Бухгалтерия 3.0, Управление торговлей 11, ERP, ЗУП 3.1 — работают только в управляемом режиме.

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

Обычные формы (платформа 8.1, режим «обычное приложение») работали по принципу «всё на клиенте»: весь код модуля формы исполнялся на компьютере пользователя, а разработчик размещал элементы на форме с точностью до пикселя. Это давало гибкость, но делало невозможной работу через браузер и создавало огромную нагрузку на сеть.

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

КритерийОбычные формы (ОФ)Управляемые формы (УФ)
Описание интерфейсаПиксельная разметка в конфигуратореДекларативное дерево элементов
Исполнение кодаТолько на клиентеРазделение: клиент + сервер
Веб-клиентНе поддерживаетсяПолная поддержка
Директивы компиляцииНе используются&НаКлиенте, &НаСервере и др.
АктуальностьУстаревшая технологияСтандарт для новых разработок

Ещё одно принципиальное отличие — контекст объекта. В обычной форме разработчик работал с объектом напрямую. В управляемой форме на клиенте доступны только данные формы (например, реквизит типа «ДанныеФормыСтруктура»), а чтобы вызвать метод объекта, нужно на сервере преобразовать данные формы в объект через РеквизитФормыВЗначение().

Где встречаются УФ на практике

Если вы открываете любую современную типовую конфигурацию — вы уже работаете с управляемыми формами. Форма документа «Реализация товаров и услуг» в УТ 11, форма списка контрагентов в Бухгалтерии 3.0, форма внешней обработки, купленной на маркетплейсе, — всё это УФ.

Для разработчика признак управляемой формы виден сразу при открытии модуля: процедуры помечены директивами &НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста. Если этих директив нет и код идёт сплошным текстом — перед вами обычная форма.

Модуль формыЕсть директивы &НаКлиенте / &НаСервере

Откройте модуль формы в конфигураторе и посмотрите на заголовки процедур

Редактор формыДерево элементов, а не макет с пикселями

В управляемой форме элементы располагаются в иерархии, координаты не задаются

Режим запуска«Управляемое приложение» в свойствах конфигурации

Смотрите свойства корня конфигурации, поле «Основной режим запуска»

Как устроен модуль управляемой формы

Главная особенность, с которой сталкивается каждый начинающий разработчик УФ, — жёсткое разделение контекстов исполнения. Процедура с директивой &НаКлиенте не может напрямую выполнить запрос к базе данных или обратиться к менеджеру объекта: на клиенте этих возможностей просто нет. Для этого нужно вызвать серверную процедуру.

Типовой паттерн выглядит так: обработчик нажатия кнопки объявлен на клиенте, он собирает параметры и вызывает серверную процедуру, а та уже выполняет запрос, изменяет данные и возвращает результат. Серверные процедуры без контекста формы (&НаСервереБезКонтекста) работают быстрее, потому что платформе не нужно передавать на сервер всё состояние формы.

bsl
&НаКлиенте
Процедура ЗаполнитьЦены(Команда)
    ЗаполнитьЦеныНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьЦеныНаСервере()
    // здесь доступны запросы и объекты
КонецПроцедуры

Частая ловушка — попытка обратиться из клиентской процедуры к реквизиту формы как к объекту. Например, реквизит «Объект» в форме документа на клиенте — это не объект документа, а структура данных. Вызов Объект.Записать() на клиенте приведёт к ошибке. Запись выполняется либо штатной командой формы, либо на сервере после преобразования данных в объект.

Как перевести обработку или конфигурацию на УФ

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

Порядок перевода формы на УФ
  1. 1
    Создайте новую форму типа «Управляемая форма» у объекта или обработки
  2. 2
    Перенесите реквизиты и элементы, продумав состав данных формы
  3. 3
    Разнесите код: интерфейсные обработчики — на клиент, работу с данными — на сервер
  4. 4
    Замените прямые обращения к объектам на преобразование РеквизитФормыВЗначение на сервере
  5. 5
    Проверьте форму в тонком клиенте и веб-клиенте, исправьте ошибки компиляции контекстов

Практический совет: начинайте перенос с анализа, какие данные форма реально использует. В обычных формах разработчики часто тянули в форму весь объект «на всякий случай». В УФ каждый лишний реквизит — это трафик между клиентом и сервером, поэтому состав данных должен быть минимально необходимым.

Ограничения и типичные ошибки при работе с УФ

Управляемые формы накладывают ограничения, к которым нужно привыкнуть. Нельзя рисовать произвольную графику и размещать элементы в произвольных координатах. Нельзя выполнять долгие операции на клиенте — интерфейс «зависнет». Модальные окна в управляемом режиме запрещены по умолчанию: вместо Вопрос() используется асинхронный ПоказатьВопрос() с описанием оповещения.

Типичные ошибки разработчиков УФ
01
Весь код пишется в &НаКлиенте — обработка падает в веб-клиенте и грузит сеть
02
Избыточные серверные вызовы в цикле: каждый вызов — отдельный обмен с сервером, форма работает медленно
03
Использование модальных методов (Вопрос, ОткрытьФормуМодально) — в управляемом режиме это приводит к ошибке
04
Обращение к данным формы как к объекту на клиенте — ошибка «Метод объекта не обнаружен»
05
Хранение промежуточных данных в реквизитах формы вместо переменных — раздувает передаваемый контекст

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

Если старая внешняя обработка с обычной формой не открывается в современной конфигурации, это нормально: управляемое приложение просто не умеет показывать обычные формы. Быстрый обходной путь — запустить базу в режиме толстого клиента обычного приложения, если конфигурация это позволяет, а правильный путь — переписать обработку под УФ.
ПЗ
Практическое замечание

FAQ: частые вопросы об УФ в 1С

УФ и УПП — это одно и то же?

Нет. УФ — управляемые формы, технология интерфейса. УПП — «Управление производственным предприятием», старая типовая конфигурация. Аббревиатуры похожи, но относятся к разным вещам.

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

Штатно — нет. Управляемое приложение отображает только управляемые формы. Варианты: запустить базу в режиме обычного приложения (если это разрешено настройками) или создать для объекта управляемую форму.

Чем отличается &НаСервере от &НаСервереБезКонтекста?

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

Почему код с Вопрос() не работает в управляемой форме?

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

Нужно ли учить обычные формы новичку?

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

Работают ли управляемые формы на мобильной платформе?

Да, мобильная платформа 1С использует управляемые формы, но с ограниченным набором элементов и собственными особенностями компоновки. Форму под мобильный клиент обычно адаптируют отдельно.

Итог

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

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