Имя: Пароль:
1C
1С v8
Конвертация данных
0 DenV77
 
24.08.12
10:35
Подскажите, пожалуйста, кто пользовался произвольными алгоритмами при выгрузке данных.
Т.е. в правилах выгрузки установил вместо «Стандартная выборка» значение «Произвольный алгоритм».

В обработчике ПВД «Перед обработкой» создал запрос и выполнил его. Присвоил результат параметру «ВыборкаДанных». Как и написано в информации по обрабочикам.

Но не работает. Что не так сделал?

По стандартной выборке выгружает т.е. правило само рабочее.
1 Ursus maritimus
 
24.08.12
10:36
ВыгрузитьПоПравилу() юзай
2 DenV77
 
24.08.12
10:39
Спасибо
3 DenV77
 
24.08.12
10:41
По ВыгрузитьПоПравилу все ок

А это что тогда......

ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов. Используется, когда способ выгрузки данных - Произвольный алгоритм. Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически
4 Ursus maritimus
 
24.08.12
10:44
(3) Скорее всего должен быть не рез. запроса а выборка.
т.е не Запрос.Выполнить(), а Запрос.Выполнить().Выбрать()
5 luckyluke
 
24.08.12
10:46
(0) ПКО в ПВД указал?
6 DenV77
 
24.08.12
10:49
(5)Конечно

(4)По всякому пробовал
и просто запрос
и так

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ПоступлениеТоваровУслуг.Контрагент КАК Контрагент
|ИЗ
|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
|    ПоступлениеТоваровУслуг.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеТоваровУслуг.Оборудование)";

Результат = Запрос.Выполнить();
ВыборкаДанных = Результат.Выбрать();
7 Ursus maritimus
 
24.08.12
10:51
Попробуй ПоступлениеТоваровУслуг.Контрагент КАК Ссылка
8 DenV77
 
24.08.12
10:51
Выгрузить по правилу оказалось самый верный путь. но это и с самого начало было ясно.

Автоматически не происходит выгрузки.
Может кто видел в типовых правилах ПВД с произвольным алгоритмом. Просто интересно.
9 Ursus maritimus
 
24.08.12
10:51
(7) А вообще в отладчик
10 luckyluke
 
24.08.12
10:52
(6) А у твоего ПКО что, только одно ПКС Контрагент?
11 DenV77
 
24.08.12
10:54
Ошибка получения значения свойства объекта (по имени свойства источника)
   ПКО                    =  Контрагенты  (Справочник: Контрагенты)
   ПКС                    =  1  (Код --> Код)
   Объект                 =  (Выборка из результата запроса)
   СвойствоПриемника      =  Код  (Строка)
   ОписаниеОшибки         =  Поле объекта не обнаружено (Ко
12 luckyluke
 
24.08.12
10:54
+(10) в ВыборкаДанных ты должен передавать коллекцию, у которой колонки должны соответствовать ПКС.
13 luckyluke
 
24.08.12
10:56
(11) Попробуй так:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ПоступлениеТоваровУслуг.Контрагент.*
|ИЗ
|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
|    ПоступлениеТоваровУслуг.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеТоваровУслуг.Оборудование)";

Результат = Запрос.Выполнить();
ВыборкаДанных = Результат.Выбрать();
14 luckyluke
 
24.08.12
10:58
(13) Сморозил я что-то не то. В общем выбери все свойства контрагента, которые ты собираешься передавать в ПКО.
15 DenV77
 
24.08.12
11:00
Пробовал в запрос все что в ПКС вытягивать и передавать в ТЗ просто попробовал код наименование полноеНаименование родитель
все равно не работает
Это несколько геморно как то даже если заработало бы.

проще выгрузить ВыгрузитьПоПравилу()

Вот так как и было подсказано (1)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ПоступлениеТоваровУслуг.Контрагент КАК Контрагент
|ИЗ
|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
|    ПоступлениеТоваровУслуг.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеТоваровУслуг.Оборудование)";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

   ВыгрузитьПоПравилу(Выборка.Контрагент, , , , "Контрагенты");

КонецЦикла;
16 luckyluke
 
24.08.12
11:08
(15) Ну так ты передаешь в ВыгрузитьПоПравилу Ссылку, а ВыборкаДанных ты должен передавать коллекцию, чтобы потом КД2 передавало в ВыгрузитьПоПравилу элемент коллекции ВыборкаДанных.
17 DenV77
 
24.08.12
11:18
Справка говорит
ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов.

Пробуем

Результат = Запрос.Выполнить();
ВыборкаДанных = Результат.Выбрать();

В чем не правда я не понял.

Задача в принципе решена просто из любопытства найти бы как в типовых правилах от 1С. Делают они или не делают так.

Скорее всего не делают

Спасибо всем за проявленный интерес
18 luckyluke
 
24.08.12
11:58
(17) Делают и я делал, я не понимаю, что у тебя не получается.
Ошибка? Это не ошибка, это системная функция.