Загрузка данных


Процедура СинхронизацияДанных() Экспорт

    Попытка

        // сначала отправляем локальные изменения
        ОтправитьДанные();

        // потом получаем обновления с сервера
        ПолучитьДанные();

    Исключение
        Сообщить("Ошибка синхронизации: " + ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры


Процедура ПолучитьДанные() Экспорт

    Соединение = Новый HTTPСоединение("172.20.10.4", 80);
    Запрос = Новый HTTPЗапрос("/InfoBase2/hs/sync/get");

    Ответ = Соединение.Получить(Запрос);

    Если Ответ.КодСостояния <> 200 Тогда
        Возврат;
    КонецЕсли;

    JSONСтрока = Ответ.ПолучитьТелоКакСтроку();
    Данные = ПрочитатьJSON(JSONСтрока);

    Для Каждого Стр Из Данные.Номенклатура Цикл

        Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("УИД", Стр.УИД);

        Если Ссылка = Неопределено Тогда
            Объект = Справочники.Номенклатура.СоздатьЭлемент();
            Объект.УИД = Стр.УИД;
        Иначе
            Объект = Ссылка.ПолучитьОбъект();
        КонецЕсли;

        Объект.Наименование = Стр.Наименование;
        Объект.Записать();

    КонецЦикла;

КонецПроцедуры


Процедура ОтправитьДанные() Экспорт

    МассивДанных = Новый Массив;

    Выборка = Справочники.Номенклатура.Выбрать();

    Пока Выборка.Следующий() Цикл

        СтрокаДанных = Новый Структура;
        СтрокаДанных.Вставить("УИД", Выборка.УИД);
        СтрокаДанных.Вставить("Наименование", Выборка.Наименование);

        МассивДанных.Добавить(СтрокаДанных);

    КонецЦикла;

    Данные = Новый Структура;
    Данные.Вставить("Номенклатура", МассивДанных);

    JSONСтрока = ЗаписатьJSON(Данные);

    Соединение = Новый HTTPСоединение("172.20.10.4", 80);
    Запрос = Новый HTTPЗапрос("/InfoBase2/hs/sync/post");

    Запрос.УстановитьТелоИзСтроки(JSONСтрока);

    Ответ = Соединение.Отправить(Запрос);

КонецПроцедуры