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

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

1С управляемое приложение: для чего нужно и как работает

Что такое управляемое приложение в 1С, для чего нужны управляемые формы, чем они отличаются от обычных и как перевести конфигурацию на новый режим.

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

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

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

Чем управляемое приложение отличается от обычного

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

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

Сравнение режимов

Обычное приложение

Полный контроль над отрисовкой форм, работа только в толстом клиенте под Windows, нет разделения клиент-сервер в коде форм

Управляемое приложение

Декларативные формы, работа в тонком и веб-клиенте, разделение кода на клиент и сервер, требует переработки старых форм

Смешанный режим (такси + обычные формы)

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

Для чего нужен управляемый режим на практике

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

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

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

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

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

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

bsl
&НаСервере
Процедура ЗаполнитьЦенуНаСервере()
    Запрос = Новый Запрос("ВЫБРАТЬ Цена ИЗ РегистрСведений.Цены ...");
    // работа с базой только здесь
КонецПроцедуры

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

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

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

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

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

Как проверить режим конфигурации
  1. 1
    Откройте конфигуратор и загрузите конфигурацию
  2. 2
    В дереве конфигурации выделите корневой узел и откройте палитру свойств
  3. 3
    Найдите свойство «Основной режим запуска»
  4. 4
    Проверьте свойство «Режим использования модальности»
  5. 5
    Для проверки формы откройте её и посмотрите заголовок редактора: управляемая форма содержит вкладки «Форма», «Реквизиты», «Команды», «Параметры», «Командный интерфейс», «Модуль»

Как перевести конфигурацию на управляемый режим

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

Затем обычные формы пересоздаются как управляемые. Автоматического конвертера нет: форму придётся собирать заново, перенося реквизиты и переписывая обработчики с учётом разделения клиент-сервер. Для типовых форм списков и документов часто быстрее создать форму заново через конструктор, чем пытаться повторить старую структуру.

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

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

Самая частая ошибка начинающих — попытка обратиться к базе данных из клиентского контекста. Компилятор это отсекает, но в динамических вызовах и через Выполнить() ошибка проявляется только в момент выполнения у пользователя. Всю работу с данными выносите в серверные процедуры.

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

Третья группа ошибок — попытки управлять формой извне, как в обычном приложении. Получить управляемую форму другого объекта и напрямую менять её элементы нельзя; взаимодействие делается через оповещения (Оповестить, ОповеститьОбИзменении) и параметры открытия формы.

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

Когда управляемый режим не нужен

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

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

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

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

Нужен доступ через браузер, тонкий клиент или мобильные устройстваИспользуйте управляемое приложение — обычное в этих клиентах не работает
Конфигурация дорабатывается на базе типовой (УТ, ERP, БП, ЗУП)Работайте в управляемом режиме и по стандартам БСП — типовые решения построены на нём
Старая самописная конфигурация, только толстый клиент, развитие не планируетсяОбычный режим допустим, но зафиксируйте версию платформы и не обновляйте её без тестирования
Планируется рост числа пользователей и филиаловПереводите конфигурацию на управляемые формы заранее, поэтапно
Итог

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

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

Частые вопросы

Управляемое приложение и «Такси» — это одно и то же?

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

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

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

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

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

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

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

Нужно ли переписывать всю конфигурацию сразу при переходе?

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

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

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