Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
1C_EXCESSIVE_SERVER_CALLS 1С:Предприятие и СУБД

Оптимизация клиент-серверного взаимодействия 1С: контекстные вызовы

Обновлено: 26.08.2026  ·  Официальная база знаний
  • Интерфейс управляемого приложения «лагает» и подвисает при изменении реквизитов формы.
  • Большое количество серверных вызовов в технологическом журнале по событию CALL.
  • Высокий сетевой трафик между тонкими клиентами и сервером 1С.

1. Разница директив &НаСервере и &НаСервереБезКонтекста

Директива &НаСервере передает на сервер и возвращает обратно на клиент весь контекст формы (все реквизиты, элементы управления и структуры данных). Директива &НаСервереБезКонтекста передает только явно указанные параметры, экономя сериализацию данных.

2. Рефакторинг кода: переход на вызовы без контекста

// ПЛОХО: Передается вся форма со всеми строками табличных частей!
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
    ПолучитьЦенуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПолучитьЦенуНаСервере()
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    ТекущаяСтрока.Цена = Ценообразование.ПолучитьЦену(ТекущаяСтрока.Номенклатура);
КонецПроцедуры

// ХОРОШО: Передаются только конкретные значения, форма не гоняется по сети
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
    ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
    ТекущиеДанные.Цена = ПолучитьЦенуБезКонтекста(ТекущиеДанные.Номенклатура, Объект.Дата);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьЦенуБезКонтекста(Знач Номенклатура, Знач Дата)
    Возврат Ценообразование.ПолучитьЦену(Номенклатура, Дата);
КонецФункции

3. Минимизация вызовов внутри циклов на клиенте

Никогда не вызывайте сервер внутри цикла обработки табличной части на клиенте. Выполняйте всю обработку за один серверный вызов.

Практический опыт инженера: Золотое правило оптимизации интерфейса 1С: один пользовательский клик = максимум один вызов сервера. Все проверки и предварительные расчеты выполняйте на клиенте или пакетом.

Частые вопросы (FAQ)

Почему директива &НаСервере замедляет работу через медленный интернет?

При каждом вызове &НаСервере сериализуется весь XML/JSON контекст управляемой формы. Если в табличной части 1000 строк, размер пакета может достигать нескольких мегабайт на каждый клик.

Когда обязательно использовать директиву &НаСервере с контекстом?

Только тогда, когда на сервере требуется напрямую модифицировать свойства элементов интерфейса, видимость кнопок или перечитывать объект целиком.

Как замерить количество клиент-серверных вызовов в 1С?

В режиме '1С:Предприятие' включите 'Показывать показатели производительности' в меню настроек параметров (отобразится счетчик вызовов, объем переданных данных и время сервера).

Что такое кэширование на клиенте?

Сохранение редко меняющихся данных (например, структуры констант или настроек пользователя) в переменных модуля клиентского приложения для исключения повторных запросов к серверу.