Имя: Пароль:
1C
1С v8
Подскажите по Вебсервису и 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