Обмен между мобильным приложением

1. user1459027 06.09.20 13:51 Сейчас в теме
Добрый день, только начал изучение мобильной разработки,поэтому надеюсь на ваше понимание.
Начал изучение вот с этого видео:
youtube.com/watch?v=jw1t7LUsGn8&t=1847s
К сожалению, там идёт смысл в штрих-коде,а мне бы хотелось разобраться для начала без него.
Старался просто не обращать внимание на него, вот что вышло по коду. Писал в обработке, не понимаю куда его нужно вставить. И всё ли учтено в коде?
Очень прошу помощи, может есть еще какая-то полезная и понятная инфа по обмену?

На мобильной базе:

&НаКлиенте
Процедура ОформитьЗаказ(Команда)
	
  НовыйЗаказ = СоздатьЗаказ(НовыйЗаказ);	
	СоздатьДокумент (НовыйЗаказ);
КонецПроцедуры



&НаСервере
Функция СоздатьЗаказ(НовыйЗаказ)
	
	Соединение = WSСсылки.WSСсылка.СоздатьWSПрокси("MobileCentral", "MobileCentral" ,"MobileCentralSoap");
	Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("GetZakaz");
    Запрос = новый Структура("Товар,Количество",НовыйЗаказ.Товар,НовыйЗаказ.Количество);
	Ответ = Соединение.DokumentZakaz(Сериализовать(Запрос));

	Десериализовать(Ответ);
	
КонецФункции // СоздатьЗаказ()


&НаСервере
Процедура СоздатьДокумент (НовыйЗаказ)
	
	ДокументЗаказ = Документы.Заказ.СоздатьДокумент();
	ДокументЗаказ.Товар = НовыйЗаказ.Товар;
	ДокументЗаказ.Количество = НовыйЗаказ.Количество;
	ДокументЗаказ.Производитель = НовыйЗаказ.Производитель;
	ДокументЗаказ.Номер = НовыйЗаказ.Номер;
	ДокументЗаказ.Дата = ТекущаяДата();
	ДокументЗаказ.Записать(РежимЗаписиДокумента.Проведение);
	
	Соединение = WSСсылки.WSСсылка.СоздатьWSПрокси("MobileCentral", "MobileCentral" ,"MobileCentralSoap");
	Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("DokumentZakaz");
	Запрос = новый Структура("Товар,Количество",НовыйЗаказ.Товар,НовыйЗаказ.Количество);
	Ответ = Соединение.DokumentZakaz(Сериализовать(Запрос));
	//Десериализовать(Ответ);
	Сообщить(Ответ);


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

Функция Десериализовать(XMLСтруктура)Экспорт
	ЧтениеXMLДанных = новый ЧтениеXML;
	ЧтениеXMLДанных.УстановитьСтроку(XMLСтруктура);
	ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
	ЧтениеXMLДанных.Закрыть();
	Возврат ТЗ;
КонецФункции // Десериализовать()


Функция Сериализовать(Объект) экспорт
	ДеревоВОбъекте = СериализаторXDTO.ЗаписатьXML(Объект);
	МойXML = новый ЗаписьXML;
	МойXML.УстановитьСтроку();
	ФабрикаXDTO.ЗаписатьXML(МойXML,ДеревоВОбъекте);
	Возврат МойXML.Закрыть();
КонецФункции //Сериализовать ()
Показать


На центральной:
Функция SendMessage()
	Возврат "Всё работает!";
КонецФункции


Функция Десериализовать(XMLСтруктура)Экспорт
	ЧтениеXMLДанных = новый ЧтениеXML;
	ЧтениеXMLДанных.УстановитьСтроку(XMLСтруктура);
	ТЗ = СериализаторXDTO.ПрочитатьXML(ЧтениеXMLДанных);
	ЧтениеXMLДанных.Закрыть();
	Возврат ТЗ;
КонецФункции // Десериализовать()


Функция Сериализовать(Объект) экспорт
	ДеревоВОбъекте = СериализаторXDTO.ЗаписатьXML(Объект);
	МойXML = новый ЗаписьXML;
	МойXML.УстановитьСтроку();
	ФабрикаXDTO.ЗаписатьXML(МойXML,ДеревоВОбъекте);
	Возврат МойXML.Закрыть();
КонецФункции //Сериализовать ()


Функция GetZakaz(Data)
	Если ЗначениеЗаполнено(Data) Тогда
	   ПолученныеДанные = Десериализовать(Data);
   КонецЕсли;
   
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Заказ.Номер КАК Номер,
		|	Заказ.Товар.Наименование КАК ТоварНаименование,
		|	Заказ.Товар.Артикул КАК ТоварАртикул,
		|	Заказ.Товар.Производитель КАК ТоварПроизводитель
		|ИЗ
		|	Документ.Заказ КАК Заказ";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Заказ = новый Структура("Номер,Товар,Артикул,Производитель",
		                     ВыборкаДетальныеЗаписи.Номер,
							 ВыборкаДетальныеЗаписи.ТоварНаименование,
							 ВыборкаДетальныеЗаписи.ТоварАртикул,
							 ВыборкаДетальныеЗаписи.ТоварПроизводитель);
	КонецЦикла;
	
	Возврат Заказ;
КонецФункции


Функция DokumentZakaz(Data)
	Если ЗначениеЗаполнено(Data) Тогда
	   ПолученныеДанные = Десериализовать(Data);
   КонецЕсли;

   
   	ДокументЗаказ = Документы.Заказ.СоздатьДокумент();
	ДокументЗаказ.Товар = Справочники.Товары.НайтиПоНаименованию(ПолученныеДанные.Товар);
	ДокументЗаказ.Количество = ПолученныеДанные.Количество;
	//ДокументЗаказ.Номер = НовыйЗаказ.Номер;
	ДокументЗаказ.Дата = ТекущаяДата();
	ДокументЗаказ.Записать(РежимЗаписиДокумента.Проведение);

	
	 Возврат ("Документ создан");
КонецФункции

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. malikov_pro 1324 06.09.20 17:01 Сейчас в теме
1. вынесите логику обращения к серверу в отдельный модуль, проще менять транспорт в зависимости от варианта использования
2. сейчас используете SOAP клиент, попробуйте HTTP клиент с JSON.
3. смотрите темы HTTP клиента и HTTP сервисов, после освоения пробуйте навешивать бизнес логику.
3. user1459027 07.09.20 08:25 Сейчас в теме
(2)лучше всё-таки через HTTP осваивать?
4. user5300 1060 07.09.20 09:15 Сейчас в теме
(3) В принципе должно работать, вот пример
5. malikov_pro 1324 07.09.20 10:19 Сейчас в теме
(3) На мой взгляд да, и тестировать и документировать удобнее.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот