Ситуация, когда форма подбора номенклатуры открывается несколько минут, является критической для работы бухгалтерии и склада. Особенно часто это проявляется в связке 1С:Предприятие 8.3 и PostgreSQL. В данной статье мы подробно разберем, как диагностировать причины «тормозов» и какие шаги предпринять для восстановления нормальной скорости работы системы.
Прежде чем приступать к настройкам серверов, нам необходимо локализовать проблему. Проанализируем ситуацию: тормозит ли форма у всех пользователей или только у некоторых? Если проблема воспроизводится под разными учетными записями, значит, корень проблемы кроется в настройках СУБД или общих механизмах конфигурации.
Для поиска «узкого места» воспользуемся встроенным инструментом Замер производительности. Откроем конфигуратор, включим замер и выполним действие в пользовательском режиме. Как показывает практика, в 99% случаев виновником оказывается выполнение пакета запросов при инициализации формы. Рассмотрим пример кода, на котором чаще всего происходит затык:
// В обработке ПодборНоменклатуры основное время уходит на выполнение запроса
РезультатЗапроса = Запрос.ВыполнитьПакет();
Если замер показывает, что метод ВыполнитьПакет() занимает более 100 секунд, значит, планировщик PostgreSQL не может построить оптимальный план выполнения запроса из-за отсутствия актуальной статистики или неверных настроек.
Одной из самых частых причин медленной работы является «замусоривание» таблиц и неактуальность статистики. Разберем основные действия по обслуживанию базы данных:
full analyze для всей базы данных.VACUUM и ANALYZE. Для 1С это критически важно, так как платформа постоянно создает и удаляет временные таблицы.shared_buffers, work_mem и effective_cache_size.Для старых версий PostgreSQL (например, 9.6) крайне важно правильно настроить параметры планировщика, так как запросы в 1С могут быть очень сложными. Проанализируем следующие настройки в файле postgresql.conf:
Иногда причина кроется не в сервере, а в «удачных» настройках самого пользователя. Динамические списки в 1С сохраняют фильтры, сортировки и группировки. Если пользователь случайно установил сложный отбор по стропе или включил отображение в виде дерева на огромном справочнике, форма будет виснуть.
Выясним, помогает ли сброс настроек. Для этого выполним следующие действия:
Также попробуем в самой форме подбора изменить вид списка: переключимся с «Дерева» на «Список». Группировки в динамических списках на больших объемах данных в PostgreSQL могут работать значительно медленнее.
Если в базе включены ограничения на уровне записей (RLS), каждый запрос к номенклатуре дополняется сложными условиями проверки прав. Проанализируем ситуацию, запустив подбор под пользователем с полными правами. Если под полными правами тормозов нет — проблема в оптимизации шаблонов RLS.
Дополнительно проверим Полнотекстовый поиск. При открытии формы подбора система может пытаться инициализировать индекс поиска. Если индексы повреждены или требуют обновления, возникнет задержка. Рекомендуется обновить индекс через «Управление полнотекстовым поиском» или временно отключить его для проверки.
Проанализируем используемое ПО. Сочетание Windows Server 2008 R2 и PostgreSQL 9.6 в современных реалиях является устаревшим. Новые версии платформы 1С (начиная с 8.3.22) оптимизированы под более современные СУБД (PostgreSQL 12-15).
Если регламентные операции не помогают, рассмотрим следующие шаги:
Chimney Offload State иногда помогает устранить микро-задержки между сервером приложений и СУБД.Таким образом, решение проблемы медленного подбора всегда носит комплексный характер: от «причесывания» базы данных командой ANALYZE до гигиены пользовательских настроек внутри самой 1С.