Перевод информационной базы 1С из файлового режима работы в клиент-серверный — это стандартный этап масштабирования бизнеса. Однако часто этот процесс сопровождается неожиданными сбоями в работе функционала, который ранее работал безупречно. Одной из классических проблем является внезапное прекращение отправки СМС-сообщений из программы «1С:Управление торговлей 11».
В файловой базе пользователь заполняет форму, нажимает кнопку «Отправить», и сообщение мгновенно уходит получателю. В клиент-серверном же варианте СМС-сообщения могут бесследно исчезать: система рапортует об успешном формировании, но до адресата ничего не доходит. Разберем подробно, почему так происходит, проанализируем внутренние механизмы платформы 1С и найдем пошаговые пути решения этой технической проблемы.
---
В файловом режиме работы многие регламентные и фоновые процессы эмулируются непосредственно в сеансе залогиненного пользователя. В клиент-серверной архитектуре за эти задачи отвечает отдельный планировщик заданий на стороне сервера 1С:Предприятия. Отправка СМС в типовых конфигурациях (на базе БСП) осуществляется асинхронно с помощью регламентного задания.
Рассмотрим две основные проблемы, связанные с этим механизмом:
Решение по шагам:
Шаг 1. Снимем блокировку регламентных заданий на уровне СУБД/кластера. Для этого откроем Консоль администрирования кластера серверов 1С:Предприятия, найдем нашу информационную базу, зайдем в ее свойства и убедимся, что флаг «Блокировка регламентных заданий включена» снят.
Шаг 2. Включим регламентное задание в режиме «1С:Предприятие». Перейдем в раздел НСИ и администрирование -> Обслуживание -> Регламентные и фоновые задания. Найдем в списке задание, связанное с отправкой СМС (обычно оно называется Отправка SMS или Отправка сообщений), проверим его состояние. Если оно выключено, включим его с помощью соответствующей кнопки и настроим расписание (например, выполнять каждые 10–30 секунд для оперативной отправки).
Если нам необходимо программно проверить и включить использование регламентного задания, мы можем воспользоваться следующим кодом:
Задание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ОтправкаSMS);
Если Не Задание.Использование Тогда
УстановитьПривилегированныйРежим(Истина);
Задание.Использование = Истина;
Задание.Записать();
УстановитьПривилегированныйРежим(Ложь);
ЗаписатьЛогСобытия("Регламентное задание отправки СМС успешно активировано.");
КонецЕсли;
---
В клиент-серверном режиме весь код, отвечающий за отправку запросов к шлюзу СМС-провайдера, выполняется на стороне сервера приложений в контексте операционной системы. Исполнителем выступает рабочий процесс сервера rphost.exe, запущенный от имени конкретного системного пользователя Windows или Linux (по умолчанию это локальный пользователь USR1CV8).
Выясним причину, почему под администратором на сервере интернет работает, а СМС из 1С не уходят:
1C:Enterprise 8.3 Server Agent, не имеет прав на выход во внешнюю сеть (интернет) согласно политикам безопасности домена или локального компьютера.Решение по шагам:
Шаг 1. Проверим, под каким пользователем запущена служба 1С. Откроем оснастку Службы (services.msc), найдем службу Агент сервера 1С:Предприятие 8.3 и перейдем на вкладку Вход в систему. Если там указан стандартный USR1CV8, необходимо убедиться, что для него открыт сетевой порт для HTTPS-соединений (порт 443) до адреса шлюза СМС-провайдера.
Шаг 2. Если в сети используется прокси-сервер, настроим файл конфигурации inetcfg.xml, чтобы платформа знала, как корректно маршрутизировать свои запросы. Данный файл должен располагаться в каталоге установки платформы на сервере (например, в папке C:\Program Files\1cv8\conf\). Пример корректного заполнения файла конфигурации прокси:
<config xmlns="http://v8.1c.ru/8.1/data/internetandwork">
<proxy
host="192.168.1.100"
port="8080"
bypassOnLocal="true"
>
<user login="Domain\ProxyUser" password="MySecurePassword"/>
</proxy>
</config>
---
Поскольку отправка запросов на отправку СМС к API провайдеров происходит по защищенному протоколу HTTPS, сервер 1С должен верифицировать SSL-сертификат удаленного шлюза. Если операционная система на сервере давно не обновлялась или работает под управлением Linux без настроенного хранилища сертификатов, соединение будет разорвано с ошибкой безопасности.
Выясним, как обновить сертификаты:
ca-certificates и настроить права доступа к нему для пользователя usr1cv8.cacert.pem, который находится в папке установленной платформы 1С. Для этого скачаем актуальный файл сертификатов с официального сайта curl и заменим им стандартный файл в папке bin вашей версии платформы.---
Иногда техническая часть отправки на стороне сервера работает штатно, однако провайдер отклоняет запросы по административным причинам:
+79991112233). Избегайте использования внутренних номеров и некорректных префиксов (например, начинающихся с «8» вместо «+7» или кода страны).---
Для того чтобы не гадать, на каком этапе происходит сбой, выполним последовательную диагностику:
curl:
curl -v https://api.smsprovider.ru/v1/send
Это позволит мгновенно определить, блокирует ли брандмауэр или антивирус исходящий HTTPS-трафик с сервера 1С.
Совместное выполнение этих диагностических шагов гарантирует быстрое и успешное восстановление функционала отправки СМС в вашей системе «1С:Управление торговлей 11».