Встроенный модуль SMS:

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Встроенный модуль SMS:, Большая задержка при отправке смс оповещений
 
Версия  CRM  КОРП  2.0.7.2. Проблема в указании в качестве отложенного времени московского вместо UTC, поэтому и общая задержка получается в районе 4 часов.
 
Добрый день!
Проверила стандартный механизм работы-все отправляется в указанное время.
Поясните где Вы указываете Московское время? И для чего Вам это необходимо?
 
Столкнулись с этим когда начали отправлять смс из CRM. Смс доходили до адресата с задержкой 4 часа. После общения с СТП sms4b выяснилось что в качестве "отложенного времени" было указано время не UTC а текущее (мосоковское).. Ответ СТП сервиса sms4b.ru: "Проблема в указании в качестве отложенного времени московского вместо UTC, поэтому и общая задержка в 4 часа. Это проблема в клиентском ПО (1С: встройка 2.0.2.1, конфигурация 2.0.7.2 CRM (1C:CRM_2.0) на платформе 8.2)."
 
Добрый день, Павел!
Не можем пока понять, в чем же проблема, у нас все работает корректно..
В документах "SMS-сообщение" в поле "Дата отправки" вы указываете московское время, верно?

в методе "смсКоммуникатор.ОтправитьСообщения" переданное время приводится к UTC

Код
   // Переводим дату отправки и дату актуальности к времени UTC
   ДатаОтправкиUTC = ПривестиДатуКUTC(_ДатаОтправки);
   АктуальностьUTC = ПривестиДатуКUTC(_Актуальность);


Код
// Функция приводит переданную дату к времени UTC  
//
// Параметры
//  Дата - Дата которую корректируем
//  Вычитать - Признак знака корректировки, для входящих сообщений указывать Ложь,
//             для Исходящих Истина
//
// Возвращаемое значение:
//   Дата - дата приведенная к UTC
//
Функция ПривестиДатуКUTC(Дата, Вычитать = Истина) Экспорт
   
   // Получаем корректировку времени UTC
   Попытка
      КорректировкаUTC = ПараметрыСеанса.смсКорректировкаUTC;
   Исключение
       КорректировкаUTC = 0;
   КонецПопытки; 
   // Если сообщение входящее то время надо прибавить!
   Если Вычитать Тогда
      Возврат Дата - КорректировкаUTC;
   Иначе 
      Возврат Дата + КорректировкаUTC;
   КонецЕсли; 
   
КонецФункции


может быть у вас почему то параметр сеанса не устанавливается? вы можете проверить в отладке - установлен ли параметр "смсКорректировкаUTC" ?
Корректировку возвращает сам веб-сервис SMS4B.  Все операции он проводит по времени UTC, но поскольку сервер физически находится в Москве в поясе UTC+4, он возвращает корректировку.
Соответственно метод корректирует время отправки и все должно работать корректно....

Может быть вы  указываете не свое (московское) время в документе, а уже приведя к UTC?

Вот код установки корректировки, тут все и делается:
Код
         // Получаем время веб-сервера в UTC, и считаем разницу в секундах с "нашим" временем
         // и записываем его в параметр сеанса для дальнейшего использования
         СтрВремяСервера = Сред(ПараметрыСессии.UTC, 1, 19);
         ВремяСервера = СтрокаВДату(СтрЗаменить(СтрВремяСервера, "T", " "));
         Параметры.Вставить("СмещениеUTC", ТекущаяДата() - ВремяСервера);
         Параметры.Вставить("МаксАктуальностьДоставки", ПараметрыСессии.Limit);
         Параметры.Вставить("МаксДлительностьДоставки", ПараметрыСессии.Duration);
         // Уберем "лишние" секунды от корректировки UTC
         ПараметрыСеанса.смсКорректировкаUTC = Окр((ТекущаяДата() - ВремяСервера)/60/60) *60*60;
 
У нас смс сообщения используются для оповещений. Соответственно генерируются автоматически.   Получение параметров с веб сервиса проходит корректно (получаются все необходимые данные) и соответственно записываются в параметры сессии. но при отправке регламентным заданием этот параметр не доступен.  Для корректной работы пришлось добавить вывоз процедуры
Код
смсКоммуникатор.ПолучитьПараметрыСессии()
перед  получением параметров сессии итоговый код  
Код
смсКоммуникатор.ПолучитьПараметрыСессии();
   
   // Переводим дату отправки и дату актуальности к времени UTC
   ДатаОтправкиUTC = ПривестиДатуКUTC(_ДатаОтправки);
   АктуальностьUTC = ПривестиДатуКUTC(_Актуальность);


Решение временное т.к. не хотелось вносить много изменений в код
Изменено: Павел Коюшев - 17.02.2014 11:25:52
 
Цитата
Павел Коюшев пишет:
Получение параметров с веб сервиса проходит корректно (получаются все необходимые данные) и соответственно записываются в параметры сессии. но при отправке регламентным заданием этот параметр не доступен

У нас тоже все действия с СМС делаются в реглам. задании - отправка, получение, чтение статусов.
Не понятно, почему параметр сеанса у вас не доступен...
У нас вызывается рег. задание "смсПроверкаСМС", из него вызывается метод смсРаботаССообщениями.РегламентноеЗаданиеПроверкаСМС()
В этом методе вызывается метод смсКоммуникатор.ОтправитьСообщения(), внутри которого и делается приведение времени к UTC, про которое я писал выше.
И этот же метод у нас используется и для автоматических рассылок все оповещений, например, о новых или переадресованных  задачах/событиях, о просроченных событиях и задачах, о днях рождения клиентов, оповещения типа "оформлен счет на сумму более xxx руб"и т.д.

Вы смотрели общий модуль "CRM_ОповещенияСервер",процедура "ОтправкаСМСОповещений()"?
Из него все работает, а вызывается все тот же метод отправки смсКоммуникатор.ОтправитьСообщения().

Хочется разобраться, почему потребовалось что-то дорабатывать, все должно  и так работать и в файловом режиме и в клиент-серверном.
 
:) Верно есть 2 регламентных задания 1 это "CRM_ОтправкаОповещенийПоСМС"  которое у нас было по умолчанию и второе это "смсПроверкаСМС". Попробую переключить на него удалив дописанный кусок. Проверим....
 
ОК, мы тоже сейчас перепроверим..вдруг что поломалось в посл. релизах.
А у вас файловый режим или клиент-сервер?
 
у нас с Павлом - клиент-сервер
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С