Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подскажите по Вебсервису и XDTO!

Подскажите по Вебсервису и XDTO!
Я
   tciban
 
22.10.20 - 07:57
Уважаемые коллеги! Вот понадобилось на старости лет вебсервис замутить. Задача - сделать обработку и запустив ее из основной рабочей базы подключаться к другой базе и видеть из нее ограниченный список документов и немножко их редактировать, менять пару-тройку полей. Велосипед не мой, так начальство повелело, потому обсуждать годится ли такая схема или нет бессмысленно. Ну вебсервис без труда наваял, вопрос вот в чем: я получаю из веб сервиса список реквизитов нужных документов (запросом), но мне б хотелось на каждый документ получать с его реквизитами, что отобразятся в списке еще и ссылку на докусент, просто ее хранить и в нужном случае что бы я мог передать ее параметром в нужный метод вебсервиса и она бы туда пришла сразу ссылкой, что бы не искать документ по номеру/дате, что бы изменить в нем какой то документ. Типа забрал ссылку/отдал ссылку. Как бы это лучше всего сделать?

Можно конечно УИД забирать, но запрос УИДы не возвращает как мы знаем, потому получив таблицу запросом приходиться пробегать ее в цикле и добавлять УИДы. Тупенько и долго.

Опишу еще раз для чего это нужно - например получил я по вебсервису документы - дата, номер, комментарий. Пользюк поменял комментарий, надо сказать вебсервису - вот у этого документа запиши новый комментарий.
Понятно изложил?

Заранее благодарен за мудрые советы опытных коллег :)
   tciban
 
1 - 22.10.20 - 08:19
Еще немного поясню. Сейчас я делаю в вебсервисе так:
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Затем добавляю в таблицу колонку УИД, заполняю, затем

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

И возвращаю ЗаписьXML.
В таблице только строки, цифры и булево.
   Конструктор1С
 
2 - 22.10.20 - 08:32
Посмотри библиотеку интеграции с 1С:Документооборотом. На сайте ИТС есть подробная инструкция по ней. Там как раз гоняются ссылки на документы/справочники. Ссылки (идентификаторы и тип) хранит сам документооборот в своём регистре. Тебе нужно что-то подобное
   Конструктор1С
 
3 - 22.10.20 - 08:32
   tciban
 
4 - 22.10.20 - 08:36
(2) Погляну. Но идея в том, что бы можно запускать из любой базы обработку, следовательно не вносить изменений в структуру базы.
Я примерно представлю себе так, что надо описать пакет XDTO там где у меня вебсервис, что бы он, вебсервис понимал как упаковать и отправить, а потом получить и распаковать ссылку.  Но в XDTO я совсем не шарю :( Абсолютно.
   Конструктор1С
 
5 - 22.10.20 - 08:41
(4) ну не обязательно регистр заводить. Можно тупо таблицу значений, в которой будут храниться идентификаторы на время работы пользователей
   tciban
 
6 - 22.10.20 - 08:44
(5) Непонятно в какой момент строить такую таблицу... Уж точно не в момент подключения обработки к вебсервису - долго, а пользователя не нужно заставлять ждать.
   Конструктор1С
 
7 - 22.10.20 - 09:23
(6) источник данных должен присылать ссылку на объект вместе с данными XDTO. Пускай это будет гуид и имя объекта

123e4567-e89b-12d3-a456-426655440000   Документ.РеализацияТоваровУслуг

когда читаешь XML от веб-сервиса, просто сохраняй эти ссылки в таблицу-буфер. При отправке ответа данные шли вместе с ссылками, чтобы на той стороне веб-сервис мог получить объект из ссылки и изменить его реквизиты. Очень советую посмотреть как это сделано в интеграции с документооборотом. Там XDTO с именем DM (если не ошибаюсь), в нём различные объекты на все случаи жизни. У тебя перед галазами будет множество примеров. То, что ты слепил свой XDTO, так это ещё пол дела. Тебе нужен набор различных объектов XDTO для передачи списков объектов, идентификации выполняемых действий и т.п.
   tciban
 
8 - 22.10.20 - 09:29
(7) Часть проблемы в том, что невозможно получить гуид в запросе, на получение гуида нужен отдельный цикл вне запроса. Сейчас я так и делаю, но хочется сделать как то лучше. XDTO я пока никаких не делал.
   arsik
 
9 - 22.10.20 - 09:50
(8) Вытаскивай данные через СКД.
   tciban
 
10 - 22.10.20 - 10:05
(9) Интересная идея. А как через СКД? Подразумевается, что там можно вытащить гуид?
   arsik
 
11 - 22.10.20 - 10:20

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.