Привет! Вопрос такой. Как бы вы реализовали обмен мобильного приложения со стационарной базой 1С, например Ут 10.3 С приходом 8.3.7 можно JSON я так понимаю, который позиционируется как замена олдовому xml. Но суть не в этом, как сделать полноценный обмен между моб. и стационарной базой? Выгружаю я к примеру из стационарки в мобильную базу файл со справочниками номенклатура и контрагенты. Все прелестно, но вдруг на моб. агент затрет пару контриков или номенклатур? Как бы вы сделали проверку "синхронизованности" номенклатуры на стационарной и моб. конфигурациях? При загрузке в моб. версию тупо проверять весь список, что есть а чего затерли?
Ну это же теория))) И потом, к примеру все запретили агенту, но одна номенклатура ушла из оборота. Надо ее же с моб. удалить тоже. Опять все номенклатуру скидывать и проверять по элементно?
(3) А почему бы не реализовать нечто типа планов обмена , в который писать изменения в основной конфиге, потом анализировать данные при обмене с мобильной базой?
Запрет кастати насколько я помню можно сделать для интерактивного изменения - т.е. вручную изменить определенные реквизиты не смогет, программно все будет ок.
Либо грузить только нужные элементы клиентов - нафига например мобильному агенту поставщики....
&НаСервере
Процедура ОбменЧерезПланыНаСервере()
Соединение = WSСсылки.ObmenPoPlanamWending.СоздатьWSПрокси("ObmenPoPlanamWending","ObmenPoPlanamWending","ObmenPoPlanamWendingSoap"); //ВсСыслка
Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("Sync"); //ВебСервис
ТекстХМЛ = СформироватьСообщениеСерверу();
КодУзлаОтправителя = ПланыОбмена.WendingExchang.ЭтотУзел().Код;
СтруктураПосылаемыхДанных = Новый Структура;
СтруктураПосылаемыхДанных.Вставить("ТекстХМЛ",ТекстХМЛ);
СтруктураПосылаемыхДанных.Вставить("КодУзлаОтправителя",КодУзлаОтправителя);
Данные = Новый ХранилищеЗначения(СтруктураПосылаемыхДанных, Новый СжатиеДанных(9));
Ответ = Соединение.Sync(Данные);
ПринятьИзменениеПоПлану(Ответ.Получить());
КонецПроцедуры
&НаСервере
Функция СформироватьСообщениеСерверу()
ЗаписьХМЛ = Новый ЗаписьXML;
ЗаписьХМЛ.УстановитьСтроку();
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
Узел = ПланыОбмена.WendingExchang.НайтиПоКоду("ЦБ");
ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ,Узел);
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Узел,ЗаписьСообщения.НомерСообщения);
Пока ВыборкаИзменений.Следующий() Цикл
ОбъектОбмена = ВыборкаИзменений.Получить();
ЗаписатьXML(ЗаписьХМЛ,ОбъектОбмена);
КонецЦикла;
ЗаписьСообщения.ЗакончитьЗапись();
Возврат ЗаписьХМЛ.Закрыть();
КонецФункции
&НаСервере
Процедура ПринятьИзменениеПоПлану(СтруктураПосылаемыхДанных)
ТекстХМЛ = СтруктураПосылаемыхДанных.ТекстХМЛ;
ТекстОшибки = СтруктураПосылаемыхДанных.ТекстОшибки;
Если Не ТекстОшибки = "" тогда
Сообщить("Произошла ошибка");
Возврат;
КонецЕсли;
ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.УстановитьСтроку(ТекстХМЛ);
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);
Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл
Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML);
//Данные = ПрочитатьXML(ЧтениеХМЛ);
Если Не Данные = Неопределено Тогда
Если Не ТипЗнч(Данные) = Тип("ДокументОбъект.ДанныеОтТП") Тогда
Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
ЧтениеСообщения.ЗакончитьЧтение();
КонецПроцедуры
(6) NightGod, покажите пожалуйста. Я раньше вообще с ними не сталкивался, обмены делал только через КД. Сейчас у Радченко почитал, не врубился вообще что к чему
(10) NightGod, Давно было. Может и поправили. Я документы регистрировал через "ПланыОбмена.ЗарегистрироватьИзменения(Узел, Ссылка)". Регистрировались ВСЕ объекты типа.
по своему опыту у меня так получилось:
1) у одного из клиентов большая база больше 10 000 позиций и каждый раз данные увеличиваются. в этом случае оставил планы обмена и использую http, обычные веб сервисы убрал. 2) у других сейчас использую практику (если немного справочников) на мобилу гружу все справочники и меняю их если были изменения. спр. товаров стараюсь грузить в регистр сведений. все изменения на мобиле фиксирую в регистр сведений и выгружаю эти данные.
Создаем планы обмена в центральной базе и в базе мобильного приложений. Состав планов и структура передаваемых данных идентична. В центральной базе код предопределенного узла делаем "ЦБ". Создаем веб сервис и WS ссылку в центральной базе и ws ссылку в мобильной. Типы входящего и исходящего значений веб сервиса - ValueStorage (http://v8.1c.ru/8.1/data/core). Подробнее про веб-сервисы и ws-ссылки лучше посмотреть в бесплатных курсах на (не реклама ;), сам там смотрел)