Мобильная платформа 1С 8.3: чтение СМС, журнала звонков и т.д. и т.п.
Случилось так, что мои знакомые попросили найти программку по учету личных финансов. Изучив возможные предложения обнаружил, что необходимый функционал (загрузка операций из СМС о банка, загрузка номенклатуры с чека) в основном во всех предложениях платны. Было принято решение написать свое приложение. Единственный момент, более ранние релизы платформы не поддерживали чтение СМС. В поисках решения, вплоть до написания отдельного приложения на базе андроид, с выгрузкой журнала СМС в файл и последующей загрузкой в мобильное приложение, обнаружил, что последние версии платформы имеют такой функционал.
Перерыв интернет более или менее понятных пояснений не обнаружил, по этому, путем проб и ошибок хотелось бы поделиться своим опытом:
1. Чтения журнала СМС, обязательно должно быть установлено разрешение на чтение журнала СМС:

2.Далее код на клиенте в любом месте:
Если СредстваТелефонии.ПоддерживаетсяЖурналSMS()=Истина Тогда
ЖурналSMS=СредстваТелефонии.ПолучитьЖурналSMS();
Если ЖурналSMS<>Неопределено Тогда
Отбор = Новый ОтборКомпоновкиДанных;
ЭлементОтбора = Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НомераТелефонов");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = "900";
ЭлементОтбора.Использование = Истина;
SMSОтБанка=ЖурналSMS.НайтиЗаписи(отбор);
сч=0;
Для Каждого SMS из SMSОтБанка Цикл
Если ЗначениеЗаполнено(SMS.ДатаПолучения)=Истина Тогда
сч=сч+1;
Если сч=10 Тогда
Прервать;
КонецЕсли;
Если ОбщийМодуль.ЗагрузитьСМС(SMS.ДатаПолучения,SMS.Текст)=0 Тогда
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
И здесь грабли, равно как и при получении журнала звонков, но об этом далее.
Дело в том, что провайдер связи или у меня телефон такой, я еще не понял, скорее всего провайдер, возвращает не верную дату. У меня TELE2, разница в три часа ровно!!! На других не пробывал. Можно предположить, что сервер TELE2 находиться в другом часовом поясе, возможно как и сервера других провайдеров.
Тоже самое наблюдалось и при загрузке журнала звонков:
Если СредстваТелефонии.ПоддерживаетсяЖурналЗвонков()=Истина Тогда
ЖурналЗвонков=СредстваТелефонии.ПолучитьЖурналЗвонков();
Тек=ЖурналЗвонков.НайтиЗаписи();
Если тек<>Неопределено Тогда
сч=0;
Отчет=""+Отчет+" ПОСЛЕДНИЕ 50 ЗВОНКОВ"+Символы.ПС+Символы.ПС+"";
Для Каждого зв из тек Цикл
сч=сч+1;
Если сч=50 Тогда
Прервать;
КонецЕсли;
Имя=ВернутьКонтакт (зв.НомерТелефона);
ДатаПолучения=зв.Дата+10800;
Отчет=""+Отчет+""+ДатаПолучения+" "+зв.ТипЗвонка+" "+Имя+" "+зв.НомерТелефона+" "+зв.Продолжительность+""+Символы.ПС+"";
КонецЦикла;
КонецЕсли;
Цифра 10800 как раз поправка в три часа.
Чтение контактов:
Контакты=МК.НайтиКонтакты();
Если Контакты<>Неопределено Тогда
Отчет="";
Для Каждого ключ из Контакты Цикл
Конт=МК.ПолучитьКонтакт(ключ);
Номера=конт.ДанныеКонтакта.НомераТелефонов;
НомераТелефонов="";
Для Каждого ном из Номера Цикл
НомераТелефонов=""+НомераТелефонов+""+ном.Значение+"";
КонецЦикла;
Отчет=""+Отчет+""+СокрП(конт.ДанныеКонтакта.Фамилия)+" "+СокрП(конт.ДанныеКонтакта.Имя)+" "+СокрП(конт.ДанныеКонтакта.Отчество)+" "+НомераТелефонов+""+Символы.ПС+"";
КонецЦикла;
Соответственно для всех манипуляций должно быть разрешение у вашего приложения.
Не знаю, будет кому-то эта информация полезна или нет, но информации по этим вопросам оооч мало по запросам в поисковиках.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
SALE! 50%
6100
3050 руб.
07.04.2014 99894 93 205
3050 руб.
22.04.2019 125060 739 207
2196 руб.
18.01.2017 152759 235 237
5900 руб.
08.04.2020 59713 123 2
SALE! 50%
6100
3050 руб.
15.04.2025 5683 26 15
06.10.2026 1945 54 aleksandrboldyusov 0