Почему сильно замедлилось формирование отчетов по валовой прибыли в УТ 11?

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

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

Анализ причин замедления

Основная причина кроется в архитектуре регистра накопления Выручка и себестоимость продаж. В отличие от классических регистров, здесь не всегда присутствуют итоги за произвольные периоды, что делает отчеты критически зависимыми от объема первичных данных (движений документов) в текущем месяце.

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

  1. Сканирование больших таблиц первичных записей регистра вместо обращения к агрегированным итогам.
  2. «На лету» вычислять показатели себестоимости, которые в закрытых периодах уже рассчитаны регламентными операциями.
  3. Использование неэффективных планов запросов СУБД, так как статистика по огромным таблицам с транзакциями текущего месяца может быть неактуальной или деградировать.

Шаг 1: Проверка регламентных заданий

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

Шаг 2: Пересчет итогов регистра накопления

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

  1. Откройте консоль 1С:Предприятие в режиме Конфигуратора или используйте обработку Тестирование и исправление (в пользовательском режиме через администрирование).
  2. Выберите пункт Пересчет итогов.
  3. Выберите нужный регистр накопления: Выручка и себестоимость продаж.
  4. Запустите процесс. Эта операция принудительно перестроит физические таблицы итогов, что часто помогает оптимизатору SQL «увидеть» нужные индексы и значительно ускорить выборку данных.

Шаг 3: Технологический анализ и мониторинг

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

Пример анализа ситуации через код (для отладки запроса в консоли):


// Пример получения данных регистра для анализа
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РН.Период,
    |	РН.СуммаВыручки,
    |	РН.СуммаСебестоимости
    |ИЗ
    |	РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК РН
    |ГДЕ
    |	РН.Период МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", ТекущаяДата());
Результат = Запрос.Выполнить().Выгрузить();

Дополнительные рекомендации по оптимизации

Для предотвращения подобных ситуаций в будущем рекомендуем придерживаться следующих правил:

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

← На главную