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

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

Обычное и управляемое приложение в 1С: в чём разница и что выбрать

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

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

Различие между режимами критично на практике. Конфигурация, написанная под обычное приложение, использует директивы компиляции, модальные вызовы и прямое обращение к элементам формы — такой код в управляемом режиме либо не скомпилируется, либо будет работать с ошибками. Наоборот, современные типовые решения («Управление торговлей 11», «ERP», «Бухгалтерия 3.0») рассчитаны только на управляемое приложение.

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

Что такое обычное приложение и как оно устроено

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

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

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

Что такое управляемое приложение

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

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

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

Ключевые различия двух режимов

Различия удобно рассмотреть по практическим критериям, которые влияют на разработку и эксплуатацию.

КритерийОбычное приложениеУправляемое приложение
Формирование интерфейсаРучная разметка формы разработчикомДекларативное описание, отрисовка платформой
Исполнение кодаВсё на клиентеРазделение на клиент и сервер через директивы
КлиентыТолько толстый клиентТонкий, веб-клиент, мобильный клиент
ДиалогиМодальные (Вопрос, ОткрытьФормуМодально)Асинхронные с оповещениями
Интерфейс системыГлавное меню, панели функций«Такси»: панель разделов, навигация, избранное
АктуальностьУстаревший режим, поддержка старых решенийСтандарт для всех новых разработок

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

Сравнение вариантов

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

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

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

Стандарт для новых разработок и всех современных типовых решений. Ограничение: требует переписывания кода со старых конфигураций и навыков клиент-серверного программирования.

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

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

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

Программно режим проверяется функцией ТекущийРежимЗапуска(), которая возвращает значение системного перечисления. Это полезно во внешних обработках, которые должны работать в обеих средах: по результату проверки код выбирает модальный или асинхронный сценарий.

Порядок действий
  1. 1
    Откройте конфигуратор и свойства корня конфигурации
  2. 2
    Найдите параметр «Основной режим запуска» и зафиксируйте значение
  3. 3
    Если стоит «Выбирать автоматически» — проверьте настройки пользователя в разделе «Администрирование»
  4. 4
    Для проверки из кода используйте ТекущийРежимЗапуска()
  5. 5
    Сверьте результат с фактическим видом интерфейса у пользователя

Что учесть при переносе кода между режимами

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

Запросы к базе и работа с объектами переносятся на сервер. Типичный шаблон: клиентская процедура собирает параметры, вызывает серверную, та выполняет запрос и возвращает результат простыми типами или структурой. Попытка выполнить запрос на клиенте приведёт к ошибке компиляции или выполнения.

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

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

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

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

Третья ошибка — тестирование только в толстом клиенте. Обработка может исправно работать в толстом клиенте управляемого приложения и полностью отказать в веб-клиенте из-за модальных вызовов или недопустимых типов. Если пользователи работают через браузер, проверка в веб-клиенте обязательна.

Типичные ошибки
01
Копирование кода из обычной формы без переработки — ошибки «Метод объекта не обнаружен» и пустые формы
02
Выполнение запросов в клиентской процедуре — ошибка компиляции или падение в тонком клиенте
03
Использование модальных диалогов — конфигурация не работает в веб-клиенте
04
Тестирование только в толстом клиенте — скрытые отказы у пользователей браузера
05
Смена режима запуска на рабочей базе без резервной копии — риск потери работоспособности системы

Что выбрать для новой разработки и поддержки

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

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

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

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

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

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

Ответы на частые вопросы

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

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

Почему внешняя обработка открывается у одних пользователей, а у других выдаёт ошибку?

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

Что такое «Такси» и как оно связано с управляемым приложением?

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

Можно ли в управляемом приложении использовать модальные окна?

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

Как понять по коду, для какого режима он написан?

Признаки обычного приложения: отсутствие директив &НаКлиенте/&НаСервере, вызовы Вопрос(), ОткрытьФормуМодально(), прямое обращение к ЭлементыФормы. Признаки управляемого: директивы компиляции, ПоказатьВопрос(), Элементы, разделение процедур на клиентские и серверные.

Нужно ли переучивать пользователей при переходе на управляемое приложение?

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

Итог

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

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