Внедрение 1С на управляемых формах: почему интерфейс виснет и как это убрать
Управляемые формы в 1С выполняются и на клиенте, и на сервере, поэтому внедрение ломается в двух местах: код, написанный под обычные формы, не работает в тонком клиенте и браузере, а лишние серверные вызовы тормозят интерфейс. Лечится инвентаризацией форм, разделением кода по директивам &НаКлиенте и &НаСервере и проверкой сервера.
🔍 Почему возникают тормоза и ошибки в управляемых формах
Понедельник, десять утра. В оптовой компании менеджеры оформляют заказы покупателей в 1С:Управление торговлей. Один открывает заказ на сорок позиций и меняет количество в строке. Форма замирает, затем обновляется. Он правит следующую строку, и всё повторяется. К обеду отдел жалуется, что «1С тормозит», а администратор смотрит на сервер и видит свободный процессор.
Причина в устройстве управляемой формы. Обычная форма целиком работала на компьютере пользователя в толстом клиенте и ходила в базу напрямую. Управляемая делится: интерфейс живёт на клиенте, данные и тяжёлая логика на сервере, а каждый вызов между ними идёт по сети. Разработчик перенёс старый обработчик как есть, но цикл по строкам заказа теперь обращается к серверу на каждой итерации, поэтому форма ждёт ответа столько раз, сколько в заказе строк. Управляемые формы появились в платформе 8.2, а современные типовые конфигурации написаны на них целиком.
Второй источник проблем — ошибки на клиенте. Сообщение «Поле объекта не обнаружено» означает, что клиентский код обратился к реквизиту, которого нет в данных формы: на клиент попадает только то, что есть на форме. В обычной форме объект был доступен целиком, поэтому такие обращения работали годами.
Третья причина проще: обычные формы не открываются в тонком клиенте и в браузере. Внешние обработки и отчёты, которые накопились за годы, работают только в толстом клиенте. Пока он стоит на каждом офисном компьютере, этого не видно. Но первый сотрудник, который подключается из дома или открывает базу в браузере, не может открыть нужную обработку.
💸 Что теряет бизнес, пока формы не доведены
Менеджеры тратят смену на ожидание ответа формы, а покупатель в это время получает счёт у конкурента. Склад не получает реализацию вовремя, и машина стоит под погрузкой. Бухгалтерия при закрытии месяца упирается в тормозящие документы и подходит к сроку сдачи отчётности без запаса.
Хуже всего с обновлениями. Доработанные обычные формы конфликтуют с новым релизом, объединение делают вручную, а пока его нет, конфигурация остаётся на старой версии без изменений законодательства. Пропущенный срок или ошибка в отчёте — это штраф и переделка.
🛠 Как исправить: перенос форм и кода по шагам
Составьте реестр обычных форм
Откройте конфигуратор, пройдите по веткам «Формы» у документов, справочников и отчётов и отметьте обычные. В свойствах конфигурации проверьте «Основной режим запуска» и режим совместимости. Отдельно соберите внешние обработки и отчёты, которые пользователи подключают через меню дополнительных отчётов и обработок или с диска: конфигуратор их не покажет, а ломаются они первыми. На выходе получается таблица: форма, кто ею пользуется, насколько она критична, сколько кода в модуле.
Разделите клиентский и серверный код
Правило одно: клиент занимается интерфейсом, сервер считает. Цикл по строкам табличной части переносится в серверную процедуру целиком, чтобы вся работа шла за один вызов. Процедуры, которым не нужны данные формы, получают директиву &НаСервереБезКонтекста: платформа не передаёт форму туда и обратно, и вызов выходит легче. Раскраску строк и скрытие полей по условию переводят с кода на условное оформление формы, оно работает на клиенте без обращений к серверу. Недостающие реквизиты добавляют в форму или читают на сервере в нужный момент, так уходит «Поле объекта не обнаружено».
Проверьте сервер и канал связи
Если после правок кода форма всё ещё тяжёлая, ищем задержку по цепочке: код, сервер 1С, СУБД, сеть до офиса. Производительность связки «сервер, СУБД, 1С» измеряют тестом Гилёва и сравнивают с результатами из общей таблицы. Требования к клиентским и серверным машинам описаны в системных требованиях 1С. Слабый канал в удалённый филиал даёт ту же задержку, что и неудачный код, хотя лечится иначе.
Какой путь выбрать: конвертация, переписывание или типовая конфигурация
Единого рецепта нет: выбор зависит от того, сколько в форме кода и как часто ею пользуются. Четыре варианта, которые мы обычно кладём на стол:
| Подход | Когда подходит | Что получаете | Чем рискуете |
|---|---|---|---|
| Оставить обычные формы в толстом клиенте | Старая база без обновлений, все работают в офисе | Ничего не меняется | Нет браузера и тонкого клиента, переход на современную типовую конфигурацию откладывается |
| Автоматическая конвертация | Простые формы справочников и документов с малым объёмом кода | Быстрый перенос расположения элементов | Код модуля правят вручную, лишние серверные вызовы остаются |
| Переписывание формы | Тяжёлые формы: заказы, реализации, подбор товаров | Форма с правильным разделением клиента и сервера | Дольше и дороже конвертации |
| Типовая конфигурация без доработок | Процессы близки к типовым, уникальных требований мало | Все формы управляемые, обновления без ручного объединения | Часть процессов придётся подстроить под типовую логику и перенести данные |
Для торговых компаний первым делом проверяем, закрывает ли задачу типовая 1С:Управление торговлей: её формы управляемые целиком, и обновления приходят без ручного объединения. Если уникальных процессов много, считаем, что дешевле: перенести доработки или переписать их заново как расширения.
🔁 Что делать, если ошибка повторяется
Ошибка вернулась после исправления. Значит, вылечили симптом в одной форме, а причина осталась в привычке писать код по-старому. Два типичных случая.
Ошибка возвращается после обновления
Обновление типовой конфигурации перезаписало правки, внесённые прямо в типовые формы, либо объединение вернуло старый код. Решение — вынести доработки в расширения конфигурации (они есть с платформы 8.3.6): типовая конфигурация остаётся нетронутой, релиз ставится без ручного объединения, а ваши формы живут отдельно. Такой перенос входит в доработку 1С, и после него обновление перестаёт быть событием.
Тормоза вернулись через месяц
Новую форму написали по старой привычке, и серверный вызов снова оказался внутри цикла. Не гадайте: включите технологический журнал и подсистему «Оценка производительности» из библиотеки стандартных подсистем, найдите операции, которые выполняются дольше всего, и посмотрите, сколько в них серверных вызовов. Если ошибка возникает только у части сотрудников, сравните тип клиента (тонкий или браузер), права и версию платформы на их компьютерах.
🛡 Как предотвратить проблемы с управляемыми формами при внедрении
Часть проблем закрывается ещё на старте проекта. Мы закладываем в техзадание и в приёмку такие правила:
- ✓Все новые формы пишутся управляемыми, доработки типовой конфигурации идут в расширениях.
- ✓На ревью код проверяют на серверные вызовы внутри циклов. Такой код приёмку не проходит.
- ✓Тестовая база наполнена данными, близкими к рабочим, и на ней прогоняют тяжёлые сценарии: закрытие месяца, подбор товара в заказ, массовое проведение.
- ✓Перед запуском всех пользователей работает пилотная группа, в ней есть те, кто подключается удалённо.
- ✓Версию платформы и релиз конфигурации обновляют по графику, а не после поломки.
Последний пункт тоже влияет на формы: на устаревшей платформе исправления ошибок не приходят. Перед каждым релизом наша команда по обновлению 1С проверяет совместимость доработок на копии базы, а не на рабочей.
Как это решаем мы и сколько стоит
Начинаем с аудита форм, а не с переписывания. Собираем реестр обычных форм и внешних обработок, замеряем тяжёлые операции и показываем, где именно теряется время: в коде, на сервере или в канале связи. Потом предлагаем вариант из таблицы выше и оцениваем работы в часах до старта.
Сопровождение 1С и работа системного администратора стоят 3800 руб/час. Объём работ по вашему реестру форм считаем в часах заранее, поэтому бюджет известен до начала. Если замер показал, что база упирается в железо, переносим её на арендованный сервер: от 1 100 ₽/мес за пользователя. Сотрудники работают в тонком клиенте или в браузере из любого офиса, а выяснять, виновата 1С или хостинг, не приходится: внедрение и сервер у одной команды.
Полный проект, от обследования до запуска, описан на странице внедрения 1С. Чтобы получить оценку, пришлите список доработанных форм и версию платформы, и мы вернёмся с расчётом в часах.
❓ Частые вопросы
Чем управляемые формы 1С отличаются от обычных?
Обычная форма целиком работает в толстом клиенте и обращается к базе напрямую. Управляемая делится на клиентскую и серверную части и открывается в тонком клиенте и браузере. Управляемые формы появились в платформе 8.2, современные типовые конфигурации написаны только на них. Обычные формы в браузере и тонком клиенте не открываются.
Почему появляется ошибка «Поле объекта не обнаружено» в управляемой форме?
Клиентский код обратился к реквизиту, которого нет в данных формы. На клиент попадает только то, что размещено на форме или добавлено в её реквизиты. Так бывает после переноса кода из обычной формы. Исправление: добавьте реквизит в форму либо прочитайте значение в серверной процедуре и верните результат клиенту одним вызовом.
Можно ли оставить обычные формы и не переходить на управляемые?
Можно, пока база закрытая, работает в офисе на толстом клиенте и не обновляется. Но обычные формы не открываются в браузере и тонком клиенте, а современные типовые конфигурации написаны на управляемых формах. Переход на новый релиз или удалённая работа сотрудников рано или поздно потребуют переноса.
Сколько стоит перевести доработки на управляемые формы?
Единой цены нет: она зависит от числа обычных форм и объёма кода в них. Мы составляем реестр форм и оцениваем работы в часах до старта. Сопровождение 1С и работа сисадмина стоят 3800 руб/час. Если база упирается в сервер, аренда 1С начинается от 1100 руб/мес.
Как понять, что 1С тормозит из-за кода, а не из-за сервера?
Посмотрите на загрузку сервера в момент подвисания: если процессор свободен, а форма ждёт на каждом действии, причина в серверных вызовах из кода или в канале связи. Для проверки железа запустите тест Гилёва, для кода включите технологический журнал и подсистему «Оценка производительности». Если сервер загружен под потолок, сначала смотрите железо и параметры СУБД.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

