Как настроить обмен с ЕГАИС по расписанию в «1С:Розница 2.2» после обновления?

Системный администратор 1С v8.3 (Управляемые формы) Торговля и дистрибуция
← На главную

Часто после обновления конфигурации «1С:Розница 2.2» (например, при переходе с релизов 2.2.7 на 2.2.9 и выше) пользователи сталкиваются с неприятной ситуацией: автоматический обмен с ЕГАИС по расписанию перестает работать под учетными записями кассиров. При этом, если зайти в систему под правами администратора, обмен выполняется корректно. Ситуация осложняется, когда база опубликована на веб-сервере, а магазины распределены территориально.

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

Проблема 1: Изменение состава ролей и прав доступа кассира

Разберем ситуацию: почему раньше под кассиром все работало, а теперь нет? В последних релизах 1С усилила контроль безопасности при выполнении фоновых заданий. Для того чтобы регламентное задание могло инициировать HTTP-запрос к УТМ (Универсальному транспортному модулю), текущему пользователю недостаточно прав Продавец-кассир.

Проанализируем необходимые действия:

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав.
  2. Проверим профиль групп доступа, назначенный кассиру.
  3. Убедимся, что кассиру добавлены роли Интеграция с ЕГАИС или Работа с ЕГАИС. В новых версиях без этих ролей подсистема обмена может блокировать попытки создания фоновых заданий программным способом.

Проблема 2: Выполнение регламентных заданий на веб-сервере

Если ваша база работает через веб-сервер (IIS или Apache), механизм выполнения фоновых задач в файловом варианте меняется. Рассмотрим подробнее, как это происходит. В файловой базе регламентные задания запускаются либо специальным выделенным сеансом, либо внутри активного пользовательского сеанса.

Когда мы устанавливаем флаг «Выполнять обмен на сервере 1С:Предприятие» в настройках обмена ЕГАИС, система пытается выполнить запрос к УТМ не с компьютера пользователя, а с того компьютера, где установлен веб-сервер. Выясним причину возможного отказа: пользователь, под которым запущен веб-сервер (например, IUSR или NetworkService), может просто не иметь прав на выход в интернет или доступ к порту 8080 магазина.

Для решения этой задачи выполним следующие шаги:

  1. Создадим в базе специального технического пользователя (например, с именем ExchangeRobot) с полными правами.
  2. Зайдем в Администрирование — Обслуживание — Регламентные операции — Настройка регламентных заданий.
  3. Найдем в списке задание Обмен с ЕГАИС и в поле Пользователь укажем нашего созданного администратора.

Это позволит системе игнорировать ограниченные права кассира при выполнении фонового задания, так как оно будет запускаться от имени «технического» администратора.

Проблема 3: Сетевая доступность УТМ при динамических IP

Проанализируем ситуацию, когда сервер 1С находится в облаке или в центральном офисе, а УТМ — в магазине за маршрутизатором с динамическим IP. Рассмотрим, как сервер узнает, куда отправлять запросы.

Если вы открываете порт 8080 на маршрутизаторе магазина (проброс портов / Port Forwarding), вы создаете серьезную уязвимость. Любой злоумышленник, зная ваш IP, сможет получить доступ к данным ЕГАИС. Кроме того, при смене динамического IP адрес в настройках 1С станет неактуальным.

Рассмотрим правильные способы решения этой проблемы:

Вариант А: Использование Dynamic DNS (например, No-IP)

Этот сервис привязывает ваше динамическое подключение к постоянному доменному имени. В настройках магазина в 1С вместо IP-адреса (например, 178.1.2.3) мы указываем хост: magazin1.myvnc.com. Однако, даже в этом случае порт 8080 остается открытым всему миру.

Вариант Б: Настройка VPN-канала (Рекомендуется)

Посмотрим на пример организации сети через VPN (OpenVPN, WireGuard или ZeroTier). Это объединит сервер и все магазины в одну виртуальную локальную сеть. В этом случае сервер 1С будет обращаться к УТМ по внутреннему адресу, например 192.168.1.50:8080. Это безопасно, стабильно и не требует проброса портов наружу.

Проблема 4: Установка внешней компоненты обмена

Иногда проблема кроется в том, что при первом запуске после обновления 1С пытается установить обновленную компоненту для работы с криптографией и HTTP-запросами. Рассмотрим, почему это не срабатывает у кассира. Обычно у пользователя Windows, под которым работает кассир, нет прав на запись в системные папки или установку расширений.

Выполним следующие действия для исправления:

  1. Зайдем на компьютер кассира под учетной записью администратора Windows.
  2. Запустим 1С под пользователем с полными правами.
  3. Один раз выполним обмен с ЕГАИС вручную. Система установит все необходимые библиотеки в общие папки.
  4. После этого кассир сможет использовать эти компоненты без ошибок доступа.

Важные замечания по расположению УТМ

Разберем правовой аспект, упомянутый в обсуждении. Согласно требованиям ФСРАР, аппаратный ключ (JaCarta или Рутокен) и сам УТМ должны физически находиться по месту осуществления деятельности, указанному в лицензии (для крепкого алкоголя). Попытка собрать все ключи на одном сервере в центральном офисе является нарушением. 1С должна обращаться к УТМ именно в магазин.

Посмотрим на пример кода, который можно использовать в отладчике или внешней обработке, чтобы проверить доступность УТМ прямо из сеанса кассира:


НТТРЗапрос = Новый HTTPСоединение("192.168.1.50", 8080);
Попытка
    Ответ = НТТРЗапрос.Получить(Новый HTTPЗапрос("/"));
    Сообщить("Соединение с УТМ установлено успешно! Код ответа: " + Ответ.КодСостояния);
Исключение
    Сообщить("Ошибка подключения к УТМ: " + ОписаниеОшибки());
КонецПопытки;

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

Для восстановления работы обмена по расписанию мы рекомендуем выполнить комплексную проверку:

Соблюдение этих шагов обеспечит стабильную работу системы и позволит избежать ручного вмешательства в процесс обмена данными с государственными информационными системами.

← На главную