Что делать, если тормозит подбор номенклатуры в 1С на PostgreSQL?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

Ситуация, когда форма подбора номенклатуры открывается несколько минут, является критической для работы бухгалтерии и склада. Особенно часто это проявляется в связке 1С:Предприятие 8.3 и PostgreSQL. В данной статье мы подробно разберем, как диагностировать причины «тормозов» и какие шаги предпринять для восстановления нормальной скорости работы системы.

Шаг 1. Точная диагностика проблемы

Прежде чем приступать к настройкам серверов, нам необходимо локализовать проблему. Проанализируем ситуацию: тормозит ли форма у всех пользователей или только у некоторых? Если проблема воспроизводится под разными учетными записями, значит, корень проблемы кроется в настройках СУБД или общих механизмах конфигурации.

Для поиска «узкого места» воспользуемся встроенным инструментом Замер производительности. Откроем конфигуратор, включим замер и выполним действие в пользовательском режиме. Как показывает практика, в 99% случаев виновником оказывается выполнение пакета запросов при инициализации формы. Рассмотрим пример кода, на котором чаще всего происходит затык:


// В обработке ПодборНоменклатуры основное время уходит на выполнение запроса
РезультатЗапроса = Запрос.ВыполнитьПакет();

Если замер показывает, что метод ВыполнитьПакет() занимает более 100 секунд, значит, планировщик PostgreSQL не может построить оптимальный план выполнения запроса из-за отсутствия актуальной статистики или неверных настроек.

Шаг 2. Регламентные операции и обслуживание PostgreSQL

Одной из самых частых причин медленной работы является «замусоривание» таблиц и неактуальность статистики. Разберем основные действия по обслуживанию базы данных:

  1. Выполнение ANALYZE: Это команда заставляет СУБД пересчитать распределение данных в таблицах. Без этого планировщик может выбрать крайне неэффективный способ соединения таблиц (например, сканирование всей таблицы вместо использования индекса). Рекомендуется выполнить full analyze для всей базы данных.
  2. Настройка регламентов: Убедимся, что на уровне СУБД настроены автоматические задания VACUUM и ANALYZE. Для 1С это критически важно, так как платформа постоянно создает и удаляет временные таблицы.
  3. Методика настройки: Проверим соответствие настроек PostgreSQL рекомендациям для 1С (например, по методике Антона Дорошкевича). Обратим внимание на параметры shared_buffers, work_mem и effective_cache_size.

Шаг 3. Оптимизация планировщика запросов (Join Collapse)

Для старых версий PostgreSQL (например, 9.6) крайне важно правильно настроить параметры планировщика, так как запросы в 1С могут быть очень сложными. Проанализируем следующие настройки в файле postgresql.conf:

Шаг 4. Очистка пользовательских настроек

Иногда причина кроется не в сервере, а в «удачных» настройках самого пользователя. Динамические списки в 1С сохраняют фильтры, сортировки и группировки. Если пользователь случайно установил сложный отбор по стропе или включил отображение в виде дерева на огромном справочнике, форма будет виснуть.

Выясним, помогает ли сброс настроек. Для этого выполним следующие действия:

  1. Зайдем в меню Администрирование — Настройки пользователей и прав.
  2. Перейдем в Настройки пользователей, выберем нужного сотрудника.
  3. Найдем настройки формы подбора номенклатуры и удалим их.

Также попробуем в самой форме подбора изменить вид списка: переключимся с «Дерева» на «Список». Группировки в динамических списках на больших объемах данных в PostgreSQL могут работать значительно медленнее.

Шаг 5. Проверка RLS и полнотекстового поиска

Если в базе включены ограничения на уровне записей (RLS), каждый запрос к номенклатуре дополняется сложными условиями проверки прав. Проанализируем ситуацию, запустив подбор под пользователем с полными правами. Если под полными правами тормозов нет — проблема в оптимизации шаблонов RLS.

Дополнительно проверим Полнотекстовый поиск. При открытии формы подбора система может пытаться инициализировать индекс поиска. Если индексы повреждены или требуют обновления, возникнет задержка. Рекомендуется обновить индекс через «Управление полнотекстовым поиском» или временно отключить его для проверки.

Шаг 6. Обновление инфраструктуры

Проанализируем используемое ПО. Сочетание Windows Server 2008 R2 и PostgreSQL 9.6 в современных реалиях является устаревшим. Новые версии платформы 1С (начиная с 8.3.22) оптимизированы под более современные СУБД (PostgreSQL 12-15).

Если регламентные операции не помогают, рассмотрим следующие шаги:

Таким образом, решение проблемы медленного подбора всегда носит комплексный характер: от «причесывания» базы данных командой ANALYZE до гигиены пользовательских настроек внутри самой 1С.

← На главную