Тем, у кого этой проблемы нет, читать это не стоит, ибо получилось слишком многабукав, так что чтобы прорваться через них, надо быть здорово мотивированным имеющейся проблемой, а проблема весьма специфическая и что-то похожее даже у меня вряд ли встретится. В общем, я вас предупредил. Итак:
Речь про УПП 1.3.62.2, управленческий учёт.
Учётная политика: оценка МПЗ - по средней, распределение затрат - директ-костинг, расчет себестоимости - по подразделениям, итерационный расчёт затрат встречного выпуска не установлен.
У нас многопередельный учёт (расчёт себестоимости говорит о 36 переделах) и периодически бухгалтера сталкивались с мелкими проблемами, типа остаётся на полтора доллара незавершёнки, но сильно по этому поводу не напрягались. Для них главное было закрыть крупные косяки, которые появлялись из-за того, что в Требовании-накладной и ОПзС указывались разные номенклатурные группы, либо из-за косяков в самом ОПзС (одна и та же номенклатура в материалах и продукции, несоответствия табличных частей Продукция, Материалы и Распределение материалов друг-другу и т.п.). Первая проблема отлавливалась отчётами, а вторую я решил программной проверкой перед записью ОПзС.
Проблема с партиями существовала уже несколько лет, но её просто не замечали, бухгалтерии было достаточно того, что закрываются (ну, почти) регистры ВыпускПродукции и Затраты.
Гугление интернета выдало не то, чтобы совсем ничего, но то, что выдалось, либо было вопросом на форуме, оставшимся без ответа, либо относилось году этак к 2006-му, либо предлагало задать параметры, которых в моей конфигурации уже не было, либо в конечном итоге не помогало, либо все эти "но" в какой-либо комбинации.
Первым делом я попробовал на копии базы последовать тем советам, которые всё-таки можно было применить к моей ИБ, а именно: убрал все комплектации (обработкой заменил каждую на оприходование комплекта по цене 100) и все подозрительные остатки (количество<=0 ИЛИ Стоимость<0) по регистру ПартииТоваровНаСкладах - списал "в космос" концом предыдущего месяца. Не помогло.
Потом попробовал дважды указать в документе действие "Расчет затрат встречного выпуска по подразделениям" - это убрало хвосты из незавершёнки, но проблемы в регистре партий остались.
Попробовал врубить итерационный расчёт затрат встречного выпуска в учётной политике - не помогло.
Попробовал провести перед расчётом себестоимости документ Корректировка стоимости списания (потому что написано, что его надо проводить, если учёт МПЗ "По средней стоимости", а у меня как раз по средней) - не помогло. Помогало, если провести его после расчёта себестоимости, но тогда появляются суммы в регистре Затраты.
Внимательно посмотрев на движения, которые Расчёт себестоимости делает по одному из проблемных товаров, я обнаружил, что он корректирует движения только одной из двух требований-накладных и на остатках подвисает как раз сумма, на которую должны были быть скорректированы движения второго требования. Становится понятнее: в отладчике отловил момент, когда делаются движения по интересующему меня товару, скопировал в консоль запросов запрос из процедуры, которая вызвала эту запись, сделал в нём отбор по этому товару, выкинул лишние поля и таблицы и проанализировал то, что осталось. А осталось условие, которое убирало из результатов запроса те записи, в которых были регистраторы, указанные в регистре "Корректировка встречного выпуска продукции", движения в котором делает тот же Расчет себестоимости.
В общем, что это за регистр и зачем там записи. Представьте себе производство, некая продукция которого может пойти на общепроизводственные расходы (ОПР). В этом случае мы рассчитываем себестоимость, распределяя на неё в том числе ОПР, а затем корректируем движения документов на разницу между посчитанной себестоимостью и тем, что двинули сами документы. В том числе мы должны скорректировать движения требования-накладной, которая передаёт продукцию на ОПР. В результате у нас на затратах, которые мы вроде как распределили на предыдущем этапе, снова оказывается сумма ОПР. У этой задачи два решения: либо повторять имеющуюся процедуру "распределили ОПР - скорректировали движения" до тех пор, пока всё не сойдётся к нулевой сумме корректировки, либо написать алгоритм так, чтобы он сразу рассчитывал окончательные суммы. В 1С выбрали третий вариант - не решать. Для этого они сделали регистр, в который запихивают все Требования-накладные, которые передают продукцию на ОПР и в процедуре корректировки списания просто их игнорируют. В большинстве случаев (у меня таких около тысячи в месяц) остаток списывается не "в ноль", так что проблема (чуть-чуть не та сумма) незаметна, но есть такие, которые списываются полностью - они и повисают.
В результате стало понятно, что как минимум нужно исключить эти исключения, для чего из списка выполняемых действий документа "Расчёт себестоимости" вычёркиваем "Определение продукции, исключаемой из базы распределения". Затем добавляем столько действий "Распределение косвенных расходов по подразделениям", сколько нужно для полного закрытия регистра "Затраты" по ОПР (у меня директ-костинг, так что этом этапе закрываются только ОПР). Количество определяется опытным путём. Мне, как вы видите на скриншоте, понадобилось 6. В другом месяце может понадобиться больше или меньше.
Между этими действиями может понадобиться вставить "Расчет затрат встречного выпуска по подразделениям". Тут тоже зависит от ситуации. Например, в копии, в которой я прибил комплектации, этого не потребовалось, а в рабочей базе пришлось, иначе оставался хвост в регистре ВыпускПродукции.
Ну, вот и всё. Разве что нужно добавить, что определение количества распределений косвенных расходов лучше проводить на копии, ибо документ проводится долго и экспериментировать на рабочей базе будет излишне жестоко по отношению к пользователям.