Почему не рассчитывается себестоимость выпущенной продукции в 1С:КА 2.4 при закрытии месяца?

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

В процессе работы с конфигурацией 1С:Комплексная автоматизация 2.4 (а также 1С:ERP) пользователи часто сталкиваются с ситуацией, когда после выполнения процедуры «Закрытие месяца» себестоимость по некоторым позициям выпущенной продукции остается нулевой или не рассчитывается вовсе. При этом система не всегда выдает явные ошибки в протоколе выполнения операций. Рассмотрим подробнее, почему возникает эта проблема и как ее решить, основываясь на практическом опыте специалистов.

Проанализируем механизм регистрации данных для расчета

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

Когда мы создаем, изменяем или проводим документ ВыпускПродукции, система должна автоматически создать запись в этом регистре. Эта запись служит сигналом для регламентной операции «Расчет себестоимости», что данные по конкретной организации, периоду и разделу учета требуют пересчета. Если по какой-то причине (программный сбой, некорректный импорт данных, прерывание транзакции) запись в очереди не появилась или была удалена, алгоритм закрытия месяца просто «проигнорирует» документ выпуска, считая, что пересчитывать по нему нечего.

Выясним причину влияния перепроведения документов

Как показывает практика, массовое перепроведение документов «лечит» данную проблему. Разберем, почему это происходит. При проведении документа в коде конфигурации срабатывают механизмы подписок на события, которые принудительно проверяют и актуализируют записи в ОчередьРасчетаСебестоимости. Если документ был проведен, но не попал в расчет, повторное (или программное) перепроведение заставляет систему заново зарегистрировать необходимость расчета.

Однако ручное перепроведение сотен документов — задача трудозатратная. Для автоматизации этого процесса программисты часто используют простые обработки. Рассмотрим пример логики такой обработки:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ВыпускПродукции.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.ВыпускПродукции КАК ВыпускПродукции
    |ГДЕ
    |	ВыпускПродукции.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |	И ВыпускПродукции.Проведен";

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Объект.ПериодРегистрации));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.ПериодРегистрации));

Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    ОбъектДок = Результат.Ссылка.ПолучитьОбъект();
    Попытка
        // Снимаем с проведения и проводим заново для актуализации регистров
        ОбъектДок.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);
        Сообщить("Документ " + Результат.Ссылка + " успешно перепроведен");
    Исключение
        Сообщить("Ошибка при обработке документа " + Результат.Ссылка + ": " + ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;

Разберем влияние хронологии и времени документов

В системах 1С:КА 2.4 крайне важна последовательность документов внутри одной секунды. Проанализируем ситуацию: если документ СписаниеЗатратНаВыпуск имеет то же время, что и ВыпускПродукции, или, что еще критичнее, записан в базе данных на долю секунды раньше (в рамках одной позиции), алгоритм распределения затрат может не увидеть базу для распределения.

Рекомендуется придерживаться следующей логики:

  1. Документы поступления материалов и первичных затрат.
  2. Документы ВыпускПродукции (рекомендуется устанавливать время на начало дня или строго раньше документов распределения).
  3. Документы СписаниеЗатратНаВыпуск или РаспределениеРасходов (в конце дня).

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

Посмотрим на проблему обособленного учета (Назначения)

Еще один важный момент, который стоит проверить — использование механизма «Назначение». Если продукция выпускается под конкретный заказ клиента (включено обособление), а затраты списываются без указания этого назначения, система не сможет связать их автоматически. В версиях 2.4.14 встречались ошибки, когда ключи аналитики номенклатуры не обновлялись корректно при первом проведении. Программное обновление объектов заставляет систему пересчитать КлючАналитикиНоменклатуры и КлючАналитикиУчетаЗатрат, что восстанавливает связь между выпуском и затратами.

Проверим настройки распределения и регистры партий

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

Рекомендации по диагностике перед закрытием месяца

Чтобы не сталкиваться с «сюрпризами» в конце месяца, мы рекомендуем использовать встроенные инструменты диагностики. Проанализируем отчет «Контроль движения документов». Он позволяет увидеть документы, которые не создали записей в целевых регистрах. Также крайне полезен технический отчет «Сверка данных партионного учета и регистров накопления». Если отчет показывает расхождения, это верный признак того, что себестоимость рассчитана не будет, и требуется перепроведение документов для восстановления целостности данных в регистрах ДвиженияНоменклатураДоходыРасходы и партионных таблицах.

Резюмируя: если вы столкнулись с тем, что себестоимость в КА 2.4 не рассчитывается без видимых причин, первым шагом выполните программное перепроведение документов выпуска и списания затрат за проблемный период. Это актуализирует ОчередьРасчетаСебестоимости и обновит ключи аналитики, что в большинстве случаев решает проблему без глубокой отладки кода.

← На главную