Приведем код к следующему виду:
Ответ = ПреобразоватьОтвет(ФайлОтвета, "ns1:ResultArray");
//ИдентификаторСообщения = Ответ.id;
//++
//Результат.ОтправленныеСообщения.Добавить(Новый Структура("НомерПолучателя,ИдентификаторСообщения",
// НомерПолучателя));
//
//Если ЗначениеЗаполнено(Ответ) Тогда
// Результат.ОписаниеОшибки = Результат.ОписаниеОшибки
// + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='SMS на номер %1';uk='SMS на номер %1'"), Элемент)
// + ": " + Ответ
// + Символы.ПС;
//КонецЕсли;
Попытка
ИдентификаторСообщения = Новый УникальныйИдентификатор(Ответ);
УспешноОтправлено = Истина;
Исключение
УспешноОтправлено = Ложь;
КонецПопытки;
Если УспешноОтправлено Тогда
Результат.ОтправленныеСообщения.Добавить(Новый Структура("НомерПолучателя,ИдентификаторСообщения",
Элемент, Ответ));
Иначе
Результат.ОписаниеОшибки = Результат.ОписаниеОшибки
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='SMS на номер %1';uk='SMS на номер %1'"), Элемент)
+ ": " + Ответ
+ Символы.ПС;
КонецЕсли;
//--
Приведем код к следующему виду:
| <soapenv:Body> | <tur:GetMessageStatus> | <!--Optional:--> | <tur:MessageId>" + ИдентификаторСообщения + "</tur:MessageId> | </tur:GetMessageStatus> | </soapenv:Body>
//++ //Баланс = ПреобразоватьОтвет(ФайлОтвета, "ns1:GetCreditBalanceResult"); //УдалитьФайлы(ФайлОтвета); //Ответ = Неопределено; //Запрос = Неопределено; //Соединение = Неопределено; //Возврат Баланс; СтатусДоставки = ПреобразоватьОтвет(ФайлОтвета, "ns1:GetMessageStatusResult"); УдалитьФайлы(ФайлОтвета); Возврат СтатусДоставкиSMS(СтатусДоставки); //--
Приведем код к следующему виду:
Если СокрЛП(ЧтениеХМЛ.Имя) <> Тег и ЧтениеХМЛ.ТипУзла <> ТипУзлаXML.Текст Тогда Продолжить; ИначеЕсли ЧтениеХМЛ.ТипУзла = ТипУзлаXML.Текст и СокрЛП(ЧтениеХМЛ.Имя) = "#text" Тогда //++ //ЗначениеВозврата = СокрЛП(ЧтениеХМЛ.Значение); //Прервать; Если ЧтениеХМЛ.Значение = "Сообщения успешно отправлены" Тогда Продолжить; Иначе ЗначениеВозврата = СокрЛП(ЧтениеХМЛ.Значение); Прервать; КонецЕсли; //-- КонецЕсли;
Функция СтатусДоставкиSMS(СтатусСтрокой)
//Сообщение с ID X не найдено
//Не достаточно параметров для выполнения функции
//Вы не авторизированы
//Отправлено
//В очереди
//Сообщение передано в мобильную сеть
//Сообщение доставлено получателю
//Истек срок сообщения
//Удалено оператором
//Не доставлено
//Сообщение доставлено на сервер
//Отклонено оператором
//Неизвестный статус
//Ошибка, сообщение не отправлено
//Не достаточно кредитов на счете
//Отправка отменена
//Отправка приостановлена
//Удалено пользователем
СоответствиеСтатусов = Новый Соответствие;
СоответствиеСтатусов.Вставить("" , "НеОтправлялось");
СоответствиеСтатусов.Вставить("Отправка приостановлена" , "НеОтправлялось"); // SCHEDULED
СоответствиеСтатусов.Вставить("В очереди" , "Отправляется"); // ENROUTE
СоответствиеСтатусов.Вставить("Сообщение передано в мобильную сеть" , "Отправляется"); // ENROUTE
СоответствиеСтатусов.Вставить("Сообщение доставлено на сервер" , "Отправляется"); // ENROUTE
СоответствиеСтатусов.Вставить("Сообщение доставлено получателю" , "Доставлено"); // DELIVERED
СоответствиеСтатусов.Вставить("Истек срок сообщения" , "НеДоставлено"); // EXPIRED
СоответствиеСтатусов.Вставить("Отправка отменена" , "НеДоставлено"); // DELETED
СоответствиеСтатусов.Вставить("Удалено пользователем" , "НеДоставлено"); // DELETED
СоответствиеСтатусов.Вставить("Ошибка, сообщение не отправлено" , "НеДоставлено"); // UNDELIVERABLE
СоответствиеСтатусов.Вставить("Отправлено" , "Отправлено"); // ACCEPTED
СоответствиеСтатусов.Вставить("Неизвестный статус" , "Ошибка"); // UNKNOWN
СоответствиеСтатусов.Вставить("Отклонено оператором" , "НеОпознаноПровайдером"); // REJECTED
СоответствиеСтатусов.Вставить("Удалено оператором" , "НеОпознаноПровайдером"); // DISCARDED
СоответствиеСтатусов.Вставить("Не доставлено" , "НеДоставлено"); // SENDING
СоответствиеСтатусов.Вставить("Не достаточно кредитов на счете" , "НеДоставлено"); // NOT_SUPPORTED
СоответствиеСтатусов.Вставить("Вы не авторизированы" , "НеДоставлено"); // WRONG_ALPHANAME
СоответствиеСтатусов.Вставить("Не достаточно параметров для выполнения функции", "НеДоставлено"); // WRONG_ALPHANAME_RETURNED
Результат = СоответствиеСтатусов[СтатусСтрокой];
Возврат ?(Результат = Неопределено, "Ошибка", Результат);
КонецФункции