Функция GetInitialData(Запрос)
УстановитьПривилегированныйРежим(Истина);
Попытка
КодМобильногоУстройства = Запрос.ПараметрыURL.Получить("КодМобильногоУстройства");
ИмяПользователя = Запрос.ПараметрыURL.Получить("ИмяПользователя");
МобильнаяОС = Перечисления.РВ_МобильнаяОС.ПустаяСсылка();
Для Каждого ТекПараметр ИЗ Запрос.ПараметрыЗапроса Цикл
Если ВРег(ТекПараметр.Ключ) = ВРег("MobileOS") Тогда
МобильнаяОС = Перечисления.РВ_МобильнаяОС[ТекПараметр.Значение];
КонецЕсли;
КонецЦикла;
УзелОбмена = ИнициализацияУзлаОбмена("РВ_СправедливыйНаблюдатель", Справочники.РВ_МобильноеПриложение.СправедливыйНаблюдатель, КодМобильногоУстройства, ИмяПользователя, МобильнаяОС);
ОтветНаблюдателю = ОтдатьНачальныеДанныеСправедливомуНаблюдателю(УзелОбмена, КодМобильногоУстройства, ИмяПользователя);
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(ОтветНаблюдателю);
Исключение
Ответ = Новый HTTPСервисОтвет(400);
Ответ.УстановитьТелоИзСтроки(ОписаниеОшибки());
КонецПопытки;
Возврат Ответ;
КонецФункции
Функция ИнициализацияУзлаОбмена(ИмяПланаОбмена, МобильноеПриложение, КодУстройства, ИмяПользователя, МобильнаяОС) Экспорт
УстановитьПривилегированныйРежим(Истина);
УзелОбмена = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду(КодУстройства);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
Если ПользовательИБ = Неопределено Тогда
Пользователь = Неопределено;
Иначе
Пользователь = Справочники.Пользователи.НайтиПоРеквизиту("ИдентификаторПользователяИБ", ПользовательИБ.УникальныйИдентификатор);
КонецЕсли;
Если УзелОбмена.Пустая() Тогда
НовыйУзел = ПланыОбмена[ИмяПланаОбмена].СоздатьУзел();
НовыйУзел.Код = КодУстройства;
НовыйУзел.Наименование = ИмяПользователя;
Если ЗначениеЗаполнено(МобильнаяОС) Тогда
НовыйУзел.МобильнаяОС = МобильнаяОС;
КонецЕсли;
НовыйУзел.Пользователь = Пользователь;
НовыйУзел.ДатаСоздания = ТекущаяДата();
НовыйУзел.ОбменДанными.Загрузка = Истина;
НовыйУзел.Записать();
УзелОбмена = НовыйУзел.Ссылка;
ИначеЕсли УзелОбмена.Наименование <> ИмяПользователя ИЛИ УзелОбмена.Пользователь <> Пользователь Тогда
ОбъектУзла = УзелОбмена.ПолучитьОбъект();
ОбъектУзла.Наименование = ИмяПользователя;
ОбъектУзла.Пользователь = Пользователь;
ОбъектУзла.ДатаСоздания = ТекущаяДата();
ОбъектУзла.Записать();
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);
КонецЕсли;
Возврат УзелОбмена;
КонецФункции
Функция ОтдатьНачальныеДанныеСправедливомуНаблюдателю(Знач УзелОбмена, КодУстройства, ИмяПользователя)
УстановитьПривилегированныйРежим(Истина);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
Если ПользовательИБ = Неопределено Тогда
Возврат "no";
КонецЕсли;
ИмяXDTOПакета = "RV_FairObserver";
ЗаписьХМЛ = Новый ЗаписьXML;
ЗаписьХМЛ.УстановитьСтроку();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ, УзелОбмена);
//Здесь в сообщение записываются начальные данные
ЗаписьСообщения.ЗакончитьЗапись();
Результат = ЗаписьХМЛ.Закрыть();
Результат = СтрЗаменить(Результат, " xmlns=""" + ИмяXDTOПакета + """ xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""","");
Возврат Результат;
КонецФункции
|