XDTO + web сервис #803703


#0 by first_may
Добрый день. Хочу изучить тему XDTO + web сервис, тем более возникла задача создания документа "Заказ покупателя" в удаленной базе из текущей. Поэтому хотелось бы услышать совет специалистов как делать?
#1 by breezee
да легко, используей СериализиторXDTO и передавай через веб-сервипс сереилизованные им данные
#2 by first_may
СериализиторXDTO  - это на основании пакета XDTO который есть или надо делать свой?
#3 by Fragster
на ИТС есть демо конфигурация. + КД2 умеет работать через веб сервисы вообще без знания механизмов, если онлайн не нужен и оба решения на БСП.
#4 by lodger
делай свой. да там все просто. по сути, если просто и на пальцах, пакет XDTO - это твой манифест для сериализациидесериализации данных 1с виз xml.
#5 by first_may
В типовой вижу есть пакет CML402, а в нем ЗаказКлиента.
#6 by first_may
то есть те реквизиты, которые хочу, что бы появились в удаленной базе, надо описать в своем пакете. Так?
#7 by first_may
Даже сделав свой пакет и сформировав нужную xml, как сделать так, что бы произошло ее отправление и создание документа во второй базе? Что то делать с web сервисом уже?
#8 by Mankubus
нужно создать веб сервис, его операцию и описать алгоритм приёма пакета в модуле веб-сервиса В базе источнике нужно вызывать эту операцию с помощью ws соединения. П.с. Поиск для слабаков?
#9 by first_may
Поиск для слабаков? - нет, много что уже нашел, но надо общение. нужно создать веб сервис, его операцию и описать алгоритм приёма пакета в модуле веб-сервиса  - это на принимающей стороне? В базе источнике нужно вызывать эту операцию с помощью ws соединения - не могу понять, как это делается.
#10 by first_may
получается - в базе источнике делаю свой пакет XDTO, при проведении заказа формирую xml по этому пакету и вызываю операцию с помощью ws соединения - не понимаю как? - в базе приемнике делаю веб сервис, его операцию и описание алгоритма приема пакета в модуле веб-сервиса Такой принцип?
#11 by lodger
там где у тебя стоит вопросик:
#12 by lodger
в данном случае я бы создал хдто в БазеПриемнике, а в БазеИсточнике просто считал его в WS-ссылку (как объект конфигарции).
#13 by breezee
На основании любых данных из 1С можешь сериализиовать ТЗ, справочник, документ, кое-что, конечно не можешь, вроде деревья(это не точно), сам веб-сервис.
#14 by breezee
Не надо свой делать. У меня коллеги с работы понаделали этих пакетов XDTO, как с ними разгребаться - хз, там есть функция "серилизовать" или "записить" все в 2 строки с РЕИАЛИЗТОРОМ, не надо свои пакеты лепить. Если обмен только с каким-то сайтам - тогда надо и то, если на зарузку, это тоже не точно
#15 by first_may
тогда на основании какого пакета сделать заказ?
#16 by breezee
Не не основании пакета, а на основании данных, передавай ТЗ сериализованное в xml в источнике. В приемнике десериализуй - тоже самое ТЗ на выходе получается, адельше обходишь в цикле ТЗ и создаешь как тебе надо документ, без пакета, тип метаданных и имя документа можешь в 0 строке таблицы значений прописать
#17 by first_may
то есть никакие XDTO не надо>
#18 by first_may
?
#19 by first_may
как тогда заказ записать в xml? какой пакет использовать?
#20 by breezee
Пакеты - нет, сериализатор - да. Вот пример на запись в xml - Функция СериализоватьТЗ(ТЗ)  Экспорт      получение данных из xml Никакие пакеты не нужны, система сама все за тебя делает, если нужно - можешь прочитать про эти пакеты, зачем они и когда испольхуются на инфостарте
#21 by breezee
Тз - не только таблица значений, а любой тип данных, из 1С, кроме тех, которые туда не подойдут, которые не сериализуемы
#22 by first_may
получается, только хотел спросить, можно ли как то записать документ Заказ покупателя в xml формате для передаче, но при этом пакет XDTO не делать? Или он обязателен? Типового нет под этот документ? Пробую в источнике сделать так и отправить Функция Сериализовать(ОбъектСериализации) но получаю <Объект не найден> (162:9226001e33553ae411e78a7ed98514bf)
#23 by h-sp
попробуйте между идентичными конфигурациями сначала.
#24 by first_may
я пробую как раз между одинаковыми. в приемнике надо создать пакет xdto заказа покупателя, что бы потом в источнике написать что то типа ВСОпределение = Новый WSОпределения(";); ВСПрокси = Новый WSПрокси(ВСОпределение,";); а вот ДСтр я должен передать в формате xdto, который есть в приемнике
#25 by first_may
вот и хотел спросить, как нибудь можно из заказа покупателя организовать xdto?
#26 by breezee
<Объект не найден> (162:9226001e33553ae411e78a7ed98514bf) А как ты создаешь объект в базе приемнике?
#27 by first_may
уже разобрался с тем, как передать XDTO заказа а бызу приемника. Теперь ищу ответ на вопрос, как прочитать там эту строку, то есть если через файл, то URIПространстваИмен = ";;           а на сервисе нет же файла, там есть только входящий параметр..
#28 by first_may
то есть вот тут "застопорился" (это в модуле сервиса) URIПространстваИмен = ";; XDTOЗаказПокупателя = ФабрикаXDTO.ПрочитатьXML( ????? , ФабрикаXDTO.Тип(URIПространстваИмен, "ЗаказПокупателя"));
#29 by first_may
Получилось вроде. Оказывается, когда я пишу в источнике то в приемнике в веб сервисе Параметр это и есть XDTOЗаказПокупателя, то есть его стуктура уже такая, как в пакете XDTO, который я сделал. Таким образом получилось следующее, что я сделал для изучения темы: 1 база источник - типовая УТ 2 в базе источника написал внешнюю обработку, в которой выбираю заказ покупателя 3 в обработке написал URIПространстваИмен = ";;      ВСОпределение = Новый WSОпределения(";); XDTOЗаказПокупателя.Номер = ЗаказПокупателя.Номер; .. и тд заполняю с учетом пакета XDTO приеника Ответ = ВСПрокси.СоздатьЗаказ(XDTOЗаказПокупателя); Если Ответ = Истина Тогда     Сообщить("Документ успешно создан"); Иначе     Сообщить("Ошибка при создании документа"); 4 базу премника взял такую же УТ 5 в базе приемника создал XDTO с нужными мне данными 6 в базе приемника создал веб сервис с операцией СоздатьЗаказ и входящем параметром 7 в модуле сервиса написал Функция СоздатьЗаказ(Параметр)
#30 by first_may
Таким образом, может как то "коряво", но получил то, что хотел, а именно в источнике создаю документ "Заказ покупателя", указываю его в обработке и такой же заказ появляется в базе приемника. Спасибо все :), теперь буду "отшлифовывать" алгоритм.
#31 by breezee
НайтиПоНомеру нет, нельзя по номеру искать, у тебя через год появится 2 документа с одинаковым номером. И про XDTOпакеты - тоже не надо их. Смори. 1)Формируешь таблицу значений по твоим заказам на передачу в источнике. Типо, делаешь запрос по закзам и выгружаешь результат в ТЗ, затем в цикле по этой табилце проходишься - по ссылкам получаешь ГУИДы документов и ТЗ заполняешь ГУИДы в ТЗ. Потом твое ТЗ сериализуешь, в базе приемнике создаешь веб-сервис и операцию веб-сервиса с типом "string". Далее в приемнике десириализуешь той функцией что я кидал выше - у тебя получается ТЗ в пиремнике. Далее либо циклом, либо запросом получаешь данные из этой ТЗ и создаешь документы, используя поиск по ГУИДу, не по номеру! Если перед тобой не стоит задача использовать эти чертовы пакеты XDTO - не используй ты их, так сложнее и неизвестно зачем. Зачем делать сложнее?
#32 by breezee
И вот это "ДокУдалить.ПолучитьОбъект.Удалить;" делать тоже нельзя. Ты же без контроля ссылок на объект удаляешь документ. А если в этой базе на основании документа введены другие документы? Стоп, а почему у тебя стаж на форуме 10 лет и такие странные решения? Угнал у кого-то акк?)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С