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