mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
110 lines
6.3 KiB
Plaintext
110 lines
6.3 KiB
Plaintext
// Процедура на основании анализа типа данных заменяет их на данные, удаляющие
|
||
// информацию из узла в котором их не должно быть
|
||
//
|
||
// Параметры:
|
||
// Данные – Объект, набор записей,... который нужно преобразовать
|
||
//
|
||
Процедура УдалениеДанных(Данные)
|
||
|
||
// Получаем объект описания метаданного, соответствующий данным
|
||
ОбъектМетаданных = ?(ТипЗнч(Данные) = Тип("УдалениеОбъекта"), Данные.Ссылка.Метаданные(), Данные.Метаданные());
|
||
// Проверяем тип, интересуют только те типы, которые реализованы на мобильной платформе
|
||
Если Метаданные.Справочники.Содержит(ОбъектМетаданных)
|
||
ИЛИ Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
|
||
|
||
// Перенос удаления объекта для объектных
|
||
Данные = Новый УдалениеОбъекта(Данные.Ссылка);
|
||
|
||
ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных)
|
||
ИЛИ Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных)
|
||
ИЛИ Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда
|
||
|
||
// Очищаем данные
|
||
Данные.Очистить();
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Функция формирует пакет обмена, который будет отправлен узлу "УзелОбмена"
|
||
//
|
||
// Параметры:
|
||
// УзелОбмена – узел плана обмена "мобильные", с которым осуществляется обмен
|
||
//
|
||
// Возвращаемое значение:
|
||
// сформированный пакет, помещенный в хранилище значения
|
||
Функция СформироватьПакетОбмена(УзелОбмена) Экспорт
|
||
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
|
||
ЗаписьXML.УстановитьСтроку("UTF-8");
|
||
ЗаписьXML.ЗаписатьОбъявлениеXML();
|
||
|
||
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
|
||
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
|
||
|
||
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
|
||
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
|
||
|
||
ТипДанныхУдаления = Тип("УдалениеОбъекта");
|
||
|
||
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
|
||
Пока ВыборкаИзменений.Следующий() Цикл
|
||
|
||
Данные = ВыборкаИзменений.Получить();
|
||
|
||
// Если перенос данных не нужен, то, возможно, необходимо записать удаление данных
|
||
Если Не ОбменМобильныеПереопределяемый.НуженПереносДанных(Данные, УзелОбмена) Тогда
|
||
|
||
// Получаем значение с возможным удалением данных
|
||
УдалениеДанных(Данные);
|
||
|
||
КонецЕсли;
|
||
|
||
// Записываем данные в сообщение
|
||
ОбменМобильныеПереопределяемый.ЗаписатьДанные(ЗаписьXML, Данные);
|
||
|
||
КонецЦикла;
|
||
|
||
ЗаписьСообщения.ЗакончитьЗапись();
|
||
|
||
Возврат Новый ХранилищеЗначения(ЗаписьXML.Закрыть(), Новый СжатиеДанных(9));
|
||
|
||
КонецФункции
|
||
|
||
// Процедура вносит в информационную базу данные, которые присланы из узла "УзелОбмена"
|
||
//
|
||
// Параметры:
|
||
// УзелОбмена – узел плана обмена "мобильные", с которым осуществляется обмен
|
||
// ДанныеОбмена - пакет обмена полученный из узла УзелОбмена, помещен в ХранилищеЗначения
|
||
//
|
||
Процедура ПринятьПакетОбмена(УзелОбмена, ДанныеОбмена) Экспорт
|
||
|
||
ЧтениеXML = Новый ЧтениеXML;
|
||
ЧтениеXML.УстановитьСтроку(ДанныеОбмена.Получить());
|
||
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
|
||
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
|
||
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
|
||
|
||
НачатьТранзакцию();
|
||
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
|
||
|
||
Данные = ОбменМобильныеПереопределяемый.ПрочитатьДанные(ЧтениеXML);
|
||
|
||
Если Не Данные = Неопределено Тогда
|
||
|
||
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
|
||
Данные.ОбменДанными.Загрузка = Истина;
|
||
|
||
Данные.Записать();
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
ЗафиксироватьТранзакцию();
|
||
|
||
ЧтениеСообщения.ЗакончитьЧтение();
|
||
ЧтениеXML.Закрыть();
|
||
|
||
КонецПроцедуры
|