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

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

УФ в 1С: что это такое и как работают управляемые формы

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

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

Понимание разницы между обычными и управляемыми формами критично для любого, кто работает с 1С: от неё зависит, какие конфигурации можно запускать в веб-клиенте, как дорабатывать типовые решения и почему код, написанный для старого интерфейса, не работает в новом. Современные конфигурации — «1С:Бухгалтерия 3.0», «1С:ERP», «1С:Зарплата и управление персоналом 3» — построены исключительно на управляемых формах.

Что такое управляемые формы простыми словами

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

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

Ключевые отличия УФ от обычных форм

Различия между двумя технологиями не только визуальные — они затрагивают архитектуру кода, модель выполнения и возможности развёртывания. Ниже сопоставление основных характеристик.

ПараметрОбычные формыУправляемые формы
Описание интерфейсаРучное размещение элементов по координатамДекларативное описание, отрисовка платформой
Выполнение кодаВесь код на клиентеРазделение: клиентские и серверные процедуры
Поддерживаемые клиентыТолько толстый клиентТолстый, тонкий и веб-клиент
Работа с даннымиПрямое обращение к объектамЧерез реквизиты формы и специальные типы (ДанныеФормыСтруктура)
Режим запускаОбычное приложениеУправляемое приложение, «Такси»

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

Где используются управляемые формы

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

Обычные формы встречаются в устаревших конфигурациях — «Управление торговлей 10.3», «Бухгалтерия 2.0», «Зарплата и управление персоналом 2.5», а также в старых самописных решениях. Такие конфигурации можно запустить только в толстом клиенте в режиме обычного приложения, что ограничивает удалённую работу и публикацию через веб-сервер.

Как определить, в каком режиме работает конфигурация

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

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

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

Особенности разработки на управляемых формах

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

Данные на управляемой форме хранятся в реквизитах формы. Основной реквизит объекта (например, документа) имеет тип ДанныеФормыСтруктура — это не сам объект базы данных, а его представление. Для записи изменений данные формы преобразуются в объект методом РеквизитФормыВЗначение, объект записывается, а затем при необходимости преобразуется обратно через ЗначениеВРеквизитФормы.

Ещё одна особенность — асинхронная модель. В тонком и веб-клиенте запрещены модальные окна и синхронные вызовы вопросов пользователю: вместо Вопрос() используется ПоказатьВопрос() с описанием оповещения, вместо Предупреждение() — ПоказатьПредупреждение(). Код с модальными вызовами либо не скомпилируется, либо завершится ошибкой в зависимости от настроек режима использования модальности.

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

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

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

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

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

Контрольные точки

Как проверить корректность переноса формы

Компиляция модуля формы
Норма

Нет ошибок при проверке модуля с включёнными флагами тонкого и веб-клиента

Тревожный признак

Ошибки о недоступных методах или модальных вызовах

Запись объекта
Норма

Изменения на форме сохраняются в базу и видны после повторного открытия

Тревожный признак

Данные на форме меняются, но в базе не сохраняются

Работа в веб-клиенте
Норма

Форма открывается в браузере, все команды выполняются

Тревожный признак

Ошибки выполнения или не отображаются элементы

Когда обычные формы ещё встречаются и что с ними делать

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

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

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

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

Конфигурация типовая старая (УТ 10.3, БП 2.0)Планируйте переход на актуальную типовую конфигурацию с переносом данных, а не переписывание форм
Самописная конфигурация развивается и нужен веб-доступПереводите формы на управляемые постепенно, начиная с самых используемых
Самописная конфигурация стабильна, работает локальноМожно оставить обычные формы, но зафиксируйте версию платформы и не обновляйте без тестирования

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

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

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

Что означает ошибка «Модальные вызовы запрещены»?

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

Чем интерфейс «Такси» отличается от управляемых форм?

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

Нужно ли переписывать все формы сразу при переходе на УФ?

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

Поддерживаются ли управляемые формы на мобильной платформе 1С?

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

Итог

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

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