Механизм Интеркампани в 1С:Управление торговлей 11 (а также в ERP и Комплексной автоматизации) предназначен для автоматизации перепродаж между собственными организациями. Однако часто пользователи сталкиваются с ситуацией, когда документ «Передача товаров» создан и проведен, фактическое движение товара произошло, но распоряжение в рабочем месте «Оформление передач и выкупов» так и не исчезает. Рассмотрим подробно причины этой проблемы и способы ее решения.
Для начала разберем, как программа понимает, что нужно что-то передать. В момент продажи товара, принадлежащего другой организации, система делает запись в регистр накопления ТоварыОрганизацийКПередаче. Список «К оформлению» строится именно на основании остатков в этом регистре. Проблема возникает тогда, когда аналитика в документе продажи (Реализация товаров и услуг) не совпадает с аналитикой в созданном документе Передача товаров между организациями.
Проанализируем ситуацию: если в реализации был списан товар с определенным Номером ГТД или конкретным Видом запасов, а в передаче эти данные заполнились иначе, запись в регистре не «захлопнется». Программа будет считать, что вы передали «какой-то другой» товар, а потребность по реализации все еще висит.
В типовых конфигурациях версии 11.4 и выше за чистоту данных в Интеркампани отвечает специальное регламентное задание. Часто бывает достаточно запустить его принудительно, чтобы «лишние» распоряжения исчезли. Рассмотрим, как это сделать:
Эта операция сопоставляет накопленные остатки и обороты в регистрах РезервыТоваровОрганизаций и ТоварыОрганизацийКПередаче, убирая «мусорные» записи, которые мешают корректному отображению списка к оформлению.
Выясним важную причину сбоев: если в настройках организации отключен контроль отрицательных остатков, это прямой путь к проблемам в Интеркампани. Когда контроль выключен, пользователи могут продавать товар, которого фактически нет на остатках ни у одной из организаций схемы. В этом случае в регистре «К передаче» фиксируется «минус», который невозможно закрыть стандартной передачей, так как товара физически не существует. Проанализируем настройки:
Если вы столкнулись с «зависшими» передачами, обязательно проверьте, не было ли реализации «в минус». В таком случае сначала нужно выровнять остатки (оформить поступление на организацию-владельца), а уже потом пытаться переоформить передачу.
Если регламентные операции не помогают, а распоряжения продолжают висеть, проанализируем возможность очистки регистров с помощью кода. Это крайняя мера, которую должен выполнять программист. Суть метода заключается в том, чтобы найти записи в регистрах за определенный период и принудительно очистить наборы записей для регистраторов, создающих «хвосты».
Рассмотрим пример кода для очистки регистра РезервыТоваровОрганизаций:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РезервыТоваровОрганизаций.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.РезервыТоваровОрганизаций КАК РезервыТоваровОрганизаций
|ГДЕ
| РезервыТоваровОрганизаций.Период МЕЖДУ &ДатаН И &ДатаК
|УПОРИЯДОЧИТЬ ПО
| РезервыТоваровОрганизаций.Регистратор.Дата";
Запрос.УстановитьПараметр("ДатаН", ДатаНачала);
Запрос.УстановитьПараметр("ДатаК", ДатаКонца);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыНакопления.РезервыТоваровОрганизаций.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Значение = Выборка.Регистратор;
Набор.Записать(); // Записываем пустой набор, тем самым очищая движения
КонецЦикла;
Аналогичным образом проанализируем и очистим регистр ТоварыОрганизацийКПередаче, который напрямую отвечает за список в интерфейсе:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыОрганизацийКПередаче.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.ТоварыОрганизацийКПередаче КАК ТоварыОрганизацийКПередаче
|ГДЕ
| ТоварыОрганизацийКПередаче.Период МЕЖДУ &ДатаН И &ДатаК";
Запрос.УстановитьПараметр("ДатаН", НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("ДатаК", КонецДня(ДатаКонца));
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыНакопления.ТоварыОрганизацийКПередаче.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Значение = Выборка.Регистратор;
Набор.Записать();
КонецЦикла;
Важное предупреждение: перед использованием данного метода обязательно сделайте резервную копию базы данных! После очистки регистров может потребоваться перепроведение документов за период, чтобы система заново сформировала корректные движения в соответствии с актуальными настройками Интеркампани.
Разберем ситуацию, когда проблема кроется в детализации учета. В 1С:УТ 11 версии 11.4.6 часто возникали ошибки, если в реализации был автоматически подобран Номер ГТД, который отсутствовал на остатках организации-отправителя по мнению регистра ТоварыОрганизацийКПередаче.
Посмотрим на рекомендации по проверке:
Если вы видите расхождения, попробуйте перезаполнить документ передачи, используя кнопку Заполнить — Подобрать по остаткам к оформлению. Этот механизм наиболее точно сопоставляет аналитику.
Проанализировав все способы, можно сделать вывод, что наиболее частая причина «зависания» распоряжений — это нарушение хронологии или отсутствие контроля остатков. Постоянное перепроведение документа передачи в этом случае бесполезно, так как он создает новые движения, не закрывая старые «минусы».
Для стабильной работы Интеркампани рекомендуем: