Обычные и управляемые формы 1С: чем отличаются и что выбрать

· 9 мин

Содержание

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

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

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

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

Таблица — ориентир. Ниже каждая строка разобрана подробнее.

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

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

В управляемой форме так нельзя. Форма разделена на две половины, и между ними есть граница.

Клиент и сервер в управляемой форме

Код пишется в процедурах с директивами компиляции:

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

Данные формы живут в реквизитах. Это не сам объект, а его «слепок», который передаётся между клиентом и сервером при каждом серверном вызове.

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

Что происходит в обычной форме

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

С какими клиентами работают: совместимость и платформы

Тип клиента определяет, какие формы вы вообще можете открыть.

КлиентОбычные формыУправляемые формы
Толстый клиент✅✅
Тонкий клиент❌✅
Веб-клиент❌✅
Мобильное приложение❌✅

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

Где обычные формы ещё встречаются

  • старые типовые конфигурации, снятые с поддержки;
  • самописные обработки и внешние отчёты, сделанные много лет назад;
  • служебные формы платформы, которые вызываются в толстом клиенте (например, часть сервисных инструментов администратора).

Работать с ними можно, но придётся запускать базу в толстом клиенте. Это неудобно для терминального сервера и невозможно для удалённого доступа через интернет без полноценного клиента.

Как запускается приложение

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

Переключение режима запуска само по себе формы не конвертирует. Обычные формы в управляемом приложении по-прежнему не работают в тонком клиенте и браузере.

Скорость работы и обмен данными с сервером

Здесь легко ошибиться: управляемые формы не всегда быстрее. Всё зависит от канала и от того, как написан код.

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

При работе через интернет, VPN, терминальный сервер или веб-клиент. Тонкий клиент передаёт на сервер минимум данных. Пользователю уходит только то, что нужно для отображения, а не целый объект с табличными частями.

Динамические списки читают данные порциями. Открыв справочник на 500 000 элементов, вы получаете первые строки, а не всю выборку.

Когда разницы не заметно

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

Где управляемые формы работают медленнее

Если код написан неаккуратно. Типичные причины:

  1. Серверный вызов внутри цикла по строкам табличной части. На 300 строках получаете 300 обращений к серверу.
  2. Передача на сервер огромных реквизитов формы, когда достаточно одного идентификатора.
  3. Обработчик изменения поля, который при каждом нажатии клавиши зовёт сервер.

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

Как разрабатываются и настраиваются формы

Разница в подходе заметна уже в конфигураторе.

Обычная форма: рисуем по координатам

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

Плюс — полный контроль над внешним видом. Минус — каждое изменение вручную: добавили поле, подвинули остальные.

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

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

Что это даёт:

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

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

Командный интерфейс и разделы

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

В обычном приложении вместо этого главное меню с пунктами вроде «Справочники», «Документы», «Отчёты», а также панели инструментов.

В управляемом приложении доступно несколько вариантов оформления главного окна. Они меняют расположение панелей, но не саму архитектуру.

Что выбрать для новой разработки и старых доработок

Для новой разработки вопроса нет: пишите управляемые формы. Все актуальные типовые конфигурации (Бухгалтерия, ЗУП, Управление торговлей, ERP) работают только в управляемом режиме, и обновления выпускаются именно под него.

Для старых доработок решение зависит от сценария.

СитуацияРекомендация
Старая конфигурация, база файловая, работаете в локальной сетиМожно оставить как есть, если нет планов на доступ через веб
Нужен доступ из браузера или удалённоПереходить на управляемые формы
Конфигурация на поддержке, обновляете типовуюДорабатывать только управляемыми формами
Одна внешняя обработка с обычной формойПереписать, если обработкой пользуются в тонком клиенте
Конфигурация идёт на обновление платформыПроверить, какие обычные формы остались, и составить список

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

Переход на управляемые формы и ограничения

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

Порядок работ

  1. Создайте копию базы и работайте на ней. Не конвертируйте формы в рабочей базе без резервной копии.
  2. Составьте список обычных форм: открывайте объекты в конфигураторе и смотрите, какие формы не помечены как управляемые.
  3. Преобразуйте форму и проверьте, что она открывается в тонком клиенте.
  4. Пройдите по модулю формы и расставьте директивы &НаКлиенте и &НаСервере.
  5. Замените прямые обращения к объекту (Объект.Реквизит в старом стиле) на работу с реквизитами формы там, где этого требует управляемая модель.
  6. Переведите табличные поля на динамические списки.
  7. Проверьте в браузере и в тонком клиенте: открытие, запись, проведение, печать.

Где обычно ломается

  • Код, который напрямую читает данные из элементов формы по имени, после переноса перестаёт находить их.
  • Обращения к серверным функциям из клиентского кода без явной передачи данных.
  • Расчёты в табличной части, завязанные на события обычного табличного поля.
  • Обработки печати, которые вызывали формы толстого клиента.
  • Внешние компоненты, которые работают только в толстом клиенте.

Что нельзя перенести один в один

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

Ограничения управляемого режима

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

Типичные ошибки при работе с интерфейсами

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

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

Можно ли смешивать обычные и управляемые формы в одной конфигурации?
Технически да, но тогда в конфигурации останутся формы, недоступные в тонком клиенте и браузере. Для режима «Управляемое приложение» все формы, которыми пользуются, должны быть управляемыми.
Открывает ли толстый клиент управляемые формы?
Да. Толстый клиент работает и с обычными, и с управляемыми формами. Поэтому его иногда оставляют для администрирования, а пользователям выдают тонкий клиент.
Влияет ли тип интерфейса на лицензии?
Нет. Лицензия определяет число подключений, а не тип формы. Но веб-клиенту и тонкому клиенту нужны соответствующие клиентские лицензии на сеанс.
Нужен ли веб-сервер для управляемых форм?
Только для веб-клиента. Тонкий клиент подключается напрямую к серверу 1С или к файловой базе, браузер для этого не нужен.
Как узнать, обычная форма или управляемая?
В конфигураторе откройте форму: у управляемой в редакторе есть дерево элементов и закладка «Реквизиты», а у обычной — лист с рамками элементов и сеткой. Также можно запустить базу в тонком клиенте: обычная форма просто не откроется.
Можно ли ускорить управляемую форму без переписывания?
Часто да. Уберите серверные вызовы из циклов, передавайте на сервер только нужные данные и вынесите тяжёлые запросы в процедуры без контекста формы.