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