Работа с ФГИС «Меркурий» (ВетИС) — обязательная реальность для всех участников оборота продукции животного происхождения. Оптовые компании, производители и розничные сети ежедневно сталкиваются с необходимостью оформления, гашения и аннулирования сотен и тысяч ветеринарных сопроводительных документов (ВСД). Работа через стандартный веб-интерфейс вручную быстро становится невозможной из-за колоссальных временных затрат.
В этой статье мы подробно разберем, какие готовые решения для интеграции 1С с системой «Меркурий» существуют на рынке, проанализируем их плюсы и минусы на основе реального опыта внедрения, а также рассмотрим технические приемы оптимизации обмена данными, ускорения работы и исправления типичных ошибок.
---
При выборе программного продукта для интеграции ключевыми критериями обычно являются: стоимость лицензий и внедрения, открытость исходного кода для доработки под бизнес-процессы компании, стабильность работы и поддержка разработчика. Проанализируем основные решения, доступные для платформ 1С:
Одно из самых популярных коммерческих решений. Поставляется как в виде отдельной конфигурации, так и в виде встраиваемого модуля с открытым кодом.
Плюсы: Высокая стабильность работы, открытый код, отличная техподдержка в режиме 24/7. Код можно использовать как библиотеку функций, вызывая процедуры прямо из документов вашей основной базы. Легко кастомизируется — например, можно быстро реализовать печать QR-кодов для входящих и исходящих сообщений прямо из документов поступления и реализации.
Минусы: Относительно высокая стоимость (от 58 000 рублей в год в зависимости от тарифов и объема документооборота).
Бюджетное решение, доступное на популярных площадках для разработчиков 1С.
Плюсы: Доступная цена (около 25 000 рублей в год), открытый исходный код.
Минусы: Требует серьезного программирования «под себя», если у вас сложная структура холдинга (много юридических лиц) или разветвленная сеть складов. Однако после доработки кода силами штатного программиста решение показывает высокую стабильность работы на крупных распределительных центрах и розничных сетях.
Специализированное решение, ориентированное на крупный бизнес, дистрибуцию и производство с партионным учетом.
Плюсы: Возможность бесшовной интеграции прямо в учетную систему клиента без использования промежуточных шлюзов. Полная поддержка цепочек производства, списания остатков, инвентаризации.
Минусы: Высокая стоимость как самого модуля (от 60 000 рублей), так и услуг по его внедрению (от 40 000 рублей и выше).
Исторически одно из первых решений, которое часто использовалось в качестве шлюза обмена.
Особенности: Использовалось многими компаниями как «донор кода» для разбора схем работы API «Меркурия». Из минусов пользователи отмечали высокую нагрузку на оперативную память сервера («течки» памяти) и сложный, неочевидный интерфейс на обычных формах. Важно: Фирма «1С» официально прекратила поддержку отраслевого решения «1С:УВС» с 1 июля 2023 года, поэтому рассматривать его для новых внедрений не имеет смысла.
В современных конфигурациях (например, 1С:ERP, Комплексная автоматизация, Управление торговлей ред. 11, Бухгалтерия предприятия ред. 3.0) уже встроен бесплатный типовой модуль интеграции с ВетИС.
Плюсы: Полностью бесплатен, обновляется в рамках поддержки ИТС, интерфейс стандартизирован под остальные системы маркировки РФ.
Минусы: Может не подходить для специфических бизнес-процессов производителей или дистрибьюторов со сложной логистикой без доработки.
---
Основной проблемой при больших объемах отгрузок (от 1000 ВСД в день) становится низкая скорость обработки запросов на стороне ФГИС «Меркурий». Если отправлять и получать документы последовательно в один поток, система зависнет, а процесс выписки документов парализует отгрузку машин.
Для решения этой проблемы применим многопоточность и обработку очереди через фоновые задания платформы 1С.
Рассмотрим логику работы фонового диспетчера очереди:
ОчередьОтправкиВетИС) записывается ссылка на документ и статус «К отправке».Ниже представлен пример концептуального кода для динамического распределения нагрузки по фоновым потокам:
// Процедура запускается регламентным заданием для анализа и распределения очереди
Процедура РаспределитьОчередьОтправки() Экспорт
МаксимальноеКоличествоПотоков = 5;
ЗапросыКОтправке = РегистрыСведений.ОчередьОтправкиВетИС.Выбрать(Новый Структура("Статус", ПредопределенноеЗначение("Перечисление.СтатусыОтправки.КОтправке")));
КоличествоЗаписей = 0;
ТаблицаДокументов = Новый ТаблицаЗначений;
ТаблицаДокументов.Колонки.Добавить("Документ");
ТаблицаДокументов.Колонки.Добавить("Организация");
Пока ЗапросыКОтправке.Следующий() Цикл
НоваяСтрока = ТаблицаДокументов.Добавить();
НоваяСтрока.Документ = ЗапросыКОтправке.Документ;
НоваяСтрока.Организация = ЗапросыКОтправке.Организация;
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЦикла;
Если КоличествоЗаписей = 0 Тогда
Возврат;
КонецЕсли;
// Группируем по организациям для параллельной отправки
ТаблицаОрганизаций = ТаблицаДокументов.Скопировать();
ТаблицаОрганизаций.Свернуть("Организация");
ПотоковЗапущено = 0;
Для Каждого СтрокаОрг Из ТаблицаОрганизаций Цикл
Если ПотоковЗапущено >= МаксимальноеКоличествоПотоков Тогда
Прервать;
КонецЕсли;
ПараметрыЗапуска = Новый Массив;
ПараметрыЗапуска.Добавить(СтрокаОрг.Организация);
// Запускаем асинхронную обработку для конкретной организации в фоновом задании
ФоновыеЗадания.Выполнить("МодульИнтеграцииВетИС.ОбработатьПакетДокументовФоном", ПараметрыЗапуска, СтрокаОрг.Организация.УникальныйИдентификатор());
ПотоковЗапущено = ПотоковЗапущено + 1;
КонецДля;
КонецПроцедуры
Такой подход позволяет сократить время получения 1000 ВСД до 3–4 минут за счет параллельной работы 15–20 фоновых заданий.
---
Часто возникает ситуация, когда у компании накапливается огромный архив непогашенных входящих ВСД (десятки тысяч документов), из-за чего учетная система начинает сильно тормозить при сопоставлении данных. Погасить их вручную физически невозможно.
Выясним причину замедления обмена: при попытке пакетного обмена по всем площадкам одновременно API перегружается. Для исправления ситуации необходимо реализовать алгоритм поочередного автоматического гашения документов в цикле с фиксацией идентификаторов.
Проанализируем пример схемы кода для автоматического гашения старых документов:
Процедура ВыполнитьПакетноеГашениеВходящихВСД() Экспорт
// Выбираем только те документы, которые еще не погашены и получены ранее определенной даты
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВетИСВходящиеДокументы.Ссылка КАК ДокументСсылка,
| ВетИСВходящиеДокументы.ИдентификаторДокумента КАК Идентификатор
|ИЗ
| Справочник.ВетИСВходящиеДокументы КАК ВетИСВходящиеДокументы
|ГДЕ
| ВетИСВходящиеДокументы.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыВетИС.Принят)
| И ВетИСВходящиеДокументы.ДатаОформления < &ГраницаДаты";
Запрос.УстановитьПараметр("ГраницаДаты", ТекущаяДата() - (86400 * 5)); // Старее 5 дней
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
// Вызываем программный интерфейс API 3.0 для гашения
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ИдентификаторВСД", Выборка.Идентификатор);
ПараметрыОперации.Вставить("ФактическийОбъем", Выборка.ДокументСсылка.Объем); // Гасим полностью
РезультатГашения = ИнтеграцияВетИСКлиентСервер.ОтправитьЗапросГашения(ПараметрыОперации);
Если РезультатГашения.Успешно Тогда
// Обновляем статус в нашей базе
ДокументОбъект = Выборка.ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.Статус = Перечисления.СтатусыВетИС.Погашен;
ДокументОбъект.Записать();
КонецЕсли;
Исключение
ЗаписьЖурналаРегистрации("ВетИС.Гашение", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Важное примечание: При выполнении массового гашения следите за тем, чтобы не запустить процесс по всем площадкам одновременно. Если у вашей организации более 10–20 зарегистрированных площадок (торговых точек, складов), выполняйте регламентный обмен по каждой площадке строго последовательно, чтобы избежать взаимных блокировок СУБД и отказа удаленного сервера Меркурия.
---
Распространенная проблема дистрибьюторов при работе с федеральными сетями (АО «Тандер» и др.): ВСД успешно отправлен из 1С, статус в системе «Меркурий» — «Оформлен», но распределительный центр сети разворачивает машину, заявляя, что документы до них не дошли.
Разберем по шагам причины этой проблемы и способы ее локализации:
В системе «Меркурий» справочник продукции имеет 4 уровня иерархии. Часто в базе отправителя и в базе получателя один и тот же товар сопоставлен с разными кодами ТН ВЭД на 3-м или 4-м уровне иерархии (из-за дублирования позиций с одинаковыми наименованиями в глобальном справочнике ВетИС). Автоматическая система приемки торговой сети сравнивает код продукции из ВСД с кодом из спецификации (декларации). При малейшем расхождении документ блокируется внутренним шлюзом сети, и оператор его просто не видит.
Решение: Запросите у категорийного менеджера или логистов сети точный GUID и код ТН ВЭД номенклатурной позиции в системе Меркурий и жестко сопоставьте его в своей 1С.
Иногда торговые сети или ветеринарные врачи регистрируют торговые точки клиентов как отдельные независимые площадки без ведома поставщика. В результате документ уходит на правильный адрес, но на «чужой» GUID площадки.
Решение: Всегда проверяйте GUID грузополучателя и площадки доставки через официальный реестр «Цербер» перед отправкой пакета документов.
---