![]() |
|
Подскажите по Вебсервису и XDTO! | ☑ | ||
---|---|---|---|---|
0
tciban
22.10.20
✎
07:57
|
Уважаемые коллеги! Вот понадобилось на старости лет вебсервис замутить. Задача - сделать обработку и запустив ее из основной рабочей базы подключаться к другой базе и видеть из нее ограниченный список документов и немножко их редактировать, менять пару-тройку полей. Велосипед не мой, так начальство повелело, потому обсуждать годится ли такая схема или нет бессмысленно. Ну вебсервис без труда наваял, вопрос вот в чем: я получаю из веб сервиса список реквизитов нужных документов (запросом), но мне б хотелось на каждый документ получать с его реквизитами, что отобразятся в списке еще и ссылку на докусент, просто ее хранить и в нужном случае что бы я мог передать ее параметром в нужный метод вебсервиса и она бы туда пришла сразу ссылкой, что бы не искать документ по номеру/дате, что бы изменить в нем какой то документ. Типа забрал ссылку/отдал ссылку. Как бы это лучше всего сделать?
Можно конечно УИД забирать, но запрос УИДы не возвращает как мы знаем, потому получив таблицу запросом приходиться пробегать ее в цикле и добавлять УИДы. Тупенько и долго. Опишу еще раз для чего это нужно - например получил я по вебсервису документы - дата, номер, комментарий. Пользюк поменял комментарий, надо сказать вебсервису - вот у этого документа запиши новый комментарий. Понятно изложил? Заранее благодарен за мудрые советы опытных коллег :) |
|||
1
tciban
22.10.20
✎
08:19
|
Еще немного поясню. Сейчас я делаю в вебсервисе так:
РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Затем добавляю в таблицу колонку УИД, заполняю, затем ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации); ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO); И возвращаю ЗаписьXML. В таблице только строки, цифры и булево. |
|||
2
Конструктор1С
22.10.20
✎
08:32
|
Посмотри библиотеку интеграции с 1С:Документооборотом. На сайте ИТС есть подробная инструкция по ней. Там как раз гоняются ссылки на документы/справочники. Ссылки (идентификаторы и тип) хранит сам документооборот в своём регистре. Тебе нужно что-то подобное
|
|||
3
Конструктор1С
22.10.20
✎
08:32
|
||||
4
tciban
22.10.20
✎
08:36
|
(2) Погляну. Но идея в том, что бы можно запускать из любой базы обработку, следовательно не вносить изменений в структуру базы.
Я примерно представлю себе так, что надо описать пакет XDTO там где у меня вебсервис, что бы он, вебсервис понимал как упаковать и отправить, а потом получить и распаковать ссылку. Но в XDTO я совсем не шарю :( Абсолютно. |
|||
5
Конструктор1С
22.10.20
✎
08:41
|
(4) ну не обязательно регистр заводить. Можно тупо таблицу значений, в которой будут храниться идентификаторы на время работы пользователей
|
|||
6
tciban
22.10.20
✎
08:44
|
(5) Непонятно в какой момент строить такую таблицу... Уж точно не в момент подключения обработки к вебсервису - долго, а пользователя не нужно заставлять ждать.
|
|||
7
Конструктор1С
22.10.20
✎
09:23
|
(6) источник данных должен присылать ссылку на объект вместе с данными XDTO. Пускай это будет гуид и имя объекта
123e4567-e89b-12d3-a456-426655440000 Документ.РеализацияТоваровУслуг когда читаешь XML от веб-сервиса, просто сохраняй эти ссылки в таблицу-буфер. При отправке ответа данные шли вместе с ссылками, чтобы на той стороне веб-сервис мог получить объект из ссылки и изменить его реквизиты. Очень советую посмотреть как это сделано в интеграции с документооборотом. Там XDTO с именем DM (если не ошибаюсь), в нём различные объекты на все случаи жизни. У тебя перед галазами будет множество примеров. То, что ты слепил свой XDTO, так это ещё пол дела. Тебе нужен набор различных объектов XDTO для передачи списков объектов, идентификации выполняемых действий и т.п. |
|||
8
tciban
22.10.20
✎
09:29
|
(7) Часть проблемы в том, что невозможно получить гуид в запросе, на получение гуида нужен отдельный цикл вне запроса. Сейчас я так и делаю, но хочется сделать как то лучше. XDTO я пока никаких не делал.
|
|||
9
arsik
гуру
22.10.20
✎
09:50
|
(8) Вытаскивай данные через СКД.
|
|||
10
tciban
22.10.20
✎
10:05
|
(9) Интересная идея. А как через СКД? Подразумевается, что там можно вытащить гуид?
|
|||
11
arsik
гуру
22.10.20
✎
10:20
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |