Обработка по сути делает простую операцию, пробегает по всем проводкам и подменяет в аналитике статьи затрат по Дт 20, 23 счетов на указанную статью затрат. Никаких перерасчетов не производится.
В обработке нужно указать уже ранее выполненную регламентную операцию закрытия счетов 20, 23, 25, 26 и статью затрат, которую необходимо проставить. Так же можно указать обработке, чтобы она поставила признак ручного редактирования проводок документа, но последующее перезакрытие этой регламентной операции будет несколько неудобным, так как придется открыть проводки документа и снять флажок ручной корректировки проводок.
Думаю рассуждать на тему, что это глупая или нет операция тут не стоит.
Требование поступило - реализация выполнена без вмешательства в типовую.
В УПП, если не ошибаюсь данная вещь просто настраивается в параметрах учета и я не понимаю почему 1С, еще не реализовала такую настройку в БП.
UPD 29.11.2012
- Добавлена возможность отката изменений не перезакрывая период.
- Добавлено понятие статей затрат исключений, тоесть тех статей, которые не затрагиваются при замене статей на обобщенную статью затрат.
UPD 21.04.2014
Выложена в общественное пользование обработка для БП 3.0, а создана была очень давно.
UPD 10.03.2020
Обновлена обработка под БП 3.0.75.
Учтена такая ситуация, что при записи набора данных регистра Хозрасчетный, типовые алгоритмы при пустой сумме по НУ в проводках приравнивали ее к БУ из-за чего искажались суммы в НУ, выглядело это как задвоение оборотов по НУ.
Ближе в жизни, затраты упавшие на 25 счет в БУ распределяются на 20, 23 счета, а в НУ на 90 счет (косвенные расходы в НУ), в проводках Дт 20, 23 - Кт 25 в такой ситуации в НУ нули, раньше все работало нормально, а теперь типовые алгоритмы решили начать править суммы в НУ и несколько неудачно.
Те кто не хочет качать свежую обработку могут заменить в модуле формы это
Если БылиИзменения Тогда
Набор.Записать(Истина);
КонецЕсли;
На это
Если БылиИзменения Тогда
Набор.ДополнительныеСвойства.Вставить("СуммыНалоговогоУчетаЗаполнены", Истина);
Набор.Записать(Истина);
КонецЕсли;