При интеграции 1С с государственной системой ФГИС «Меркурий» (ВетИС) пользователи часто сталкиваются с крайне неприятной ситуацией: поставщик присылает товар, но принять его или оформить последующую отгрузку (отписать продукцию) в 1С становится невозможно. При попытке выполнить обмен система выдает ошибки, ссылаясь на то, что продукция имеет статус «удалена». При этом остатки по данной позиции продолжают числиться в складском журнале предприятия в Меркурии, зависая «мертвым грузом».
В этой статье мы подробно разберем, почему возникает эта проблема с точки зрения архитектуры ВетИС.API, как правильно перенастроить сопоставление номенклатуры в 1С:Комплексная автоматизация 2.4 и какими способами можно легально перенести зависшие остатки на актуальные карточки товаров.
Для того чтобы эффективно решать возникающие ошибки, нам необходимо понять внутреннюю архитектуру справочников Россельхознадзора (РСХН). В системе «Меркурий» вся продукция делится на четыре уровня:
Периодически РСХН проводит реорганизацию справочников третьего уровня. Например, устаревшие группы удаляются, а вместо них вводятся более детализированные позиции. Поскольку архитектура Меркурия запрещает изменять подчиненность уровней для уже созданной номенклатуры четвертого уровня, поставщикам не остается ничего другого, кроме как деактивировать (аннулировать) старую карточку товара и создать абсолютно новую, привязав ее к актуальному третьему уровню справочника РСХН.
В этот момент и возникает конфликт между Меркурием и 1С, завязанный на разнице между идентификаторами:
Когда карточка аннулируется, ей присваивается статус «400» (удалена/архивирована). Это означает запрет на создание новых партий с этим идентификатором. Но старые партии, выпущенные ранее, продолжают легально существовать в обороте и числятся на остатках в складских журналах получателей именно под этой «удаленной» версией. 1С:КА 2.4 при попытке выполнить операции с такой продукцией через API часто блокирует транзакции, так как запрашивает устаревший UUID или GUID, который шлюз ВетИС считает неактуальным.
Рассмотрим по шагам, как исправить эту ситуацию в 1С.
Если поставщик создал новую карточку взамен удаленной, нам необходимо разорвать старую связь в нашей базе 1С и сопоставить нашу позицию справочника Номенклатура с новым актуальным GUID Меркурия. В противном случае система продолжит автоматически подтягивать неактивную карточку.
Проанализируем процесс настройки сопоставления:
Важный практический совет: во избежание подобных проблем в будущем, при настройке интеграции и сопоставлении элементов рекомендуется привязывать внутреннюю номенклатуру 1С именно к GUID продукции (к самой карточке), а не к конкретному UUID (версии записи). Это позволит системе безболезненно переживать мелкие правки реквизитов товара поставщиком.
Простое пересопоставление карточек решит проблему с будущими поставками, но не уберет зависшие остатки старой продукции из нашего складского журнала Меркурия. Чтобы легально перенести объемы со старого (удаленного) GUID на новый актуальный, воспользуемся механизмом инвентаризации.
Выполним следующие действия в 1С:КА 2.4:
ИнвентаризацияПродукцииВЕТИС.ИнвентаризацияПродукцииВЕТИС и отправляем запрос в систему Меркурий через кнопку «Выполнить обмен».После успешной обработки транзакции сервером ВетИС остатки спишутся со старой карточки и появятся на новой, что позволит беспрепятственно отгружать товар клиентам.
Иногда при попытке провести инвентаризацию для списания удаленной продукции через API 1С возвращается жесткая ошибка протокола обмена (например, MERC02023 или MERC02009), так как шлюз считает транзакции со ссылкой на неактивный GUID недопустимыми. В этом случае мы можем применить обходной алгоритм через веб-интерфейс «Меркурий.ХС».
Разберем этот сценарий подробно:
Ранее многие специалисты для решения проблемы дублей и зависших позиций использовали механизм объединения записей складского журнала в 1С (функция ОбъединениеЗаписейСкладскогоЖурнала). Обратим ваше внимание на то, что сейчас этот способ не сработает.
Россельхознадзор существенно ужесточил контролирующие алгоритмы на стороне сервера ВетИС. В настоящее время действуют жесткие ограничения на слияние записей:
Поэтому единственным технически верным и стабильным решением остается проведение операции инвентаризации (списание «минусом» старой записи и оприходование «плюсом» новой) по описанной выше методике.
Также помните о необходимости своевременной очистки таких позиций. Если затянуть с переносом остатков, старые записи складского журнала со временем будут окончательно перенесены Меркурием в архивную базу данных. После архивации произвести какие-либо корректировки с ними станет невозможно даже через веб-интерфейс, и остатки зависнут в вашей системе навсегда.