Как сделать телефонный звонок и отправить SMS из мобильного приложения 1С?

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

Развитие мобильных рабочих мест на платформе 1С позволяет автоматизировать работу курьеров, торговых представителей, сервисных инженеров и менеджеров по продажам. Одной из ключевых потребностей при работе с мобильным клиентом или автономным мобильным приложением является возможность оперативной связи с клиентом напрямую из интерфейса программы. В рамках данной статьи мы подробно разберем, как реализовать функции телефонии и отправки SMS-сообщений в мобильной платформе 1С, проанализируем доступные методы, рассмотрим ограничения операционных систем и научимся правильно настраивать права доступа.

Шаг 1. Обязательная настройка разрешений (Permissions) в конфигураторе

Прежде чем приступать к написанию программного кода, необходимо понять важнейшее правило мобильной разработки: ни один метод телефонии не сработает на реальном мобильном устройстве без предварительной настройки разрешений в конфигурации. Если проигнорировать этот шаг, операционная система мобильного телефона (как Android, так и iOS) заблокирует вызов программы, а платформа 1С сгенерирует критическую ошибку выполнения (runtime exception).

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

  1. Откроем нашу конфигурацию в режиме Конфигуратора.
  2. В дереве метаданных нажмем правой кнопкой мыши на корневой элемент конфигурации и выберем пункт «Свойства».
  3. В открывшейся панели свойств найдем раздел «Параметры мобильного приложения» или перейдем в пункт «Требуемые разрешения мобильного приложения» (в зависимости от версии платформы название может незначительно отличаться).
  4. В появившемся списке доступных системных служб обязательно установим флажок напротив пункта «Телефония» (Telephony). Если в приложении также планируется отправка или обработка текстовых сообщений, дополнительно активируем флажок «SMS».
  5. Сохраним конфигурацию и обновим информационную базу. При сборке мобильного приложения или публикации мобильного клиента платформа автоматически запишет данные требования в манифест приложения (для Android) и файл свойств (для iOS).

Шаг 2. Простой метод интеграции — использование системных URI через ЗапуститьПриложение()

Исторически первым и самым простым способом совершить звонок или подготовить SMS-сообщение была передача управления операционной системе устройства через зарегистрированные схемы протоколов tel: и sms:. Этот метод до сих пор актуален благодаря своей простоте и абсолютной кроссплатформенности.

Давайте разберем по шагам, как это работает. При вызове функции ЗапуститьПриложение() с префиксом протокола мобильная операционная система перехватывает запрос и открывает назначенное по умолчанию приложение (диалер для звонков или мессенджер для СМС).

Рассмотрим пример программного кода для совершения вызова:


&НаКлиенте
Процедура СовершитьЗвонокЧерезСистему(НомерТелефона)
    // Очищаем номер от лишних символов (пробелов, скобок, дефисов), оставляя только цифры и знак плюс
    ОчищенныйНомер = ОчиститьНомерТелефона(НомерТелефона);
    
    // Формируем системную команду запуска с протоколом "tel:"
    СистемнаяКоманда = "tel:" + ОчищенныйНомер;
    
    Попытка
        ЗапуститьПриложение(СистемнаяКоманда);
    Исключение
        ИнформацияОбОшибке = ОписаниеОшибки();
        ПоказатьПредупреждение(, "Не удалось выполнить звонок. Ошибка: " + ИнформацияОбОшибке);
    КонецПопытки;
КонецПроцедуры

Аналогичным образом мы можем открыть системный редактор SMS-сообщений, передав номер получателя:


&НаКлиенте
Процедура ОткрытьРедакторSMSЧерезСистему(НомерТелефона)
    ОчищенныйНомер = ОчиститьНомерТелефона(НомерТелефона);
    СистемнаяКоманда = "sms:" + ОчищенныйНомер;
    
    Попытка
        ЗапуститьПриложение(СистемнаяКоманда);
    Исключение
        ПоказатьПредупреждение(, "Не удалось запустить отправку SMS.");
    КонецПопытки;
КонецПроцедуры

Преимущества данного метода: предельная простота внедрения, работа на любых версиях платформы 1С.

Недостатки метода: у разработчика нет возможности управлять процессом звонка, контролировать его завершение, автоматически отправлять заранее подготовленный текст СМС без участия пользователя или совершать вызовы в фоновом режиме.

Шаг 3. Профессиональный подход — использование встроенного объекта СредстваТелефонии

Начиная с современных версий мобильной платформы 1С, разработчикам стал доступен мощный специализированный объект СредстваТелефонии. Он предоставляет прямой доступ к аппаратным возможностям смартфона и позволяет гибко управлять звонками и сообщениями на уровне кода.

Прежде чем вызывать методы набора номера, крайне важно убедиться, что устройство пользователя в принципе поддерживает телефонную связь (например, приложение может быть запущено на планшете без SIM-карты или на эмуляторе). Проанализируем правильный шаблон вызова функции набора номера:


&НаКлиенте
Процедура НабратьНомерНаУстройстве(НомерТелефона)
    // Шаг 1. Проверяем, поддерживает ли устройство телефонные звонки
    Если СредстваТелефонии.ПоддерживаетсяНаборНомера() Тогда
        
        // Шаг 2. Совершаем звонок. 
        // Второй параметр определяет, будет ли вызов интерактивным (Ложь) или мгновенным без подтверждения (Истина).
        РежимВызова = Ложь; 
        
        Попытка
            СредстваТелефонии.НабратьНомер(НомерТелефона, РежимВызова);
        Исключение
            ЗаписатьЛогОшибки(ОписаниеОшибки());
            ПоказатьПредупреждение(, "Произошла ошибка при попытке набора номера.");
        КонецПопытки;
        
    Иначе
        ПоказатьПредупреждение(, "Ваше устройство не поддерживает выполнение телефонных вызовов.");
    КонецЕсли;
КонецПроцедуры

Рассмотрим подробнее поведение второго параметра метода СредстваТелефонии.НабратьНомер():

Шаг 4. Кроссплатформенные различия: Android против iOS

Разработчикам мобильных решений на 1С необходимо четко понимать ограничения целевых операционных систем, так как возможности работы с телефонией на Android и iOS кардинально различаются.

Операционная система iOS (Apple Devices):
Компания Apple уделяет повышенное внимание конфиденциальности личных данных пользователей. Из-за этого функционал телефонии на устройствах Apple жестко ограничен. В среде iOS разработчик в мобильной 1С может выполнять только одно действие — инициировать исходящий телефонный вызов. Доступ к журналу звонков, определение номеров входящих вызовов и перехват событий разговора полностью заблокированы на уровне самой ОС.

Операционная система Android:
Android предоставляет разработчикам гораздо больше свободы для создания полноценных CRM-инструментов. Используя объект СредстваТелефонии на Android-устройствах, мы можем реализовать следующие функции:

Шаг 5. Расширенная программная работа с SMS-сообщениями

Если для простых задач достаточно вызвать внешнее приложение через протокол sms:, то для автоматических систем уведомлений (например, отправка кодов подтверждения или статусов заказов) требуется контролируемая программная отправка. Платформа 1С позволяет конструировать сообщения как полноценные объекты.

Разберем пример создания и отправки программного SMS-сообщения:


&НаКлиенте
Процедура ОтправитьСМСКлиенту(НомерПолучателя, ТекстОповещения)
    
    // Создаем новый объект сообщения
    НовоеSMS = Новый SMSСообщение;
    НовоеSMS.Получатели.Добавить(НомерПолучателя);
    НовоеSMS.Текст = ТекстОповещения;
    
    // Проверяем возможность отправки на устройстве
    Если СредстваТелефонии.ПоддерживаетсяОтправкаSMS() Тогда
        Попытка
            // Второй параметр: Истина - открыть редактор для ручной отправки пользователем,
            // Ложь - отправить СМС сразу в фоновом режиме (требует дополнительных разрешений ОС)
            СредстваТелефонии.ПослатьSMS(НовоеSMS, Истина);
        Исключение
            ПоказатьПредупреждение(, "Ошибка отправки СМС: " + ОписаниеОшибки());
        КонецПопытки;
    Иначе
        ПоказатьПредупреждение(, "Данное устройство не поддерживает отправку SMS-сообщений.");
    КонецЕсли;
    
КонецПроцедуры

На устройствах под управлением Android также доступно чтение входящих сообщений с помощью метода СредстваТелефонии.ПолучитьЖурналSMS(). Это открывает широкие возможности для автоматического разбора входящих СМС-уведомлений, например, банковских подтверждений оплаты или кодов авторизации сторонних сервисов.

Шаг 6. Готовые CRM-решения для мобильной телефонии в типовых конфигурациях

Если перед вами стоит задача развернуть готовую систему учета звонков, не обязательно писать весь функционал с нуля. Фирма 1С активно развивает встроенные механизмы интеграции мобильных устройств со стационарными базами данных. Ярким примером служит подсистема «Мобильная телефония» в конфигурации «1С:Управление нашей фирмой» (УНФ).

Данная технология работает следующим образом:

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

← На главную