Переход с редакции 2.0 на 3.0 в «1С:Бухгалтерия предприятия КОРП» часто сопровождается жалобами пользователей на медленную работу интерфейса. Одной из самых «тяжелых» форм становится список справочника Контрагенты. Ситуация, когда база перенесена на SSD, полнотекстовый поиск отключен, а справочник все равно открывается несколько десятков секунд, знакома многим администраторам. В этой статье мы подробно разберем, почему так происходит, и пройдем по шагам от простой настройки интерфейса до глубокого анализа запросов в отладчике.
Первое, на что нам следует обратить внимание — это механизм работы динамического списка. В управляемых формах 1С список не загружает все данные сразу, а подтягивает их порциями. Однако, если система настроена некорректно, она может пытаться выполнить избыточные вычисления для каждой строки. Проанализируем настройки формы:
Дерево или Иерархический список требует от системы дополнительных расчетов для отображения узлов. В версии КОРП, где учитываются обособленные подразделения, эти расчеты могут быть особенно сложными. Попробуем переключить вид в обычный Список.ИспользоватьВсегда.Если визуальные настройки не помогли, перейдем к инструментам разработчика. Нам необходимо понять, на каком этапе происходит «зависание»: при выполнении запроса на сервере или при отрисовке формы на клиенте. Выполним следующие действия:
Контрагенты, дождемся полной прорисовки списка и выключим замер.Проанализируем полученную таблицу. Нас интересуют строки с наибольшим значением в колонке «Чистое время». Особое внимание уделим процедуре ПриСозданииНаСервере. Если основное время уходит на выполнение методов типа ПроверитьКонтрагентов или ОбновитьСостояния, значит, проблема в фоновых проверках через интернет-сервисы.
В версии КОРП запрос динамического списка значительно сложнее, чем в ПРОФ. Он включает в себя левые соединения (LEFT JOIN) с регистрами сведений, такими как СостоянияКонтрагентов и КонтактнаяИнформация. Для файловых баз (даже на SSD) большое количество соединений в одном запросе — критический фактор замедления.
Разберем пример того, как может выглядеть «тяжелая» часть запроса, которую генерирует система:
ВЫБРАТЬ
СправочникКонтрагенты.Ссылка КАК Ссылка,
СправочникКонтрагенты.Наименование КАК Наименование,
РегистрСостояния.Состояние КАК СостояниеПроверки,
РегистрАдреса.Представление КАК Адрес
ИЗ
Справочник.Контрагенты КАК СправочникКонтрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияКонтрагентов КАК РегистрСостояния
ПО СправочникКонтрагенты.Ссылка = РегистрСостояния.Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК РегистрАдреса
ПО СправочникКонтрагенты.Ссылка = РегистрАдреса.Объект
И РегистрАдреса.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
Чтобы ускорить работу, мы можем зайти в конфигуратор, найти форму списка справочника и проверить свойства динамического списка. Убедимся, что:
ДинамическоеСчитываниеДанных.ОсновнаяТаблица четко указан Справочник.Контрагенты (это позволяет платформе использовать индексы основной таблицы).Часто «зависание» — это не медленная работа кода, а ожидание ответа от внешнего ресурса. 1С:Бухгалтерия 3.0 активно взаимодействует с серверами api.orgaddress.1c.ru и другими. Если у пользователя настроен прокси-сервер, который блокирует эти запросы, форма будет «висеть» до истечения таймаута соединения.
Выясним причину, временно отключив все внешние проверки:
Для баз объемом около 4 ГБ физическое состояние файла 1Cv8.1CD имеет решающее значение. После масштабного обновления с версии 2.0 структура таблиц изменилась, и данные могут быть сильно фрагментированы. Проанализируем состояние базы через «Тестирование и исправление»:
Тестирование и исправление со следующими опциями:
chdbfl.exe (хотя автор темы ее применял, повторная проверка после сжатия не будет лишней).Важный момент для системных администраторов: убедитесь, что папки с кэшем 1С (%LocalAppData%\1C\1cv8) добавлены в исключения антивируса. При открытии списка справочника 1С создает множество временных файлов, и их сканирование в реальном времени может замедлить процесс в 2–3 раза.
В КОРП-версии в справочнике Контрагенты используется реквизит ГоловнойКонтрагент. Это создает дополнительные связи в иерархии. Если в вашей базе много обособленных подразделений, стандартный запрос списка будет пытаться сопоставить каждого контрагента с его головной организацией. Рассмотрим возможность отключения отображения связей головной организации в списке, если бизнес-процесс позволяет это сделать. Это значительно упростит дерево запроса SQL (или внутреннего движка файловой базы) и вернет привычную скорость работы.