Отправка SMS из 1С: встроенная рассылка, HTTP-запрос и обработки
Содержание
Отправка 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С.
Что требуется от платформы 1С и базы
Отправка SMS работает на платформе 8.3 с интерфейсом «Такси». Специальных требований к номеру релиза платформы нет — подойдёт любой актуальный, но обновлённая платформа избавляет от части проблем с защищённым соединением.
Ключевые условия:
- 🌐 Выход в интернет с того узла, где формируется запрос. В файловой базе — с компьютера пользователя. В клиент-серверной рассылку обычно отправляет серверный код, значит доступ в интернет нужен у сервера
1cv8(служба1C:Enterprise), а не только у клиента. - 🔒 Поддержка HTTPS. API агрегаторов работают по
https://, порт 443. В коде за это отвечает объект защищённого соединения — платформа подключает OpenSSL автоматически. - 🔁 Прокси, если интернет идёт через него. Параметры прокси задаются в 1С отдельно, иначе запрос не выйдет наружу.
В клиент-серверном варианте проверяйте интернет именно на сервере. Частая ошибка: у бухгалтера сайт агрегатора открывается, а служба 1C:Enterprise сидит за закрытым файрволом — и серверная рассылка молча не уходит.
Встроенная отправка SMS в типовых конфигурациях
В типовых решениях на базе стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, Розница, УНФ) рассылка SMS уже встроена. Писать код не нужно — достаточно заполнить настройки.
- Откройте
Администрирование → Органайзер. - Найдите группу настроек отправки SMS: флажок «Отправка SMS» и ссылку настройки рядом с ним. В разных конфигурациях формулировка пункта немного отличается, но находится он в блоке органайзера.
- Включите флажок и перейдите по ссылке настройки.
- В поле провайдера выберите агрегатора из списка. В списке есть несколько известных сервисов (например, SMSC.ru, SMS.RU); если вашего оператора нет — выбирается вариант с ручным вводом адреса и параметров HTTP-запроса.
- Введите логин и пароль (или API-ключ) из личного кабинета агрегатора.
- Укажите имя отправителя — ровно то, что согласовал оператор.
- Сохраните и нажмите кнопку проверки, если она есть, либо отправьте тестовое сообщение на свой номер.
После этого 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С (что ушло из программы) и в личном кабинете агрегатора (что он принял и что сделал с сообщением).
Порядок разбора:
- Отправьте тестовое SMS на свой номер и сразу откройте
Администрирование → Обслуживание → Журнал регистрации(или через конфигуратор). Нет записи о попытке отправки — значит, код или встроенная команда не отработали, дело в 1С. - Есть запись об отправке, но телефон молчит — смотрите личный кабинет агрегатора: там видно, принял ли он сообщение и какой у него статус доставки.
- Сверьте баланс и статус имени отправителя — две самые частые причины отказа на стороне оператора.
КодироватьСтроку(Текст, СпособКодированияСтроки.КодировкаURL).http:// вместо https:// или платформа не смогла установить TLS. Проверьте адрес и используйте объект защищённого соединения.Отдельная ситуация — часть сообщений уходит, часть нет при массовой рассылке. Обычно дело в ограничении скорости на стороне агрегатора: он принимает не больше определённого числа запросов в секунду. Если вы шлёте их в плотном цикле, лишние отбрасываются. Решение — слать пачками с небольшой паузой либо одним запросом со списком номеров, если API это поддерживает.
Длинное сообщение режется на сегменты (70 символов кириллицей, 160 — латиницей) и тарифицируется по каждому. Если вместо одной SMS списывается три — текст просто длиннее одного сегмента, это не ошибка.
Частые вопросы
Можно ли отправлять рекламные SMS клиентам без их согласия?
Нужен ли отдельный модуль, чтобы отправлять SMS из Бухгалтерии?
Почему в клиент-серверной базе SMS не уходят, хотя у бухгалтера интернет есть?
1C:Enterprise, а не компьютера пользователя. Если у сервера нет доступа к адресу агрегатора, рассылка не уйдёт. Проверяйте интернет и файрвол на сервере.Можно ли узнать из 1С, дошло ли сообщение?
Как не хранить пароль агрегатора открытым в коде?
Источники
- Федеральный закон «О рекламе» от 13.03.2006 № 38-ФЗ, ст. 18