В процессе работы с конфигурацией 1С:Комплексная автоматизация 2.4 (а также 1С:ERP) пользователи часто сталкиваются с ситуацией, когда после выполнения процедуры «Закрытие месяца» себестоимость по некоторым позициям выпущенной продукции остается нулевой или не рассчитывается вовсе. При этом система не всегда выдает явные ошибки в протоколе выполнения операций. Рассмотрим подробнее, почему возникает эта проблема и как ее решить, основываясь на практическом опыте специалистов.
В архитектуре систем 1С на платформе 2.4 расчет себестоимости — это сложный многоэтапный процесс, который сильно зависит от корректности данных в промежуточных регистрах. Одной из главных причин пропуска документов при расчете является состояние специального служебного регистра сведений — ОчередьРасчетаСебестоимости.
Когда мы создаем, изменяем или проводим документ ВыпускПродукции, система должна автоматически создать запись в этом регистре. Эта запись служит сигналом для регламентной операции «Расчет себестоимости», что данные по конкретной организации, периоду и разделу учета требуют пересчета. Если по какой-то причине (программный сбой, некорректный импорт данных, прерывание транзакции) запись в очереди не появилась или была удалена, алгоритм закрытия месяца просто «проигнорирует» документ выпуска, считая, что пересчитывать по нему нечего.
Как показывает практика, массовое перепроведение документов «лечит» данную проблему. Разберем, почему это происходит. При проведении документа в коде конфигурации срабатывают механизмы подписок на события, которые принудительно проверяют и актуализируют записи в ОчередьРасчетаСебестоимости. Если документ был проведен, но не попал в расчет, повторное (или программное) перепроведение заставляет систему заново зарегистрировать необходимость расчета.
Однако ручное перепроведение сотен документов — задача трудозатратная. Для автоматизации этого процесса программисты часто используют простые обработки. Рассмотрим пример логики такой обработки:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВыпускПродукции.Ссылка КАК Ссылка
|ИЗ
| Документ.ВыпускПродукции КАК ВыпускПродукции
|ГДЕ
| ВыпускПродукции.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И ВыпускПродукции.Проведен";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Объект.ПериодРегистрации));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Объект.ПериодРегистрации));
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
ОбъектДок = Результат.Ссылка.ПолучитьОбъект();
Попытка
// Снимаем с проведения и проводим заново для актуализации регистров
ОбъектДок.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ " + Результат.Ссылка + " успешно перепроведен");
Исключение
Сообщить("Ошибка при обработке документа " + Результат.Ссылка + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
В системах 1С:КА 2.4 крайне важна последовательность документов внутри одной секунды. Проанализируем ситуацию: если документ СписаниеЗатратНаВыпуск имеет то же время, что и ВыпускПродукции, или, что еще критичнее, записан в базе данных на долю секунды раньше (в рамках одной позиции), алгоритм распределения затрат может не увидеть базу для распределения.
Рекомендуется придерживаться следующей логики:
ВыпускПродукции (рекомендуется устанавливать время на начало дня или строго раньше документов распределения).СписаниеЗатратНаВыпуск или РаспределениеРасходов (в конце дня).Перепроведение часто выстраивает документы в правильном стандартном порядке, предусмотренном логикой системы, что и приводит к успешному расчету себестоимости.
Еще один важный момент, который стоит проверить — использование механизма «Назначение». Если продукция выпускается под конкретный заказ клиента (включено обособление), а затраты списываются без указания этого назначения, система не сможет связать их автоматически. В версиях 2.4.14 встречались ошибки, когда ключи аналитики номенклатуры не обновлялись корректно при первом проведении. Программное обновление объектов заставляет систему пересчитать КлючАналитикиНоменклатуры и КлючАналитикиУчетаЗатрат, что восстанавливает связь между выпуском и затратами.
Если массовое перепроведение не помогло по некоторым позициям, следует проанализировать регистр накопления ПартииПрочихРасходов. Именно в нем фиксируются затраты, которые должны лечь на себестоимость. Проверьте следующие моменты:
ПартииПрочихРасходов с пустыми измерениями, что часто случается при обновлении релиза или после некорректных корректировок регистров.Чтобы не сталкиваться с «сюрпризами» в конце месяца, мы рекомендуем использовать встроенные инструменты диагностики. Проанализируем отчет «Контроль движения документов». Он позволяет увидеть документы, которые не создали записей в целевых регистрах. Также крайне полезен технический отчет «Сверка данных партионного учета и регистров накопления». Если отчет показывает расхождения, это верный признак того, что себестоимость рассчитана не будет, и требуется перепроведение документов для восстановления целостности данных в регистрах ДвиженияНоменклатураДоходыРасходы и партионных таблицах.
Резюмируя: если вы столкнулись с тем, что себестоимость в КА 2.4 не рассчитывается без видимых причин, первым шагом выполните программное перепроведение документов выпуска и списания затрат за проблемный период. Это актуализирует ОчередьРасчетаСебестоимости и обновит ключи аналитики, что в большинстве случаев решает проблему без глубокой отладки кода.