Отправка SMS из 1С: встроенная рассылка, HTTP-запрос и обработки

· 10 мин

Содержание

Отправка SMS из 1С настраивается в двух местах: в типовых конфигурациях на 8.3 (Бухгалтерия 3.0, ЗУП 3.1, Управление торговлей 11, Розница) — через встроенную подсистему в разделе Администрирование → Органайзер, где выбирается провайдер и вводятся логин с паролем. В самописных и доработанных базах рассылка собирается руками: HTTP-запрос к API оператора прямо в коде либо отдельная внешняя обработка.

Любой способ держится на трёх вещах: заключённый договор с агрегатором SMS, зарегистрированное имя отправителя и доступ базы в интернет. Без них настройка не заработает, даже если в 1С всё заполнено верно. Разберём по шагам, что подготовить и куда вводить реквизиты — отдельно для типовых и нетиповых конфигураций.

Что подготовить до настройки: провайдер, аккаунт, имя отправителя

1С сама SMS не отправляет — она передаёт сообщение агрегатору (оператору рассылок), а тот доставляет его абоненту. Поэтому первый шаг — выбрать агрегатора и завести у него аккаунт.

📋 Что сделать на стороне провайдера:

  • 📝 Зарегистрироваться и заключить договор . Для юрлица обычно нужны реквизиты организации и подписанное соглашение — иначе рассылка идёт только на свои номера в тестовом режиме.
  • 🔑 Получить доступ к API. Это логин с паролем или API-ключ (токен). Их позже вводят в 1С.
  • 🏷️ Зарегистрировать имя отправителя. Буквенное имя (alpha-name, например MagazinROMA) оператор согласует с сотовыми операторами. Согласование занимает от нескольких дней до двух-трёх недель.
  • 💰 Пополнить баланс. Ориентировочная цена одной SMS по России — примерно 2–4 ₽ за сегмент в 70 символов кириллицей; латиницей в сегмент помещается 160 символов. Точные тарифы зависят от объёма и оператора.

Имя отправителя бывает двух типов. Буквенное (alpha-name) — узнаваемая подпись латиницей, его согласовывают дольше, зато клиент сразу видит, от кого сообщение. Цифровое или короткий номер — согласуется быстрее, но выглядит безлично. Для клиентских оповещений берите буквенное, для внутренних технических сообщений хватит того, что уже согласовано.

Имя отправителя — главная причина, по которой «всё настроено, а SMS не приходят». Пока оператор не согласовал alpha-name, сообщения либо не уходят, либо приходят с чужой подписи. Проверьте статус имени в личном кабинете агрегатора до настройки 1С.

Подготовка к подключению SMS
Выполнено: 0 / 5

Что требуется от платформы 1С и базы

Отправка SMS работает на платформе 8.3 с интерфейсом «Такси». Специальных требований к номеру релиза платформы нет — подойдёт любой актуальный, но обновлённая платформа избавляет от части проблем с защищённым соединением.

Ключевые условия:

  • 🌐 Выход в интернет с того узла, где формируется запрос. В файловой базе — с компьютера пользователя. В клиент-серверной рассылку обычно отправляет серверный код, значит доступ в интернет нужен у сервера 1cv8 (служба 1C:Enterprise), а не только у клиента.
  • 🔒 Поддержка HTTPS. API агрегаторов работают по https://, порт 443. В коде за это отвечает объект защищённого соединения — платформа подключает OpenSSL автоматически.
  • 🔁 Прокси, если интернет идёт через него. Параметры прокси задаются в 1С отдельно, иначе запрос не выйдет наружу.

В клиент-серверном варианте проверяйте интернет именно на сервере. Частая ошибка: у бухгалтера сайт агрегатора открывается, а служба 1C:Enterprise сидит за закрытым файрволом — и серверная рассылка молча не уходит.

Встроенная отправка SMS в типовых конфигурациях

В типовых решениях на базе стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, Розница, УНФ) рассылка SMS уже встроена. Писать код не нужно — достаточно заполнить настройки.

  1. Откройте Администрирование → Органайзер.
  2. Найдите группу настроек отправки SMS: флажок «Отправка SMS» и ссылку настройки рядом с ним. В разных конфигурациях формулировка пункта немного отличается, но находится он в блоке органайзера.
  3. Включите флажок и перейдите по ссылке настройки.
  4. В поле провайдера выберите агрегатора из списка. В списке есть несколько известных сервисов (например, SMSC.ru, SMS.RU); если вашего оператора нет — выбирается вариант с ручным вводом адреса и параметров HTTP-запроса.
  5. Введите логин и пароль (или API-ключ) из личного кабинета агрегатора.
  6. Укажите имя отправителя — ровно то, что согласовал оператор.
  7. Сохраните и нажмите кнопку проверки, если она есть, либо отправьте тестовое сообщение на свой номер.

После этого SMS можно слать прямо из карточек: в документе или справочнике контрагента появляется команда отправки сообщения по номеру телефона из реквизитов.

Номер телефона в карточке контрагента или сотрудника храните в международном формате — +79991234567. Агрегаторы спокойнее принимают его, чем запись через 8 и со скобками.

Автоматические рассылки: оповещения и напоминания

В ЗУП и УТ встроенную отправку используют для авторассылок: расчётные листки сотрудникам, оповещение клиента о статусе заказа, напоминание о задолженности. Шаблоны и условия настраиваются в том же разделе органайзера или в настройках соответствующего документа. Текст собирается из параметров — имя, сумма, дата — через шаблон сообщения.

Перед массовой авторассылкой проверьте два момента. Первый — у контрагентов и сотрудников должны быть заполнены телефоны в пригодном формате, иначе часть сообщений просто не уйдёт. Второй — на балансе агрегатора должно хватить средств на всю выборку; при расчётных листках на сотню человек это сразу заметная сумма. Запустите рассылку сначала на одном-двух тестовых получателях и убедитесь, что текст шаблона подставился корректно.

Отправка SMS через HTTP-запрос прямо в коде

Если встроенной команды мало или нужна своя логика (например, слать SMS при проведении документа), сообщение отправляют HTTP-запросом к API агрегатора. Большинство сервисов принимают простой GET- или POST-запрос.

Пример для SMSC.ru — функция формирует запрос и возвращает ответ сервиса:

Функция ОтправитьSMS(Телефон, Текст) Экспорт

    Логин  = "мой_логин";
    Пароль = "мой_пароль";

    Параметры = "login=" + КодироватьСтроку(Логин, СпособКодированияСтроки.КодировкаURL)
        + "&psw="    + КодироватьСтроку(Пароль, СпособКодированияСтроки.КодировкаURL)
        + "&phones=" + КодироватьСтроку(Телефон, СпособКодированияСтроки.КодировкаURL)
        + "&mes="    + КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL);

    Соединение = Новый HTTPСоединение(
        "smsc.ru", 443, , , , 60, Новый ЗащищенноеСоединениеOpenSSL);

    Запрос = Новый HTTPЗапрос("/sys/send.php?" + Параметры);
    Ответ  = Соединение.Получить(Запрос);

    Возврат Ответ.ПолучитьТелоКакСтроку();

КонецФункции

Разбор ключевых мест:

  • 🔐 Логин и пароль не пишут прямо в коде рабочей базы. Храните их в константе, в параметрах безопасного хранилища или в реквизите служебного справочника, а в функцию передавайте значением.
  • 🧩 КодироватьСтроку с режимом КодировкаURL экранирует текст и телефон — без этого кириллица и пробелы ломают запрос.
  • ⏱️ Шестой параметр HTTPСоединение — таймаут в секундах. Поставьте разумное значение, чтобы проведение документа не висело, если агрегатор не отвечает.
  • 📥 Ответ сервиса (ПолучитьТелоКакСтроку) содержит либо id сообщения, либо код ошибки. Его стоит разобрать и записать в журнал регистрации.

Точные адрес /sys/send.php и названия параметров (psw, phones, mes) приведены для SMSC.ru. У другого агрегатора они свои — сверяйтесь с его документацией по API, не переносите параметры вслепую.

В клиент-серверной базе такой код выполняйте на сервере (директива &НаСервере или серверный общий модуль): у клиентского компьютера может не быть прямого доступа к адресу агрегатора.

Как разобрать ответ и проверить доставку

В ответ на запрос агрегатор возвращает строку: при успехе — идентификатор принятого сообщения, при отказе — код ошибки. Этот идентификатор стоит сохранить в базе: по нему отдельным запросом (у SMSC.ru это адрес вида /sys/status.php с передачей id и телефона) позже запрашивают реальный статус — доставлено, в очереди или отклонено.

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

Отправка SMS в нетиповых и самописных конфигурациях

Если в базе нет стандартных подсистем (самописная конфигурация, сильно урезанное решение), встроенного пункта органайзера не будет. Здесь остаётся прямой HTTP-запрос из предыдущего раздела — его оборачивают в удобный механизм.

Куда встроить вызов:

  • 🧾 В обработчик события документа. Например, в ПослеЗаписи или ОбработкаПроведения — чтобы SMS уходила при проведении заказа или отгрузки.
  • 🖲️ В команду формы. Добавляете на форму документа или списка команду «Отправить SMS» и в её обработчике вызываете функцию отправки.
  • ⏰ В регламентное задание. Для массовых рассылок по расписанию — задание проходит по выборке и шлёт сообщения пачкой.

Для массовой рассылки не отправляйте тысячу запросов по одному в цикле формы — это надолго подвесит сеанс. Выносите рассылку в фоновое или регламентное задание и, если агрегатор поддерживает, передавайте список номеров одним запросом.

Заведите служебный регистр сведений: номер, текст, дата, статус, id у агрегатора. Тогда отправку видно, повторы не уходят дважды, а недоставленные сообщения легко найти и переслать.

Внешние обработки и расширения конфигурации

Чтобы не менять типовую конфигурацию и не терять поддержку при обновлениях, отправку SMS выносят во внешнюю обработку или расширение.

Коротко о разнице:

ВариантКогда подходитПлюсМинус
Внешняя обработка (.epf)разовая или редкая рассылка, ручной запускне трогает конфигурацию, легко передатьнужно открывать вручную, не встроена в документы
Расширение конфигурации (.cfe)постоянная работа, кнопки в документахвстраивается в формы, обновлениям не мешаеттребует включённой возможности изменения

Расширения конфигурации доступны начиная с платформы 8.3.6. Готовое расширение подключают в Администрирование → Печатные формы, отчёты и обработки → Расширения (в типовых решениях) или через конфигуратор. После загрузки .cfe выполняется отдельный шаг — обновление конфигурации базы данных.

Внешние обработки и расширения из непроверенных источников запускают код в вашей базе. Берите их только у разработчика, которому доверяете, и сначала проверяйте на копии.

Почему SMS не доходят: журнал и отладка

Когда рассылка «настроена, но не работает », ищут не в 1С, а в двух журналах: в журнале регистрации 1С (что ушло из программы) и в личном кабинете агрегатора (что он принял и что сделал с сообщением).

Порядок разбора:

  1. Отправьте тестовое SMS на свой номер и сразу откройте Администрирование → Обслуживание → Журнал регистрации (или через конфигуратор). Нет записи о попытке отправки — значит, код или встроенная команда не отработали, дело в 1С.
  2. Есть запись об отправке, но телефон молчит — смотрите личный кабинет агрегатора: там видно, принял ли он сообщение и какой у него статус доставки.
  3. Сверьте баланс и статус имени отправителя — две самые частые причины отказа на стороне оператора.
Диагностика: выберите симптом

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

Длинное сообщение режется на сегменты (70 символов кириллицей, 160 — латиницей) и тарифицируется по каждому. Если вместо одной SMS списывается три — текст просто длиннее одного сегмента, это не ошибка.

Частые вопросы

Можно ли отправлять рекламные SMS клиентам без их согласия?
Нет. Рекламная рассылка по закону «О рекламе» (ст. 18) допускается только с предварительного согласия абонента, и по его требованию рассылку нужно прекратить. Сервисные сообщения (статус заказа, расчётный листок) рекламой не считаются.
Нужен ли отдельный модуль, чтобы отправлять SMS из Бухгалтерии?
Нет. В типовой Бухгалтерии 3.0 отправка SMS встроена через стандартные подсистемы — достаточно заполнить настройки в разделе органайзера и подключить агрегатора.
Почему в клиент-серверной базе SMS не уходят, хотя у бухгалтера интернет есть?
Серверный код выходит в интернет от имени службы 1C:Enterprise, а не компьютера пользователя. Если у сервера нет доступа к адресу агрегатора, рассылка не уйдёт. Проверяйте интернет и файрвол на сервере.
Можно ли узнать из 1С, дошло ли сообщение?
Напрямую статус доставки хранится у агрегатора. Многие API возвращают id сообщения, по которому отдельным запросом можно запросить статус. Этот id стоит сохранять в базе при отправке.
Как не хранить пароль агрегатора открытым в коде?
Держите логин и пароль в константе, служебном справочнике или безопасном хранилище данных, а в функцию отправки передавайте их значением. В тексте модуля реквизиты не пишут.

Источники

  • Федеральный закон «О рекламе» от 13.03.2006 № 38-ФЗ, ст. 18