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