Имя: Пароль:
1C
1С v8
v8: Работа с Web сервисом
0 November
 
26.11.12
15:59
Дорогие форумчане, помогите, пожалуйста, разобраться, как правильно получить данные от созданного мной web-сервиса.
Скажу сразу, что, к сожалению, пока не имею достаточного опыта в программировании, и web сервисами в 1с мне заниматься явно рано, лучше было бы больше времени потратить на изучение ООП и вообще основ основ. Но я был поставлен в такие обстоятельсва, что времени очень мало и нужно получить хотя бы какой-то маленький результат.
Так что могу очень сильно косячить, за что прошу не бить и не сильно ругать :)

1. Создал веб сервис "Сотрудники", в нем метод (операция) "ПолучитьСотрудников" с таким кодом:

Функция ПолучитьСотрудников()
   Запрос = Новый Запрос;
   Запрос.Текст =    "ВЫБРАТЬ
                       |    Сотрудники.Имя,
                       |    Сотрудники.Фамилия
                       |ИЗ
                       |    Справочник.Сотрудники КАК Сотрудники";
                       
   СотрудникТип = ФабрикаXDTO.Тип("http://localhost/sotrud", "Сотрудник");
   СписокСотрудниковТип = ФабрикаXDTO.Тип("http://localhost/sotrud", "СотрудникСписок");
   СписокСотрудников = ФабрикаXDTO.Создать(СписокСотрудниковТип);
   
   Выборка = Запрос.Выполнить().Выбрать();
   Сотрудник = ФабрикаXDTO.Создать(СотрудникТип);

   Пока Выборка.Следующий() Цикл
       Сотрудник = ФабрикаXDTO.Создать(СотрудникТип);
       Сотрудник.Имя = Выборка.Имя;
       Сотрудник.Фамилия = Выборка.Фамилия;
       
       СписокСотрудников.Сотрудник.Добавить(Сотрудник);
   КонецЦикла;
   
   Возврат СписокСотрудников
КонецФункции

Пакет XDTO http://localhost/sotrud:
Тип объекта "Сотрудник" со стринговыми св-вами Имя и Фамилия, тип объекта "СотрудникСписок" со св-вом Сотрудник (тип "Сотрудник") - мин. кол-во = 0, макс кол-во = -1.

<xs:complexType name="Сотрудник">
<xs:sequence>
<xs:element name="Имя" type="xs:string"/>
<xs:element name="Фамилия" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="СотрудникСписок">
<xs:sequence>
<xs:element name="Сотрудник" type="tns:Сотрудник" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

Все вышеописанное сделано по примеру из статьи "Веб-сервисы 1С из браузера" отсюда: http://inq-brc.ru/index.php/files/218-file-1c-obuch и вроде бы должно работать....

2. Веб сервис опубликовал, после чего написал обработку в 1С для того, чтобы получить результат выполнения метода ПолучитьСотрудников() в таблицу на форме.

&НаКлиенте
Процедура КнопкаВыполнитьНажатие(Кнопка)

   Прокси = WSСсылки.WSСотрудники.СоздатьWSПрокси(
                                        "http://localhost/sotrud", "Сотрудники", "СотрудникиSoap");
   Список = Прокси.ПолучитьСотрудников();

   Для ии=0 по 1 Цикл
   НоваяСтрокаТС = ТаблицаСотрудников.Добавить();
   НоваяСтрокаТС.Фамилия = Список.Сотрудник.Фамилия;
   НоваяСтрокаТС.Имя = Список.Сотрудник.Имя

   КонецЦикла;

КонецПроцедуры

Ругается на

{Обработка.СписокСотрудников.Форма.Форма(24)}: Поле объекта не обнаружено (Имя)
       НоваяСтрокаТС.Фамилия = Список.Сотрудник.Фамилия

Подскажите, правильно ли я обращаюсь к своему методу...Буду очень благодарен!
1 Serginio1
 
26.11.12
16:03
Для каждого стр из Список.Сотрудник Цикл
НоваяСтрокаТС = ТаблицаСотрудников.Добавить();
   НоваяСтрокаТС.Фамилия = Стр.Фамилия;
   НоваяСтрокаТС.Имя = Стр.Имя

КонецЦикла

Смотри данные в отладчике
2 November
 
26.11.12
16:13
Спасибо большое! Ураа, работает :) Данные вывел!

Еще раз спасибо!!!