При работе в программе 1С:ERP Управление предприятием редакции 2.4 крупные производственные компании часто сталкиваются с неприятной ситуацией. Длительный этап производства начинается в одном квартале (например, в январе), а завершается только в следующем (например, в апреле). Все материалы были переданы в производство еще в январе, первый квартал успешно закрыт и сдан, а в апреле диспетчер меняет статус этапа на «Завершен».
Сразу после этого система при закрытии апреля начинает требовать отразить документ в регламентированном учете за январь и полностью пересчитать себестоимость за весь первый квартал. Давайте подробно разберем, почему возникает эта архитектурная коллизия, как она устроена изнутри и какими способами можно решить эту проблему на практике.
Для того чтобы понять природу этой ошибки, проанализируем поведение системы при проведении документа ЭтапПроизводства. Нам необходимо обратить внимание на структуру хранения данных.
В отличие от простых документов, у этапа производства даты потребления материалов и даты выпуска продукции фиксируются непосредственно в табличных частях (ТЧ), а не только в шапке документа. Когда в открытом периоде (в апреле) пользователь меняет статус этапа на «Завершен», программа инициирует запись и проведение документа. При этом происходят следующие действия:
ДокументыКОтражениюВРеглУчете именно датами фактического расхода и выпуска (январем).ЗаданияКЗакрытиюМесяца и ЗаданияКРасчетуСебестоимости создаются новые записи на январь.В результате бухгалтер получает «слетевшее» закрытие января, а система блокирует расчет себестоимости за апрель, требуя последовательного пересчета всех месяцев, начиная с января.
Рассмотрим подробнее три основных способа решения этой проблемы: от оперативного обхода до архитектурного исправления.
Самый надежный способ избежать данной проблемы в версиях ERP 2.4 — это исключить генерацию проводок по бухгалтерскому учету непосредственно из самого документа ЭтапПроизводства. Для этого применяется схема работы через цеховые кладовые.
Давайте разберем этот процесс по шагам:
ПеремещениеТоваров. Этот документ оформляется в январе и сразу делает проводку по дебету счета 20 и кредиту счета 10. Таким образом, затраты зафиксированы в январе, и эта операция закрыта.ЭтапПроизводства в качестве склада входа и склада выхода указывается одна и та же цеховая кладовая подразделения. В этом случае сам этап не производит списания материалов со складов общего учета и не генерирует проводки регл. учета в январе.ПередачаПродукцииИзПроизводства (или перемещением). Данный документ создается в апреле и делает проводку Дебет 43 — Кредит 20 апрелем.Что делать, если этап уже был завершен, закрытый период «слетел», а пересчитывать первый квартал категорически нельзя из-за сданной отчетности? В этой ситуации нам поможет ручная корректировка регистров заданий.
Проанализируем алгоритм исправления:
ЗаданияКЗакрытиюМесяца.Месяц (выбираем январь) и по объекту, который вызвал изменение (документ ЭтапПроизводства).ЗаданияКРасчетуСебестоимости.Для автоматизации этого процесса или при регулярном возникновении подобных ситуаций программисты могут написать обработку, которая очищает заблокированные периоды от ложных заданий. Пример программного кода для очистки набора записей регистра:
// Пример очистки ложных заданий к расчету себестоимости за закрытый период
НачалоМесяца = '20240101000000'; // Январь
НаборЗаписей = РегистрыСведений.ЗаданияКРасчетуСебестоимости.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(НачалоМесяца);
НаборЗаписей.Прочитать();
ТаблицаЗаписей = НаборЗаписей.Выгрузить();
КоличествоДоУдаления = ТаблицаЗаписей.Количество();
// Удаляем строки, связанные с ошибочно проведенными длительными этапами
Индекс = ТаблицаЗаписей.Количество() - 1;
Пока Индекс >= 0 Цикл
СтрокаЗаписи = ТаблицаЗаписей[Индекс];
Если СтрокаЗаписи.ДокументИсточник.Метаданные().Имя = "ЭтапПроизводства2_4" Тогда
ТаблицаЗаписей.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Если ТаблицаЗаписей.Количество() <> КоличествоДоУдаления Тогда
НаборЗаписей.Загрузить(ТаблицаЗаписей);
НаборЗаписей.Записать(Истина);
Сообщить("Ложные задания к расчету себестоимости успешно удалены.");
КонецЕсли;
После очистки указанных регистров состояние закрытия января в рабочем месте «Закрытие месяца» вернется в статус «Выполнено успешно», и мы сможем рассчитать себестоимость апреля без пересчета прошлых периодов.
Если ваша компания планирует или уже осуществляет переход на редакцию ERP 2.5, то данная проблема решается на уровне платформенной архитектуры конфигурации. Разработчики фирмы «1С» кардинально переработали учет длительного производства:
Таким образом, для стабильной работы на старых релизах ERP 2.4 рекомендуется использовать схему с цеховыми кладовыми (Решение 1) как наиболее методологически верную и не требующую доработки кода конфигурации.