Имя: Пароль:
1C
1С v8
Можно ли через веб сервис передать из одной базы в другую структуру?
0 i37391
 
14.04.22
15:43
Можно ли через веб сервис передать из одной базы в другую структуру, внутри которой 2 табличных документа? Если да, подскажите пожалуйста
1 arsik
 
гуру
14.04.22
15:46
ЗначениеВСтроку()
ЗначениеИзСтроки()
2 i37391
 
14.04.22
15:48
Спасибо большое!!!
3 PLUT
 
14.04.22
16:46
XDTO-сериализация в джопсон (JSON)
4 Fragster
 
гуру
14.04.22
16:58
у таб документа в веб сервисах пространство имен http://v8.1c.ru/8.2/data/spreadsheet тип SpreadsheetDocument ну и сериализаторXDTO.ЗаписатьXDTO. А может и вообще простое присвоение реквизиту объекта XDTO прокатит, оно там умное.

у структуры пространство имен http://v8.1c.ru/8.1/data/core, имя типа Structure но тут не совсем понятно, автор хочет структуру в плане набора типа объекта XDTO в виде объекта с реквизитами или прям структуру в смысле Новый Структура
5 Gimalaj
 
14.04.22
18:19
(3) >> в джопсон
Хорошо сказал!
6 ДедМорроз
 
14.04.22
21:04
Дьявол,как всегда в деталях.
В общем случае,передать структуру нельзя - ее можно передать только тогда,когда можно передать все значения,содержащиеся в ней.
7 Индиго
 
15.04.22
05:45
т=Новый ТаблицаЗначений;
т.Колонки.Добавить("Объект");
т.Колонки.Добавить("ЛюбаяДополнительнаяХрень");

Нов=т.Добавить();
Данные=СсылкаНаДокумент1.получитьОбъект();
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Данные);
Нов.Объект=ЗаписьXML.Закрыть();
Нов.ЛюбаяДополнительнаяХрень="Плюх!";

Нов=т.Добавить();
Данные=СсылкаНаДокумент2.получитьОбъект();
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Данные);
Нов.Объект=ЗаписьXML.Закрыть();
Нов.ЛюбаяДополнительнаяХрень="Плюх еще раз!";
Посылка=ЗначениеВстрокуВнутр(т);
//---------

и отправляй через WS
на той стороне:
//-------
т=ЗначениеизСтрокиВнутр(Посылка);
Для Каждого Стр Из т Цикл
    ЧтениеXML = Новый ЧтениеXML();
    ЧтениеXML.УстановитьСтроку(Стр.Объект);
    Об=СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
    Об.Записать();
    Сообщить(""+Стр.ЛюбаяДополнительнаяХрень+":"Об.Ссылка);
КонецЦикла;
8 Индиго
 
15.04.22
05:46
с табличными документами получать объект не надо конечно.Можно сразу скормить :-)
9 Chai Nic
 
15.04.22
06:52
Что же это у вас, чего ни хватишься, ничего нет!(с)

На самом деле, в 1с сильно не хватает нормального нативного межбазового обмена на объектном уровне. Или морально устаревший и кривой COM, или веб-хттп-ёклмн сервисы, требующие обязательной сериализуемости объектов. А так, чтобы подцепиться к другой базе и создавать в ней объекты как через OLE/COM, только без слоя трансляции в микрософтовские типы и без привязки к микрософту - такого нет. А иногда это бы здорово упростило задачу.
10 sTOd
 
15.04.22
07:26
(0) Можно! Разрешаю!
11 PLUT
 
15.04.22
09:20
(9) >На самом деле, в 1с сильно не хватает нормального нативного межбазового обмена на объектном уровне

нихрена не понятно, но жутко интересно...

Автоматический REST-интерфейс (OData)
Платформа «1С:Предприятие» может автоматически создать REST-интерфейс для любого прикладного решения. Благодаря своей универсальности и кроссплатформенности REST-интерфейс является очень удобным инструментом для интеграции прикладного решения со сторонними системами.

с3.14жжено с ИТС
12 Chai Nic
 
15.04.22
10:20
(11) Это скорее для интеграции с сайтами, а не как нативная замена COM/OLE
13 Fragster
 
гуру
15.04.22
11:23
(9) это дыра в безопасности и в зонах ответственности. а веб и хттп сервисы - это контракты и ответственность на стороне разработчика этого сервиса.
14 ДедМорроз
 
17.04.22
12:36
Rest-интерфейс можно публиковать,а можно не публиковать.
Опять же,проверку прав никто не отменял.
Тогда что дыра?
15 ДедМорроз
 
17.04.22
14:01
И еще.
Нет ни одной системы,где бы можно было передать объект.
Обычно,можно передать информацию,которая позволяет на другой стороне построить новый объект,который в пределах допустимого не отличается от изгачального.
Многие же системы допускают вместо объекта передачи информации для построения копии объекта,которая в рамках применяемых интерфейсов будет вести себя как изгачальный объект,но все ввзовы и обращения будут через канал связи передаваться изначальному объекту,так,например,работает система Component Object Model в windows.
16 Chai Nic
 
17.04.22
14:19
(15) Это сложно сделать универсальным, но в рамках конкретной платформы обеспечить контекст сторонней базы в виде полноценной объектной модели вполне реально, было бы желание у разработчиков..
17 ДедМорроз
 
17.04.22
14:50
Вам уже ответили - Rest API.
18 Chai Nic
 
17.04.22
15:14
(17) И что, через него можно вызывать процедуры и функции общих модулей, например? Или открывать форму объекта?
19 OldCondom
 
17.04.22
16:04
(18) а на куя?
20 OldCondom
 
17.04.22
16:10
кстати такой же вопрос ТС: зачем тебе структура с двумя табдоками? как метод называется? "ПолучитьРазнуюБурдуСкопом()"?
21 ДедМорроз
 
17.04.22
17:02
Rest позволяет получать и изменять данные.
А алгоритм,который их готовит,прекрасно можно выполнять на вызывающей стороне.
22 OldCondom
 
17.04.22
17:40
(21) +100.
23 Chai Nic
 
17.04.22
20:11
(19) Чтобы не производить расчет кучи всего вручную, а заставить работать штатные механизмы сторонней базы
24 MyNick
 
17.04.22
20:26
(23) Это называется API.
И в 1С он есть. И он прекрасен.
25 MyNick
 
17.04.22
20:34
(18) Ви хотите на БП 3.0 открыть форму документа из УТ10.3, работающей на 8.3.5 в режиме совместимости 8.2.19? Я правильно понимаю?
А зачем?
26 OldCondom
 
17.04.22
21:27
(23) Объект.Заполнить()