Почему закрытие месяца в 1С:Комплексная автоматизация 2 выполняется бесконечно долго?

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

Нередко пользователи и администраторы систем 1С сталкиваются с ситуацией, когда регламентная операция «Закрытие месяца» выполняется часами или даже сутками, а в итоге завершается ошибкой или прерывается администратором. Особенно остро эта проблема стоит на крупных, высоконагруженных базах, работающих в клиент-серверном варианте, например, под управлением Linux и СУБД PostgreSQL. Давайте вместе разберемся, каковы могут быть причины такого поведения системы и как пошагово диагностировать и устранить проблему.

Проанализируем типичный случай: в 1С:Комплексная автоматизация 2 процедура закрытия месяца для конкретного квартала (например, третьего) запускается и работает более 10 часов без видимого результата, после чего сеанс принудительно завершается. При этом предыдущие периоды закрывались нормально. База серверная, работает на связке Linux + PostgreSQL, количество одновременных пользователей — около 30.

Такая ситуация требует комплексного подхода, так как причина может крыться как в данных, так и в технических настройках окружения. Рассмотрим основные направления для поиска неисправности.

Шаг 1. Первичная диагностика и стандартные процедуры

Прежде чем переходить к сложному техническому анализу, всегда стоит выполнить несколько базовых проверок. Иногда решение лежит на поверхности.

  1. Очистка кэша. Первое, что рекомендуют сделать в подобных случаях, — это очистить кэш 1С. Накопленные кэшированные данные иногда могут приводить к некорректной работе алгоритмов. Это редко решает проблему с производительностью, но является обязательным первым шагом.
  2. Тестирование и исправление (ТИИ). Логические или структурные ошибки в базе данных могут приводить к зацикливанию или неоптимальному выполнению запросов. Запустите утилиту «Тестирование и исправление информационной базы» (в режиме конфигуратора). Важно: перед запуском обязательно сделайте резервную копию базы данных.
  3. Проверка даты запрета редактирования. Убедимся, что на закрываемый период не установлена дата запрета изменения данных. Хотя это маловероятно, стоит проверить настройки в разделе Администрирование – Настройки пользователей и прав – Даты запрета изменения.

Если эти простые действия не принесли результата, как и в разбираемом нами случае, переходим к более глубокому анализу.

Шаг 2. Анализ данных проблемного периода

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

Шаг 3. Глубокий технический анализ серверной части

Если анализ данных не дал результатов, проблема почти наверняка кроется в технической части: взаимодействии платформы 1С, сервера приложений и сервера СУБД. Для связки Linux и PostgreSQL это особенно актуально.

Настройки сервера СУБД PostgreSQL

Стандартные настройки PostgreSQL часто не подходят для высоконагруженных баз 1С. Нехватка выделенной памяти для обработки сложных запросов — одна из главных причин «зависания» ресурсоемких операций.

Что нужно проверить в конфигурационном файле postgresql.conf:

  1. shared_buffers — основной буфер кэша данных. Рекомендуемое значение — около 25% от общего объема оперативной памяти сервера СУБД.
  2. work_mem — память, выделяемая для операций сортировки, хэширования. Для закрытия месяца, где много сложных соединений и сортировок, низкое значение этого параметра может приводить к тому, что СУБД начинает сбрасывать временные данные на медленный диск, что резко снижает производительность. Попробуйте временно увеличить это значение для сеанса, выполняющего закрытие.
  3. effective_cache_size — подсказка для планировщика запросов о том, сколько памяти доступно для кэширования в операционной системе. Обычно устанавливается в 50-75% от общего объема ОЗУ.

Также настоятельно рекомендуется использовать специализированные сборки PostgreSQL, адаптированные для работы с 1С, например, Postgres Pro. Они содержат патчи, которые значительно ускоряют выполнение специфических для платформы 1С запросов.

Блокировки и параллельные процессы

Закрытие месяца — это сложный процесс, состоящий из множества последовательных регламентных операций. Зависание может быть вызвано блокировкой таблиц другими процессами.

Анализ производительности и «тяжелых» запросов

Если процесс не заблокирован, а именно «крутится», значит, он выполняет некий очень ресурсоемкий запрос к базе данных.

  1. Определите этап зависания. В окне «Закрытие месяца» можно увидеть, на какой именно операции происходит зависание (например, «Расчет себестоимости», «Распределение затрат»). Это сузит область поиска.
  2. Используйте Технологический журнал 1С. Это самый мощный инструмент для поиска проблем производительности. Настроив его на отслеживание длительных запросов к СУБД (событие DBPOSTGRS с условием по длительности), можно поймать тот самый SQL-запрос, который выполняется аномально долго.
  3. Анализ плана запроса. Получив текст «тяжелого» запроса, можно проанализировать его план выполнения непосредственно в PostgreSQL (с помощью команды EXPLAIN ANALYZE). Неэффективный план (например, полный перебор таблицы вместо использования индекса) — частая причина проблем. Это может быть связано с устаревшей статистикой по таблицам.
  4. Обновление статистики и реиндексация. Для СУБД PostgreSQL критически важно иметь актуальную статистику по таблицам для построения оптимальных планов запросов. Выполните команду ANALYZE для всей базы данных. В некоторых случаях может помочь полная перестройка индексов (REINDEX) для самых больших и активно используемых таблиц регистров (например, РегистрНакопления.СебестоимостьТоваров, РегистрНакопления.ПартииТоваровОрганизаций).

Версии платформы и конфигурации

Наконец, нельзя исключать проблемы, связанные с конкретными версиями ПО. Как справедливо отмечают на форумах, проблема могла появиться после обновления.

Проверьте, не было ли обновлений (платформы 1С, конфигурации, операционной системы, СУБД) между успешным закрытием второго квартала и проблемным запуском для третьего. Известны случаи, когда в новых релизах платформы менялась логика генерации запросов, что в сочетании с определенной версией PostgreSQL приводило к деградации производительности. Проверьте на сайте 1С информацию о рекомендуемых версиях платформы и СУБД для вашей конфигурации.

Подводя итог, можно сказать, что бесконечное закрытие месяца — это симптом, за которым может стоять целый комплекс причин. Решение требует методичного подхода: от простых проверок к сложному техническому анализу серверной инфраструктуры и данных.

← На главную