В конфигурациях 1С, использующих классический партионный учет (например, Управление торговым предприятием, Управление производственным предприятием, Управление торговлей 10.3), нередко возникает ситуация: после поступления и дополнительных расходов себестоимость единицы сформирована, но при продаже (например, документом Отчет о розничных продажах) в определенном периоде подставляется совершенно другая сумма списания. При этом за предшествующие или последующие месяцы расчет выполняется корректно, а стандартное перепроведение документов цепочки не дает результата.
Разберем детально, почему это происходит, как провести диагностику и какими способами можно восстановить правильный расчет партий.
Прежде чем приступать к низкоуровневой диагностике базы данных, проверим типовые ошибки ведения учета, которые нарушают алгоритм расчета партий:
Поступление доп. расходов должен быть введен строго до оформления расхода хотя бы части партии. Если расходы оформлены задним числом после продажи, себестоимость списания уже зафиксирована без учета этих затрат.Корректировка стоимости списания товаров). Если за выбранный месяц регламентная процедура еще не запускалась, себестоимость останется скользящей.ПартииТоваровНаСкладах может остаться суммовой остаток при нулевом остатке количества. При следующем первом списании эта оставшаяся сумма полностью добавляется к списываемой партии, вызывая скачок себестоимости.Списанные товары. В таком случае расчет выполняется только после последовательного запуска регламентной обработки Проведение по партиям за весь период.Для выявления источника сбоя проанализируем движения товара по партиям:
Ведомость по партиям товаров на складах), настроив группировки строк: номенклатура, склад, документ оприходования (партия), а в детальных записях — регистратор. Это позволит увидеть, с какой конкретно партии и по какой цене произошло списание.Остатки на ту же дату выдает другую величину, имеет место нарушение целостности таблицы итогов СУБД.Списанные товары. При наличии «зависших» некорректных записей алгоритм списания партий не может штатно сопоставить партии списания.Если методологических ошибок нет, перепроведение документов выполнено, но списание в конкретном месяце все равно дает сбойную себестоимость, причина кроется в рассинхронизации таблиц итогов регистра накопления или повреждении внутренних индексов СУБД. Виртуальные таблицы остатков платформы 1С строят срез на базе предопределенных точек итогов. При повреждении записей итогов за конкретный месяц платформа передает в расчет искаженную сумму.
Рассмотрим два способа решения проблемы: быстрый программный пересчет и полное тестирование базы.
Чтобы не тратить часы на полное обслуживание крупной информационной базы, можно вызвать принудительный пересчет итогов для конкретных партионных регистров с помощью встроенного языка 1С. Выполним следующий код во внешней обработке:
РегистрыНакопления.ПартииТоваровНаСкладах.ПересчитатьИтоги();
РегистрыНакопления.ТоварыНаСкладах.ПересчитатьИтоги();
Данный метод принудительно пересчитывает агрегаты только для указанных регистров накопления, после чего документ расхода необходимо перепровести.
Если стандартное управление итогами не дало результата из-за разрушения физических индексов таблиц СУБД, используем комплексную утилиту конфигуратора. Выполним следующие шаги:
После завершения реструктуризации и восстановления индексов перепроведем документ реализации (или Отчет о розничных продажах). Месячный срез остатков будет рассчитываться корректно, и себестоимость партии встанет на правильное значение.