Как ускорить обмен с ВетИС (Меркурий) в 1С:ERP при большом количестве торговых точек?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

При масштабировании бизнеса розничные сети и предприятия общественного питания (кафе, рестораны) сталкиваются с проблемой резкого снижения скорости обмена данными с ФГИС «Меркурий» (ВетИС). В тестовом режиме на одной-двух площадках всё работает мгновенно. Однако при запуске системы в промышленную эксплуатацию на 100–150 торговых точках регламентное задание обмена может выполняться часами или даже «зависать» более чем на сутки, парализуя работу по гашению входящих ветеринарно-сопроводительных документов (ВСД).

В этой статье мы подробно разберем причины этой проблемы и пошагово рассмотрим методы оптимизации типовой интеграции ВетИС в 1С:ERP, которые позволят сократить время обмена с десятков часов до нескольких минут.

Выясняем причину: почему зависает обмен ВетИС?

Прежде чем переходить к настройкам, проанализируем техническую сторону взаимодействия 1С с веб-сервисом ВетИС.API. При запуске общего обмена система последовательно или параллельно отправляет запросы по каждому зарегистрированному предприятию (площадке). В процессе обмена выполняются два основных типа «тяжелых» запросов к реестру ФГИС:

  1. Запрос списка входящих ветеринарных документов — метод getVetDocumentList.
  2. Запрос списка записей складского журнала (активных партий на остатках площадки) — метод getStockEntryList.

Именно метод getStockEntryList является основным узким местом. Согласно технической документации ВетИС, этот запрос относится к категории «тяжелых и ресурсоемких». Время его выполнения напрямую зависит от количества действующих (незакрытых) партий продукции на балансе вашей площадки в Меркурии. Один пакет на 900 записей веб-сервис отдает в среднем за 1,5–2 минуты. Если у вас на одной точке скопилось 5 000 активных партий, обработка запроса по ней займет около 10–15 минут. Умножив это время на 150 торговых точек, мы получаем математически обоснованные 25–30 часов непрерывного обмена.

Почему же на точках общепита и розницы скапливается огромное количество «мусорных» партий? Дело в специфике учета: при поступлении продукции вы исправно гасите входящие ВСД (тем самым увеличивая баланс складского журнала в Меркурии). Однако, поскольку конечным потребителем является физическое лицо (посетитель кафе или покупатель в магазине), дальнейшее списание этих остатков в ВетИС зачастую не производится. В результате складской журнал раздувается до гигантских масштабов, делая синхронизацию практически невозможной.


Решение 1. Отключение синхронизации складского журнала (Главная настройка)

Если ваши 150 точек представляют собой сеть кафе или розничных магазинов, которые приобретают подконтрольную продукцию исключительно для собственного производства/приготовления блюд или конечной розничной реализации физическим лицам (без оформления последующих транспортных ВСД на продажу другим юрлицам), вам не требуется вести актуальный складской журнал в Меркурии.

Разберем по шагам, как отключить эту ресурсоемкую операцию в 1С:ERP:

  1. Перейдем в раздел НСИ и администрирование — Настройка интеграции — Интеграция с ВетИС (Меркурий).
  2. Откроем форму Параметры оптимизации обмена с ВетИС.
  3. Найдем опцию Синхронизировать записи складского журнала и снимем этот флаг.

После сохранения настроек 1С:ERP полностью перестанет отправлять запросы getStockEntryList. Система будет запрашивать исключительно новые входящие ВСД по методу getVetDocumentList. Это моментально разгрузит каналы связи и сократит время синхронизации по всем 150 точкам до нескольких минут.


Решение 2. Регулярная очистка остатков (Инвентаризация «в ноль»)

Если специфика вашего бизнеса все же требует ведения складского журнала, накопленный «мусор» необходимо регулярно зачищать. Огромное количество просроченных и фактически отсутствующих на складе партий забивает кэш обмена.

Проанализируем порядок действий по очистке складского журнала:

  1. Для каждой площадки необходимо регулярно (например, раз в неделю или раз в месяц) проводить регламентную операцию — Инвентаризация ВетИС.
  2. В документе инвентаризации следует выявить все старые, зависшие остатки и списать их «в ноль».
  3. Для автоматизации этого процесса можно привлечь программиста для написания простой обработки, которая будет автоматически формировать документы ИнвентаризацияПродукцииВетИС по просроченным партиям и отправлять их на согласование в Меркурий.

Поддержание объема активных записей в складском журнале в пределах 100–200 позиций на одну точку гарантирует высокую скорость обработки API-запросов.


Решение 3. Тонкая настройка параметров оптимизации в 1С

В современных релизах 1С:ERP (начиная с веток 2.4.9+) добавлены дополнительные механизмы, предотвращающие зависание очереди запросов. Настроим их для стабильной работы под высокой нагрузкой:

  1. Ограничение глубины запроса: При первом запуске или после сбоев 1С пытается выкачать документы за всю историю. В настройках подключения к ВетИС обязательно установите лимит в поле Загружать непогашенные ВСД с даты (укажите актуальную дату, например, 10-14 дней назад). Это отсечет миллионы архивных записей.
  2. Настройка автовосстановления: В параметрах оптимизации активируйте и настройте опцию Количество попыток восстановления (рекомендуемое значение — от 3 до 5). При получении от серверов Меркурия ошибок таймаута (HTTP 408) или внутренних сбоев (например, APLM0012), система не зависнет намертво, а корректно отложит пакет и попробует отправить его позже.

Решение 4. Обход блокировок и лимитов ВетИС.API (Token Bucket)

ФГИС «Меркурий» жестко ограничивает частоту запросов от одной учетной системы. При попытке запустить параллельный обмен по 150 площадкам одновременно шлюз ВетИС незамедлительно выдаст ошибку превышения лимитов (HTTP 429) и заблокирует IP-адрес или API-ключ на некоторое время.

Чтобы избежать этой проблемы, выполним следующие рекомендации:


Решение 5. Очистка технического «мусора» в СУБД 1С

Иногда причиной зацикливания и медленной работы обмена становится перегрузка самой базы данных 1С метаданными интеграции. При интенсивном обмене таблицы логов ВетИС разрастаются до невероятных размеров. Рассмотрим, как провести профилактику базы данных:

Регулярно очищайте регистры сведений, которые хранят XML-пакеты обмена и протоколы запросов. В частности, особого внимания требует таблица РегистрСведений.ПакетыДляОбменаВетИС. Для этого используйте стандартную типовую обработку Очистка протокола обмена ВетИС (доступна в панели администрирования ВетИС). Также для снижения нагрузки на базу можно использовать обработку для архивирования документов ВетИС.

Также не забывайте выполнять регламентные операции на уровне СУБД (MS SQL Server или PostgreSQL):


Подведем итоги

Медленный обмен с ВетИС на больших объемах данных — это не приговор для 1С:ERP. Для эффективного решения проблемы выполните три ключевых действия: отключите синхронизацию складского журнала (если вы работаете в общепите или рознице), проведите тотальное списание просроченных остатков через инвентаризацию и настройте расписание регламентных заданий группами, чтобы не перегружать API Меркурия. Эти действия позволят вашей системе работать стабильно, быстро и без сбоев.

← На главную