При работе с системой маркировки лекарственных препаратов (МДЛП) из 1С пользователи часто сталкиваются с ошибкой "слишком много запросов за короткое время". Иногда в тексте ошибки фигурирует таймаут, например, "30000 мс". Это сообщение означает, что сервер системы "Честный ЗНАК" временно заблокировал вашу учетную запись из-за превышения допустимой частоты обращений. Разберем, почему это происходит и как настроить 1С для стабильной работы.
Корень проблемы кроется в режиме, в котором ваша программа 1С обменивается данными с серверами МДЛП. Существует два основных режима: синхронный и асинхронный. Понимание их разницы — ключ к решению.
Асинхронный режим
Этот режим предназначен для быстрой обработки больших объемов данных. Представьте, что у вас есть сто документов для отправки. В асинхронном режиме 1С пытается отправить их все одновременно, не дожидаясь ответа на каждый предыдущий запрос. Это похоже на то, как если бы вы отправили сто писем сразу, не дожидаясь ответа ни на одно из них.
Синхронный режим
В этом режиме работа идет последовательно. 1С отправляет один запрос (например, данные по одной накладной), терпеливо ждет ответа от сервера МДЛП, и только после его получения формирует и отправляет следующий запрос. Это похоже на диалог по телефону: вы говорите фразу, ждете ответа собеседника, и только потом продолжаете.
Важно отметить, что значение "30000 мс" (30 секунд), которое может появляться в ошибке, — это, скорее всего, внутренняя настройка таймаута в 1С. Это время, в течение которого программа ждет ответа от сервера, прежде чем считать попытку неудачной. Сами лимиты МДЛП могут быть другими, например, не более одного запроса на 10 позиций в 30 секунд для определенных методов.
Самый простой и надежный способ избавиться от ошибки — переключить режим обмена с МДЛП в настройках вашей конфигурации 1С с асинхронного на синхронный. Это идеальный вариант для аптек с небольшим документооборотом (до 10-20 поступлений в день).
Как это сделать:
Как подтверждает практика, для небольших объемов этот метод решает проблему полностью. Но если у вас сотни документов в день, такой способ может парализовать работу, и нужно искать другие подходы.
Если синхронный режим для вас слишком медленный, нужно не отказываться от асинхронного режима, а "приручить" его, чтобы не выходить за рамки лимитов "Честного ЗНАКА".
1. Планируйте массовые обмены на ночное время
Самый простой способ снизить вероятность блокировки — выполнять самые ресурсоемкие операции тогда, когда серверы МДЛП наименее загружены. Как правило, это ночные часы.
Настройте регламентное задание в 1С так, чтобы приемка большого количества накладных или массовая отправка данных о выбытии запускались, например, в 2 часа ночи. Днем вы сможете проводить только текущие, единичные операции.
2. Настройте параметры регламентных заданий
Даже в асинхронном режиме можно управлять интенсивностью запросов. Вместо того чтобы обрабатывать все документы разом, настройте регламентное задание так, чтобы оно работало более размеренно.
Таким образом, вы распределите нагрузку во времени, и асинхронный обмен станет более "дружелюбным" к серверам МДЛП.
3. Программная доработка (для программистов 1С)
Если стандартных настроек не хватает, можно доработать механизм обмена. Идея в том, чтобы искусственно добавить паузу между отправкой запросов в асинхронном режиме.
Например, можно модифицировать код обмена так, чтобы после каждой отправки пакета документов система делала принудительную паузу, например, в 30 секунд. Это позволит совместить преимущества фоновой обработки асинхронного режима и соблюдение лимитов, как в синхронном.
Изучите официальную документацию API "Честного ЗНАКА" (доступна в личном кабинете участника). Там могут быть указаны конкретные рекомендуемые интервалы между вызовами для разных методов, на которые можно ориентироваться при доработке.
Таким образом, проблема "слишком много запросов" — это не сбой, а штатная реакция системы МДЛП. Выбор решения зависит от вашего объема операций: для небольших аптек достаточно переключиться на синхронный режим, а для крупных сетей потребуется более тонкая настройка регламентных заданий и планирование обменов.