Процедура СинхронизацияДанных() Экспорт
Попытка
// сначала отправляем локальные изменения
ОтправитьДанные();
// потом получаем обновления с сервера
ПолучитьДанные();
Исключение
Сообщить("Ошибка синхронизации: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Процедура ПолучитьДанные() Экспорт
Соединение = Новый 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Строка);
Ответ = Соединение.Отправить(Запрос);
КонецПроцедуры