После обновления конфигурации 1С:Управление торговлей (например, при переходе с версии 11.2 на 11.3 или 11.4/11.5) пользователи нередко сталкиваются с ситуацией, когда процедура закрытия месяца и расчет себестоимости выполняются бесконечно долго. При этом программа не выдает сообщений об ошибках, а точки останова в типовом общем модуле РасчетСебестоимости не срабатывают. Разберем по шагам архитектуру выполнения этой операции, выясним причины зависания и научимся правильно отлаживать регламентные процедуры распределения затрат и партий.
В современных версиях УТ закрытие месяца выполняется асинхронно с помощью механизма фоновых заданий. Если в конфигураторе установлена стандартная точка останова, серверный процесс фонового задания просто игнорирует её при стандартных настройках отладки. Кроме того, расчет финансового результата представляет собой многоэтапный конвейер: до вызова процедур распределения дополнительных расходов и формирования себестоимости запускается этап партионного учета.
Если система зависает или зацикливается на этапе распределения партий, управление в модуль РасчетСебестоимости вообще не передается. Проанализируем, как правильно настроить среду разработки для перехвата выполнения.
Чтобы отладчик начал останавливаться в коде регламентных процедур закрытия месяца, выполним следующие действия:
-debug).После включения отладки фоновых заданий точки останова следует ставить не только в модуле РасчетСебестоимости, но и в модулях подсистемы партионного учета: ПартионныйУчетСервер, ПартионныйУчет и РасчетСебестоимостиПрикладныеАлгоритмы.
Вместо ожидания завершения фонового задания откроем Журнал регистрации в рабочей или тестовой базе. Выполним отбор по следующим параметрам:
Рассмотрим основные источники проблем, вызывающие зацикливание алгоритмов закрытия месяца после обновления конфигурации:
Товары организаций, Себестоимость товаров и Партии товаров организаций приводит к тому, что алгоритм списания партий по методу ФИФО входит в бесконечный цикл поиска приходного документа для покрытия расхода.Ключи аналитики учета номенклатуры и Виды запасов внутренние запросы распределения партий формируют избыточные декартовы произведения, многократно увеличивая объем обрабатываемых строк.Разберем последовательность действий для восстановления работоспособности закрытия месяца:
НСИ и администрирование — Обслуживание — Результаты обновления программы. Убедимся, что все процедуры дополнительной обработки данных успешно завершены.Задания к расчету себестоимости. Проанализируем колонку даты документа и периода. Удалим некорректные записи за старые исторические периоды, оставив задания только по текущему закрываемому месяцу.Ведомость по товарам на складах и Ведомость по товарам организаций за расчетный период с группировкой по регистратору. Устраним все выявленные отрицательные остатки.Расчет себестоимости товаров (раздел Финансовый результат и контроллинг — Регламентные документы). Создадим документ вручную, выберем расчетный месяц, установим вариант расчета Окончательный расчет и выполним его проведение. При возникновении ошибки система выдаст диагностическое сообщение непосредственно в диалоговом окне или остановится на установленной точке останова.