Платформа 1С:Предприятие 7.7 («семёрка»), несмотря на свой возраст, остается рабочей лошадкой во многих сервисных центрах и ремонтных мастерских. Однако перед современным бизнесом встает задача оперативного уведомления клиентов о готовности заказов. Сегодня обычного SMS часто недостаточно — клиенты предпочитают Telegram, WhatsApp или Viber. Рассмотрим, как преодолеть технологический разрыв между «клюшками» и современными API мессенджеров.
Главная сложность заключается в том, что встроенный язык 1С 7.7 не обладает нативными средствами для работы с современными веб-протоколами. Разберем основные препятствия, которые нам предстоит обойти:
Проанализируем пошагово три основных способа решения задачи, от простых к более продвинутым.
Это самый быстрый способ «подружить» 1С 7.7 с внешним миром без написания сложных обработчиков. Мы будем использовать принцип передачи параметров через командную строку Windows. Рассмотрим пример с отправкой SMS через сервис sms.ru или работу с почтовым шлюзом.
Для реализации можно использовать утилиту sendEmail.exe или cURL. Разберем логику работы:
1. Формируем строку запуска внешней программы.
2. Вызываем команду через КомандаСистемы().
Пример кода для отправки уведомления через консольную утилиту:
Процедура ОтправитьУведомление(ТекстСообщения, НомерТелефона)
ПутьКПрограмме = "C:\Tools\curl.exe";
// API ключ сервиса
ApiKey = "ВАШ-API-KEY";
// Формируем строку запроса для SMS-шлюза
ПараметрыЗапуска = "-k https://sms.ru/sms/send?api_id=" + ApiKey + "&to=" + НомерТелефона + "&msg=" + ТекстСообщения;
// Выполняем команду
КомандаСистемы(ПутьКПрограмме + " " + ПараметрыЗапуска);
КонецПроцедуры
Важный нюанс: Текст сообщения должен быть предварительно перекодирован в URL-формат, особенно если в нем есть пробелы или кириллица.
Как справедливо отмечают эксперты, наиболее стабильный вариант для 1С 7.7 — это создание небольшого исполняемого файла (EXE) на языке C#, который будет выступать посредником (bridge). Этот файл принимает данные из 1С, выполняет всю «грязную» работу по шифрованию и упаковке в JSON, а затем отправляет запрос в API мессенджера.
Проанализируем преимущества этого подхода:
Если разработка на C# кажется сложной, можно использовать PowerShell, который встроен во все современные версии Windows. Посмотрим, как может выглядеть вызов PowerShell скрипта из 1С для отправки сообщения в Telegram:
ТекстСкрипта = "$token = 'BOT_TOKEN'; $chatid = 'CHAT_ID'; $text = 'Ваш заказ готов!';
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
Invoke-RestMethod -Uri ""https://api.telegram.org/bot$token/sendMessage?chat_id=$chatid&text=$text""";
// Сохраняем текст в .ps1 файл и запускаем
КомандаСистемы("powershell.exe -ExecutionPolicy Bypass -File C:\Scripts\SendTelegram.ps1");
Если стоит задача общаться с клиентом в режиме реального времени в разных мессенджерах (мультиканальность), лучше всего использовать специализированные API-агрегаторы (например, Umnico, Pact или подобные). Эти сервисы предоставляют единое API для всех мессенджеров.
Для работы напрямую из 1С 7.7 без внешних EXE-файлов можно использовать объект WinHttp.WinHttpRequest.5.1. Выясним, как это реализовать:
1. Инициализируем COM-объект.
2. Устанавливаем параметры соединения.
3. Отправляем POST-запрос с JSON-телом.
Пример реализации функции отправки через HTTP запрос:
Функция ОтправитьЧерезAPI(Метод, Данные)
Попытка
Http = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
Http.Open("POST", "https://api.provider.com/v1/" + Метод, 0);
Http.SetRequestHeader("Content-Type", "application/json");
Http.SetRequestHeader("Authorization", "Bearer YOUR_TOKEN");
// В 1С 7.7 данные нужно предварительно перевести в UTF-8
// Используем ADODB.Stream для конвертации кодировки
ТелоЗапроса = ПреобразоватьВUtf8(Данные);
Http.Send(ТелоЗапроса);
Статус = Http.Status;
Возврат Статус;
Исключение
Сообщить("Ошибка связи: " + ОписаниеОшибки());
Возврат 0;
КонецПопытки;
КонецФункции
Это критически важный момент. Без перекодировки клиент получит «кракозябры» вместо текста. Рассмотрим стандартный метод конвертации через ADODB.Stream, который доступен в большинстве систем:
Функция ПреобразоватьВUtf8(ТекстВ1251)
Stream = СоздатьОбъект("ADODB.Stream");
Stream.Type = 2; // adTypeText
Stream.Charset = "windows-1251";
Stream.Open();
Stream.WriteText(ТекстВ1251);
Stream.Position = 0;
Stream.Charset = "utf-8";
Результат = Stream.ReadText();
Возврат Результат;
КонецФункции
Разберем ситуацию, когда вы хотите сэкономить. SMS стоит дорого, а сообщения в мессенджеры зачастую бесплатны или стоят значительно дешевле. Рекомендуем настроить каскадную пересылку через агрегатора:
Такая логика настраивается на стороне провайдера API, а из 1С 7.7 вы просто отправляете один запрос с текстом и номером телефона. Это избавляет от необходимости писать сложную логику проверки статусов внутри «семёрки».
Мы проанализировали основные способы внедрения современных коммуникаций в 1С 7.7. Несмотря на технологические ограничения платформы, использование внешних компонент, PowerShell-скриптов или COM-объектов WinHttp позволяет успешно интегрировать систему с Telegram, WhatsApp и Viber. Выбор конкретного метода зависит от ваших навыков программирования: от простого вызова curl.exe до создания полноценной микросервисной прослойки на C#.