В процессе работы с конфигурацией 1С:Управление торговлей 11.5 многие пользователи и технические специалисты сталкиваются с неочевидным поведением системы: документ Возврат товаров между организациями, находясь в статусе «не проведен» (или просто записан), внезапно создает записи в регистре накопления Резервы товаров организаций. На первый взгляд это кажется программной ошибкой или следствием некорректной доработки конфигурации, однако на самом деле это результат глубокой переработки механизма Intercompany (перепродажи между собственными юридическими лицами).
В данной статье мы разберем, почему программа ведет себя именно так, для чего нужны эти «фантомные» движения и как правильно обслуживать систему, чтобы виртуальные резервы не блокировали реальную работу склада.
Начнем с того, что проанализируем роль регистра Резервы товаров организаций. В ранних версиях УТ 11 (до ветки 11.5) этот регистр использовался преимущественно для фиксации факта продажи одной организацией товара, который фактически принадлежит другой организации (так называемая схема «Продажа товаров другой организации»).
Однако, начиная с релизов 11.5.7 и выше, архитектура была изменена. Теперь этот регистр является фундаментом для механизма оперативного планирования передач. Разберем основные причины появления движений при записи документа:
Оформление передач и возвратов.Проанализируем ситуацию через призму пользовательского интерфейса. Основным потребителем данных регистра Резервы товаров организаций является рабочее место «Оформление передач и возвратов» (раздел Финансовый результат и контроллинг). Рассмотрим, как это работает по шагам:
Шаг 1. Происходит хозяйственная операция, требующая корректировки остатков между юрлицами (например, возврат товара покупателем в магазин 1, хотя товар закупался на магазин 2).
Шаг 2. В системе возникает «распоряжение» на оформление возврата между организациями. Это распоряжение еще не является документом, это запись во внутренних таблицах.
Шаг 3. Как только вы создаете документ Возврат товаров между организациями и просто нажимаете кнопку «Записать», документ связывается с этим распоряжением.
Шаг 4. В этот момент срабатывают подписки на события или встроенные механизмы проведения, которые делают записи в Резервы товаров организаций. Это необходимо для того, чтобы в списке «К оформлению» количество товара уменьшилось, и другие пользователи не видели этот остаток как доступный для оформления другого документа.
Многие специалисты отмечают, что такое поведение нарушает классический принцип 1С: «движения делает только проведенный документ». В случае с Интеркампани мы имеем дело с гибридной схемой, где часть данных хранится в регистре для обеспечения оперативной работы очереди.
Если вы столкнулись с тем, что документ помечен на удаление или распроведен, но резервы «висят» и не уходят, рассмотрим подробнее способы решения:
Первым делом необходимо проверить, не осталось ли «зависших» распоряжений. Перейдем в раздел Финансовый результат и контроллинг — Оформление передач и возвратов. Проанализируем список документов к оформлению. Если там висит строка с требованием оформить возврат, а ваш документ уже создан, но не проведен — система будет держать резерв. Попробуйте удалить черновик документа и обновить список распоряжений.
В УТ 11.5 многие процессы очистки регистров вынесены в фоновые задания. Выясним причину задержки очистки, проверив следующие задания:
Исправление отрицательных остатков товаров организаций — часто именно это задание «схлопывает» лишние движения по резервам.Расчет графиков передачи товаров — актуализирует данные о том, когда и сколько товара должно переместиться между фирмами.Как ни странно, это самый эффективный способ «вылечить» регистры Интеркампани. В процессе закрытия месяца (обработка Регламентные операции по финансовому учету) система выполняет полную перепроверку цепочек передач. Рассмотрим, что происходит при закрытии:
Если вы разработчик и вам необходимо программно понять, откуда берутся эти движения, обратите внимание на модуль менеджера документа или специализированные классы, отвечающие за Интеркампани. Часто логика записи в регистр зашита не в процедуру ОбработкаПроведения, а вызывается из ПередЗаписью или ПриЗаписи при определенных условиях (например, если заполнен реквизит Распоряжение).
Пример программного анализа остатков по этому регистру может выглядеть так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Резервы.Организация,
| Резервы.Номенклатура,
| Резервы.КоличествоОстаток
|ИЗ
| РегистрНакопления.РезервыТоваровОрганизаций.Остатки(&Период, ) КАК Резервы";
Запрос.УстановитьПараметр("Период", ТекущаяДата());
Результат = Запрос.Выполнить();
Проанализировав результат, вы увидите, что регистратором для многих записей могут выступать непроведенные документы. Это подтверждает, что в УТ 11.5 данный регистр выполняет роль «оперативного черновика».
Подведем итог: движения от непроведенного возврата между организациями в УТ 11.5 — это не баг, а фича архитектуры Intercompany. Система использует регистр резервов для управления очередью оформления документов. Чтобы эти движения не мешали работе:
Такой подход позволит вам эффективно управлять товарными потоками между организациями, не опасаясь блокировок склада виртуальными резервами.