Имя: Пароль:
1C
1С v8
Типы объектов. Веб сервис.
0 AllJoke
 
16.02.12
15:35
Всем времени доброго. Вот решил прикрутить к своей конфе веб сервис ЦБ РФ. Есть у него метод - GetCursOnDate. Тип параметра этого метода - GetCursOnDate. Смотрю далее:
ВССсылка - Пакеты - ТипыПакетов - GetCursOnDate - OnDate. Тип у него - dateTime. Так вот беда в том что при запуске кода:

СервисЦБ.GetCursOnDate("20120216")

ругается на несоответствие типов. Я так понял ему нужно вернуть тип из пакета. Но вот как это сделать, не пойму. Прошу помощи.
1 Mort
 
16.02.12
15:43
Надо через фабрику создать значение этого типа.
2 AllJoke
 
16.02.12
15:46
можно пример. Бьюсь уже полдня.
3 Scooter
 
16.02.12
15:49
НоменклатураТип = ФабрикаXDTO.Тип("http://www.1c.ru/demos/shipment", "НоменклатураШтрихКод");
   РасходнаяНакладнаяТип = ФабрикаXDTO.Тип("http://www.1c.ru/demos/shipment", "РасходнаяНакладная");
   ЭлементРасходнойНакладнойТип = ФабрикаXDTO.Тип("http://www.1c.ru/demos/shipment", "ЭлементРасходнойНакладной");
   
   РасходнаяНакладная = ФабрикаXDTO.Создать(РасходнаяНакладнаяТип);
   
   Для Каждого Элемент Из Документ.Состав Цикл
       
       ЭлементРасходнойНакладной = ФабрикаXDTO.Создать(ЭлементРасходнойНакладнойТип);
       Номенклатура = ФабрикаXDTO.Создать(НоменклатураТип);
       
       Номенклатура.ШтрихКод = Элемент.Номенклатура.ШтрихКод;
       
       ЭлементРасходнойНакладной.Номенклатура = Номенклатура;
       ЭлементРасходнойНакладной.Количество = Элемент.Количество;
       ЭлементРасходнойНакладной.Цена = Элемент.Цена;
       ЭлементРасходнойНакладной.Сумма = Элемент.Сумма;
       
       РасходнаяНакладная.Состав.Добавить(ЭлементРасходнойНакладной);
   КонецЦикла;
4 Mort
 
16.02.12
15:58
Во. Нашел свою поделку


   ТипДата = ФабрикаЦБРФ.Тип("http://www.w3.org/2001/XMLSchema","dateTime");
5 AllJoke
 
16.02.12
16:04
(4) А ФабрикаЦБРФ откуда берётся?
6 Mort
 
16.02.12
16:06
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   Металлы.Очистить();
   
   СервисЦБРФ = WSСсылки.ЦБРФ.СоздатьWSПрокси("http://web.cbr.ru/", "DailyInfo", "DailyInfoSoap");
   
   ФабрикаЦБРФ = СервисЦБРФ.ФабрикаXDTO;
   
   ТипПараметра=ФабрикаЦБРФ.Тип("http://web.cbr.ru/","DragMetDynamic");
   ТипДата = ФабрикаЦБРФ.Тип("http://www.w3.org/2001/XMLSchema","dateTime");
   
   Параметр = ФабрикаЦБРФ.Создать(ТипПараметра);
   
   Параметр.fromDate = ФабрикаЦБРФ.Создать(ТипДата, НачПериода);
   Параметр.toDate = ФабрикаЦБРФ.Создать(ТипДата, КонПериода);
   
   Результат = СервисЦБРФ.DragMetDynamic(Параметр);
   ТаблицаМеталлы = Результат.DragMetDynamicResult.diffgram.DragMetall.ПолучитьСписок("DrgMet");
   
   ВГраница = ТаблицаМеталлы.Количество() - 1;
   
   Для Счетчик = 0 По ВГраница Цикл
       СтрокаМеталлы = Металлы.Добавить();
       Запись = ТаблицаМеталлы.Получить(Счетчик);
       СтрокаМеталлы.Металл = ПолучитьМеталл(Число(Запись.CodMet));
       СтрокаМеталлы.Дата = ПолучитьДатуИзСтроки(Запись.DateMet);
       СтрокаМеталлы.Цена = Запись.price;
       
   КонецЦикла;
   
   Металлы.Сортировать("Металл, Дата");
   
КонецПроцедуры

Функция ПолучитьДатуИзСтроки(СтрокаДаты)
   
   Возврат Дата(Лев(СтрокаДаты, 4) + Сред(СтрокаДаты, 6, 2) + Сред(СтрокаДаты, 9, 2));

КонецФункции

Функция ПолучитьМеталл(Номер)
   
   Если Номер = 1 Тогда
       Возврат "Золото";
   ИначеЕсли Номер = 2 Тогда
       Возврат "Серебро";
   ИначеЕсли Номер = 3 Тогда
       Возврат "Платина";
   ИначеЕсли Номер = 4 Тогда
       Возврат "Палладий";
   КонецЕсли;

КонецФункции
7 AllJoke
 
16.02.12
16:11
(6) А курсы валют не пробовали получать. Там же только дата указывается.
8 Mort
 
16.02.12
16:14
(7) Ну курсы я думаю уже сам допрешь как.
9 AllJoke
 
16.02.12
16:17
Спасибо. Допёр. Думал параметр нужно через тип передавать. За код, +100. Очень помог. Не первый раз кстати. Быть может в ветку ещё вернусь. Это только первые шаги.
Закон Брукера: Даже маленькая практика стоит большой теории.