Имя: Пароль:
1C
1С v8
Веб сервисы: передать массив из 1С в 1С
,
0 ivant
 
08.12.15
19:17
День добрый.
Есть задача - передать из одной конфигурации 1С (источник) в другую (приемник) некий массив данных, например, список товаров. На стороне приемника предпологается создание веб сервиса для этих нужд. Вопрос - можно ли передать данные из источника не дорабатывая конфигурацию, только с помощью внешней обработки?
1 ИсчадиеADO
 
08.12.15
19:19
как бе создание веб сервиса - это уже доработка?
2 ivant
 
08.12.15
19:21
(1) приемник дорабатывать можно. хочется в источнике обойтись без изменения конфигурации
3 ИсчадиеADO
 
08.12.15
19:24
(2) ну да, создаешь прокси, из него получаешь xdto пакет. И конвертируешь.
4 ivant
 
08.12.15
19:26
(3) То есть я могу получить определение xdto прямо из прокси? и уже по этому определению формировать массив?
5 ivant
 
08.12.15
19:27
(3+) то есть сам пакет я описываю на стороне приемника, а в источнике просто получаю его описание и по нему формирую массив?
правильно?
6 ivant
 
08.12.15
20:02
Получилось сделать как тут:
http://3.bp.blogspot.com/-eiQrgdwYui0/VeWefHOWq1I/AAAAAAAAAbo/2Is3GjexD90/s1600/%25D0%259F%25D0%25B5%25D1%2580%25D0%25B5%25D0%25B4%25D0%25B0%25D1%2587%25D0%25B0%2B%25D1%2581%25D1%2582%25D1%2580%25D1%2583%25D0%25BA%25D1%2582%25D1%2583%25D1%2580%25D1%258B%2B%25D0%25B2%2B1%25D0%25A1.png

Кому интересно, вот текст процедуры:

Процедура ПередатьМассивНаСервере()
    
    ПараметрыХДТО = Новый ТаблицаЗначений();
    ПараметрыХДТО.Колонки.Добавить("Колонка1");
    ПараметрыХДТО.Колонки.Добавить("Колонка2");
    
    СтрокаТаблицы = ПараметрыХДТО.Добавить();
    СтрокаТаблицы.Колонка1 = "1";
    СтрокаТаблицы.Колонка2 = 2;
    
    Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
    ПараметрыОбъектаХДТО = Сериализатор.ЗаписатьXDTO(ПараметрыХДТО);
    
    
    WSОпределение = Новый WSОпределения(АдресАутентификации, , ,,,);
    WSПрокси = Новый WSПрокси(WSОпределение, "http://www.URL.com";, "WebService", "WebServiceSoap", , ,);
    
    Результат = WSПрокси.GetMass(ПараметрыОбъектаХДТО);
        
    
КонецПроцедуры //ПередатьМассивНаСервере
7 ivant
 
08.12.15
20:04
с форматированием беда, конечно.

На стороне приемника проходит десериализация:
Десериализация = Новый СериализаторXDTO(ФабрикаXDTO);
    ТаблицаЗначений = Десериализация.ПрочитатьXDTO(Param);
8 ivant
 
08.12.15
20:06
С массивом не пробовал, но структуру передает аналогично
9 ivant
 
08.12.15
20:12
Вообще, подробнее про реализованный метод можно тут почитать: http://codenotes-1c.blogspot.ru/2014/04/1-8-1.html
10 EvgeniuXP
 
08.12.15
23:10
моб приложения от гилева возьми - там рассказывают.
11 ivant
 
09.12.15
13:56
(10) о, круто! спасибо