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