При масштабировании бизнеса розничные сети и предприятия общественного питания (кафе, рестораны) сталкиваются с проблемой резкого снижения скорости обмена данными с ФГИС «Меркурий» (ВетИС). В тестовом режиме на одной-двух площадках всё работает мгновенно. Однако при запуске системы в промышленную эксплуатацию на 100–150 торговых точках регламентное задание обмена может выполняться часами или даже «зависать» более чем на сутки, парализуя работу по гашению входящих ветеринарно-сопроводительных документов (ВСД).
В этой статье мы подробно разберем причины этой проблемы и пошагово рассмотрим методы оптимизации типовой интеграции ВетИС в 1С:ERP, которые позволят сократить время обмена с десятков часов до нескольких минут.
Прежде чем переходить к настройкам, проанализируем техническую сторону взаимодействия 1С с веб-сервисом ВетИС.API. При запуске общего обмена система последовательно или параллельно отправляет запросы по каждому зарегистрированному предприятию (площадке). В процессе обмена выполняются два основных типа «тяжелых» запросов к реестру ФГИС:
getVetDocumentList.getStockEntryList.Именно метод getStockEntryList является основным узким местом. Согласно технической документации ВетИС, этот запрос относится к категории «тяжелых и ресурсоемких». Время его выполнения напрямую зависит от количества действующих (незакрытых) партий продукции на балансе вашей площадки в Меркурии. Один пакет на 900 записей веб-сервис отдает в среднем за 1,5–2 минуты. Если у вас на одной точке скопилось 5 000 активных партий, обработка запроса по ней займет около 10–15 минут. Умножив это время на 150 торговых точек, мы получаем математически обоснованные 25–30 часов непрерывного обмена.
Почему же на точках общепита и розницы скапливается огромное количество «мусорных» партий? Дело в специфике учета: при поступлении продукции вы исправно гасите входящие ВСД (тем самым увеличивая баланс складского журнала в Меркурии). Однако, поскольку конечным потребителем является физическое лицо (посетитель кафе или покупатель в магазине), дальнейшее списание этих остатков в ВетИС зачастую не производится. В результате складской журнал раздувается до гигантских масштабов, делая синхронизацию практически невозможной.
Если ваши 150 точек представляют собой сеть кафе или розничных магазинов, которые приобретают подконтрольную продукцию исключительно для собственного производства/приготовления блюд или конечной розничной реализации физическим лицам (без оформления последующих транспортных ВСД на продажу другим юрлицам), вам не требуется вести актуальный складской журнал в Меркурии.
Разберем по шагам, как отключить эту ресурсоемкую операцию в 1С:ERP:
После сохранения настроек 1С:ERP полностью перестанет отправлять запросы getStockEntryList. Система будет запрашивать исключительно новые входящие ВСД по методу getVetDocumentList. Это моментально разгрузит каналы связи и сократит время синхронизации по всем 150 точкам до нескольких минут.
Если специфика вашего бизнеса все же требует ведения складского журнала, накопленный «мусор» необходимо регулярно зачищать. Огромное количество просроченных и фактически отсутствующих на складе партий забивает кэш обмена.
Проанализируем порядок действий по очистке складского журнала:
ИнвентаризацияПродукцииВетИС по просроченным партиям и отправлять их на согласование в Меркурий.Поддержание объема активных записей в складском журнале в пределах 100–200 позиций на одну точку гарантирует высокую скорость обработки API-запросов.
В современных релизах 1С:ERP (начиная с веток 2.4.9+) добавлены дополнительные механизмы, предотвращающие зависание очереди запросов. Настроим их для стабильной работы под высокой нагрузкой:
APLM0012), система не зависнет намертво, а корректно отложит пакет и попробует отправить его позже.ФГИС «Меркурий» жестко ограничивает частоту запросов от одной учетной системы. При попытке запустить параллельный обмен по 150 площадкам одновременно шлюз ВетИС незамедлительно выдаст ошибку превышения лимитов (HTTP 429) и заблокирует IP-адрес или API-ключ на некоторое время.
Чтобы избежать этой проблемы, выполним следующие рекомендации:
Иногда причиной зацикливания и медленной работы обмена становится перегрузка самой базы данных 1С метаданными интеграции. При интенсивном обмене таблицы логов ВетИС разрастаются до невероятных размеров. Рассмотрим, как провести профилактику базы данных:
Регулярно очищайте регистры сведений, которые хранят XML-пакеты обмена и протоколы запросов. В частности, особого внимания требует таблица РегистрСведений.ПакетыДляОбменаВетИС. Для этого используйте стандартную типовую обработку Очистка протокола обмена ВетИС (доступна в панели администрирования ВетИС). Также для снижения нагрузки на базу можно использовать обработку для архивирования документов ВетИС.
Также не забывайте выполнять регламентные операции на уровне СУБД (MS SQL Server или PostgreSQL):
Медленный обмен с ВетИС на больших объемах данных — это не приговор для 1С:ERP. Для эффективного решения проблемы выполните три ключевых действия: отключите синхронизацию складского журнала (если вы работаете в общепите или рознице), проведите тотальное списание просроченных остатков через инвентаризацию и настройте расписание регламентных заданий группами, чтобы не перегружать API Меркурия. Эти действия позволят вашей системе работать стабильно, быстро и без сбоев.