Имя: Пароль:
1C
1С v8
Подскажите по типу в XDTO
0 Alex_MA
 
10.08.11
16:04
Всем доброго дня!

Есть процедура web сервиса.

Функция ПолучитьСписокСотрудников(СтрокаПоиска)
   
   СтрокаСоединения = СокрЛП(СтрокаСоединенияИнформационнойБазы());
   СтрокаСоединения = "[БД " + СтрокаСоединения + " " + ИмяПользователя() + "]";
   
   стр = "Прывiтанне, сябры! " + Символы.ПС + " " + СтрокаСоединения;
   
   
   Запрос = Новый Запрос;
   
   Запрос.Текст =  "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    СотрудникиОрганизаций.Ссылка,
                   |    СотрудникиОрганизаций.Код,
                   |    СотрудникиОрганизаций.Наименование Как Наименование,
                   |    СотрудникиОрганизаций.ДатаРождения как ДатаРождения
                   |ИЗ
                   |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                                   |";
                                   
   Если СокрЛП(СтрокаПоиска) <> "" Тогда
       Запрос.Текст = Запрос.Текст
           + " ГДЕ СотрудникиОрганизаций.Наименование ПОДОБНО &СтрокаПоиска";
       Запрос.УстановитьПараметр("СтрокаПоиска", "%" + СокрЛП(СтрокаПоиска) + "%");
   КонецЕсли;
   
   Запрос.Текст = Запрос.Текст + "
       | Упорядочить по Код
       |";
   
   СотрудникТип         = ФабрикаXDTO.Тип("http://www.sample-package.org", "Сотрудник");
   СписокСотрудниковТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "СписокСотрудников");
   СписокСотрудников    = ФабрикаXDTO.Создать(СписокСотрудниковТип);
   
   // поехали
   СписокСотрудников.СтрокаСоединения = стр; ////

   Выборка = Запрос.Выполнить().Выбрать();
   
   Пока Выборка.Следующий() Цикл
       
       Сотрудник = ФабрикаXDTO.Создать(СотрудникТип);
       Сотрудник.Код          = Выборка.Код;
       Сотрудник.Наименование = Выборка.Наименование;
       Сотрудник.ДатаРождения = Выборка.ДатаРождения;
       Сотрудник.Ссылка       = Строка(Выборка.Ссылка.УникальныйИдентификатор());
       
       СписокСотрудников.Сотрудник.Добавить(Сотрудник); //ВОТ ЭТО ЧТО ЗА ТИП ??? У КОТОРОГО ЕСТЬ МЕТОД Добавить() ???
       
   КонецЦикла;
   
   Возврат СписокСотрудников;
   
КонецФункции

Спасибо за внимание.
1 Alex_MA
 
10.08.11
16:27
Вот:

СотрудникТип         = ФабрикаXDTO.Тип("http://www.sample-package.org", "Сотрудник");

СписокСотрудников    = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.sample-package.org", "СписокСотрудников"));

Сотрудник = ФабрикаXDTO.Создать(СотрудникТип);
Сотрудник.Код          = Выборка.Код;
Сотрудник.Наименование = Выборка.Наименование;
Сотрудник.ДатаРождения = Выборка.ДатаРождения;
Сотрудник.Ссылка       = Строка(Выборка.Ссылка.УникальныйИдентификатор());
       
СписокСотрудников.Сотрудник.Добавить(Сотрудник);

Не понятна последняя строчка.
А вот как "СписокСотрудников" выглядит в пакете XDTO^
http://gyazo.com/c32855fad237666083c9cd0faac612f3.png
2 SerMaxim
 
10.08.11
16:36
Все понятно. По типам сотрудников не подскажу на вскидку. Смысл следующий

СписокСотрудников что-то вроде списка значений, в нем определено 2 массива значений: Один со списком значений вида "Сотрудник", второй - "СтрокаСоединения". Проведение операции вида СписокСотрудников.Сотрудник дает нам фактически сущность идентичную массиву, где можно добавить элемент, найти и удалить.
3 SerMaxim
 
10.08.11
16:36
(2) Имею в виду не подскажу название конкретного типа. Смысл и логику описал.
4 Alex_MA
 
10.08.11
16:40
а как мне создать в своей БД нечто подобное
5 SerMaxim
 
10.08.11
16:45
(4) Сформулируйте вопрос понятнее :) Что нечто, что подобное. На листочке нарисуйте что надо получить?

Порядок действий следующий:
1. Рисуем на листочке результат;
2. Рисуем схему взаимодействия;
3. Описываем пакеты XDTO на базе примитивных типов (Пример: Сотрудники)
4. Описываем пакеты XDTO на базе сложных типов (СписокСотрудников)
5. Описываем Веб-Сервисы
6 Alex_MA
 
10.08.11
16:54
(5)Хорошо:
1.Есть web сервис "Сотрудники", тип возвращаемого значения СписокСотрудников (http://www.sample-package.org)

2.В этом web сервисе описана процедура "ПолучитьСписокСотрудников" (Код процедуры в (0))

3.В этой процедуре интересует строка
СписокСотрудников.Сотрудник.Добавить(Сотрудник);
////////////////////////////////////////////////////////

Далее подробнее опишу пакет XDTO, тип объекта которого (а конкретно "СписокСотрудников") возвращает наш web сервис

Вот его скрин:
http://gyazo.com/9fe6be441a04cd682702d3be487ee7e8.png

Свойства "СписокСотрудников":
http://gyazo.com/f65261ba03c9fb10cad860f2168ed886.png

Свойства "Сотрудник":
http://gyazo.com/284daa60794776fc2c41a6340db42228.png

Свойства "СтрокаСоединения"
http://gyazo.com/9d7bacccb7c1b941a6efdad50c5393a6.png

Вот чуток поподробнее. Надеюсь понятно
7 Alex_MA
 
10.08.11
16:59
кажись понял
8 Alex_MA
 
10.08.11
16:59
Для указания того, что
9 Alex_MA
 
10.08.11
17:00
свойство может содержать более одного значения, фасетам "Минимальное количество" и "Максимальное количество" необходимо задать значения 0 и -1 соответственно.

Попробую
10 Alex_MA
 
10.08.11
17:05
(9)так и есть :)
Проблема решилась, надо внимательнее читать
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс