Имя: Пароль:
1C
1С v8
Мобильное приложение и android 13
,
0 ad205
 
09.03.23
12:19
Добрый день.

При обновлении телефонов на версию android 13, перестал функционировать сервис: "СредстваПочты.Послать(Сообщение)"
Кто ни будь знает как обойти данную проблему?

Спасибо.
1 p-soft
 
09.03.23
12:24
не радостная весть. ошибку выдает какую?
2 ad205
 
09.03.23
12:31
Нет, ошибок ни каких и выдает, что сервис поддерживается, но если ранее по данной команде запускался почтовик установленный на телефоне, а если их несколько, то вопрос какой использовать, то сейчас просто тишина, как будто бы и не нажимал на кнопку((( Разрешения в настройках уже все перерыл, но найти что то не получилось(((
3 p-soft
 
09.03.23
12:35
(2) а.. это про почтовик, само апи отправки возможно живо.. пробуйте отправлять через апи.
я б сам попробовал, но дома одни огрызки и пара ТСД на 6-м.
4 p-soft
 
09.03.23
12:36
(3) вообще, это норма, так то. ждем обновление платформы
5 ad205
 
09.03.23
12:39
Платформу поставил самую свежую.
Тут задача то в следующем: в МП есть справочник с контактной информацией, при нажатии на адрес Эл.Почты, ранее открывался почтовик в котором уже указан соответствующий адрес и пользователь просто писал текст сообщения и отправлял письмо. Все работало четко, пока не обновились на 13 андройд. И вот тут что то поменяли с политикой безопасности(((
6 ad205
 
09.03.23
12:41
Весь код.    
#Если МобильноеПриложениеКлиент Тогда
        Сообщение = Новый ИнтернетПочтовоеСообщение;
        Сообщение.Тема = "Тема письма";        
        Сообщение.Получатели.Добавить("адрес получателя");
        Текст = Сообщение.Тексты.Добавить("Текст письма");
        Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
        Поддерживается = СредстваПочты.ПоддерживаетсяОтправка();
        Сообщить(Поддерживается);
        СредстваПочты.Послать(Сообщение);
    #КонецЕсли

Поддерживается = СредстваПочты.ПоддерживаетсяОтправка() Выдает, что поддерживается.
7 p-soft
 
09.03.23
12:41
(5) ну открывайте также окно, только свое и отправляйте через апи.
мы сейчас не дружим с вражеским гуглом, что он подкинет - хз. вчера попробовал на гугел плей зайти - болт, заболочен
8 p-soft
 
09.03.23
12:43
//выгрузка данных на почту
        Письмо = Новый ИнтернетПочтовоеСообщение;
        Письмо.Тема = "...";
        Письмо.Отправитель = СтруктураПодключения.АдресОтправителя;
        Письмо.ИмяОтправителя = СтруктураПодключения.ИмяПользователя;
        
        Письмо.Кодировка = "UTF-8";
        Письмо.Тексты.Добавить("...");
        
        Письмо.Вложения.Добавить(ИмяФайла, ИмяФайлаДанных);
        
        Письмо.Получатели.Добавить(СтруктураПодключения.АдресПолучателя);

        Почта = Новый ИнтернетПочта;
        Почта.Подключиться(СтруктураПодключения.Подключение);
        Почта.Послать(Письмо);
        Почта.Отключиться();
9 p-soft
 
09.03.23
12:44
(8) только надо профиль подключения заполнять и хранить
10 p-soft
 
09.03.23
12:44
(9) но это более правильно, т.к. в мобиле может не быть активного почтового аккаунта
11 ad205
 
09.03.23
13:00
Спасибо. Но все таки буду надеяться, что подправят данное недоразумение.
Один общий профиль подключения использовать то же не вариант для моей задачи.
Еще раз спасибо.
12 p-soft
 
09.03.23
13:03
(11) можно профиль:
- иметь один и хранить в коде
- иметь один, хранить на сервере и брать с сервера при отправке - более гибко
- иметь свой для каждого клиента/мобилы - юзер сам отвечает за свое счастье
13 uno-group
 
09.03.23
13:10
Откатиться на старый андроид уже предлагали? В бизнес ПО принцип работает не трош еще никто не отменял.
14 p-soft
 
09.03.23
13:12
(13) клиенту предложить откатиться? интересный однако подход)
15 ad205
 
09.03.23
13:13
(13) Вы предлагаете сотрудникам телефоны перепрошить?
Не, это не вариант))). Да и все равно задачу то нужно решить как то.
Если не так же, то максимально приближенно.
Просто тут не только написание писем по справочнику контактов, на это дело привязано, а еще много чего, в том числе получение адреса эл. почты сотрудника.
16 ad205
 
09.03.23
15:03
УРА, есть контакт, нашел вот такой пример и вот он работает!!!!

Соответственно свой код заменил вот на этот:

        НовВз = Новый ЗапускПриложенияМобильногоУстройства();
        НовВз.Действие = "android.intent.action.SENDTO";
        НовВз.Данные = "mailto:[email protected]";
        НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");
        НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Теекст-текст-текст");
        НовВз.Запустить(Истина);
17 ad205
 
09.03.23
15:12
Но есть прикол, на 12 андройде данный механизм не заполняет тему и текст письма))))

То есть нужно как то перед действом определять версию андройда.
18 p-soft
 
09.03.23
15:17
(17) ну как то же 1с это делает? и делает она скорее всего тем же интентом
19 ad205
 
09.03.23
15:25
Вот сделал так, проверил на 12 и 13 андройде, работает)))

    #Если МобильноеПриложениеКлиент Тогда
        СИ = Новый СистемнаяИнформация();
        ВерсияОС = СИ.ВерсияОС;
        НомерВерсии = СокрЛП(СтрЗаменить(ВерсияОС,"Android",""));
        НомерВерсииЧисло = Число(НомерВерсии);
        Если НомерВерсииЧисло >= 13 Тогда
            НовВз = Новый ЗапускПриложенияМобильногоУстройства();
            НовВз.Действие = "android.intent.action.SENDTO";
            НовВз.Данные = "mailto:Адрес";
            НовВз.ДополнительныеДанные.Добавить("android.intent.extra.SUBJECT","Тема письма");
            НовВз.ДополнительныеДанные.Добавить("android.intent.extra.TEXT","Текст письма);
            НовВз.Запустить(Истина);
        Иначе        
            Сообщение = Новый ИнтернетПочтовоеСообщение;
            Сообщение.Тема = "Тема письма";        
            Сообщение.Получатели.Добавить("Адрес");
            Текст = Сообщение.Тексты.Добавить("Текст письма);
            Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
            Поддерживается = СредстваПочты.ПоддерживаетсяОтправка();
            СредстваПочты.Послать(Сообщение);
        КонецЕсли;
    #КонецЕсли

Может кому пригодится)