Перевод информационной базы 1С:Предприятие из файлового режима в клиент-серверный вариант работы (MS SQL Server) в ряде случаев сопровождается неожиданным падением скорости открытия форм документов, справочников и списков. Особенно ярко эта проблема проявляется на обычных формах (толстый клиент). Разберем причины такого поведения и рассмотрим комплекс практических шагов для локализации и устранения задержек.
В файловом режиме все данные обрабатываются локально в оперативной памяти клиентского компьютера. В клиент-серверной архитектуре каждый запрос к базе данных преобразуется в сетевой вызов (round-trip) между сервером 1С и СУБД. Если в форме списка или документа заложены неоптимальные алгоритмы, открытие и отрисовка замедляются в разы.
Проанализируем ключевые моменты в коде форм:
ПриВыводеСтроки и ПриАктивизацииСтроки для выполнения запросов к СУБД приводит к выполнению отдельного SQL-запроса на каждую выводимую строку списка. Перенесем получение дополнительных данных в пакетное событие ПриПолученииДанных. В этом обработчике данные запрашиваются одним запросом сразу для всего массива видимых строк.ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления на наличие тяжелых неявных обращений через точку к реквизитам связанных объектов.ПриОткрытии, ПередОткрытием и модуля формы, чтобы изолировать платформенные задержки от прикладного кода.Одной из специфических особенностей платформы 1С на обычных формах является обращение к подсистеме печати операционной системы при открытии любой формы. Движок толстого клиента опрашивает драйвер принтера по умолчанию для точного расчета экранных метрик, межстрочных интервалов и табличных полей.
Если принтером по умолчанию выбран недоступный сетевой принтер, перенаправленный принтер в RDP-сессии (Easy Print) или некорректно работающий драйвер, открытие каждой формы задерживается на 1–3 секунды из-за ожидания ответа подсистемы печати (таймаут Spooler).
Для решения проблемы назначим на сервере терминалов или на локальном компьютере пользователя виртуальный принтер (например, стандартный программный принтер Microsoft Print to PDF или Microsoft XPS Document Writer) устройством по умолчанию.
Базовая частота современных серверных процессоров (например, 2.0–2.2 ГГц) рассчитана на автоматический динамический разгон ядер. Если на сервере 1С или сервере СУБД активен режим энергосбережения «Сбалансированный» (Balanced), процессорные ядра не успевают мгновенно повысить частоту при выполнении коротких однопоточных операций отрисовки интерфейса и сериализации данных.
Выполним следующие системные настройки:
При миграции информационной базы через файл выгрузки .dt в СУБД создаются пустые таблицы метаданных без накопленной статистики распределения данных. Проверим и скорректируем параметры сервера баз данных:
AUTO_CLOSE и AUTO_SHRINK. Включение AUTO_CLOSE заставляет SQL Server выгружать базу из памяти после закрытия последнего подключения, что порождает паузы при открытии объектов.tempdb на быстрый SSD/NVMe-накопитель и разделим файл данных tempdb.mdf на несколько файлов одинакового размера (по числу физических ядер процессора, обычно от 4 до 8 файлов) для предотвращения блокировок страниц распределения памяти PFS и SGAM.Cost Threshold for Parallelism (порог стоимости параллелизма) на уровень 30–50, чтобы оптимизатор СУБД не тратил ресурсы на построение параллельных планов выполнения для простых запросов инициализации форм.UPDATE STATISTICS) со 100% сканированием и дефрагментацию/реиндексацию таблиц.Накопленные пользовательские настройки, автосохранение положения колонок и история открытых форм могут создавать задержки при сопоставлении сохраненного состояния с метаданными клиент-серверной базы.
Выполним очистку:
%LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8).Если в конфигурации включен механизм RLS, при построении элементов управления на форме платформа проверяет права доступа на все типы ссылок, связанные с полями ввода и таблицами. В клиент-серверном режиме сложные условия RLS генерируют тяжелые подзапросы к таблицам прав.
Проверим скорость работы под учетной записью с полными административными правами без ограничений RLS. Если задержки пропадают, требуется оптимизация шаблонов ограничений доступа в ролях конфигурации.
Также после загрузки базы из файла .dt выполним полное Тестирование и исправление информационной базы в конфигураторе с обязательным включением опций «Реструктуризация таблиц информационной базы» и «Пересчет итогов».