Имя: Пароль:
1C
1С v8
Конвертация данных: ПВД, ВыгрузитьПоПравилу
,
0 Алексей777
 
03.02.15
08:43
Приветствую Всех!
В обработчике "Перед выгрузкой" ПВД для документа, способ выборки - стандартная написал простой код:
    
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ссылка",Объект);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    АктНоменклатура.Номенклатура
        |ИЗ
        |    Документ.Акт.Номенклатура КАК АктНоменклатура
        |ГДЕ
        |    АктНоменклатура.Ссылка = &ссылка";

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

    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    тз = новый таблицазначений;
    тз.Колонки.Добавить("Номенклатура");
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        новстр = тз.Добавить();
        новстр.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
    КонецЦикла;

    Выгр = Новый Структура;
    выгр.Вставить("нг",тз); //это имя ТЧ документа приемника
    выгр.Вставить("Принадлежность",Перечисления.Принадлежность.давальческийматериал); //реквизит док. приемника
    выгр.Вставить("Организация",Объект.Организация);//реквизит док. приемника
    выгр.Вставить("Айди",Строка(Объект.УникальныйИдентификатор()))//реквизит док. приемника;
    выгр.Вставить("Дата",ТекущаяДата())//реквизит док. приемника;

    ВыгрузитьПоПравилу(,,Выгр,,"ИзменениеОС");//это ПВО с пустым Источником.

При выгрузке данных из базы источника в файл по данному правилу для последующей загрузки из этого файла в базу приемник получаю ошибку:

Ошибка получения свойства подчиненного объекта из входящих данных
    ПКО                    =  ИзменениеОС  (Документ: Изменение ОС)
    ПКС                    =  8  (--> Номенклатура)
    Объект                 =    (Не определено)
    СвойствоПриемника      =  Номенклатура  (СправочникСсылка.Номенклатура)
    ОписаниеОшибки         =  Поле объекта не обнаружено (Номенклатура)
    ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
    КодСообщения           =  67

...

Подскажите, пожалуйста, что я делаю не так?
1 Rie
 
03.02.15
08:52
А зачем запрос в цикле да ещё и ВыгрузитьПоПравилу?
Не лучше ли произвольной выборкой собрать данные и отдать их на растерзание ПКО?
2 Рэйв
 
03.02.15
08:57
(0)Не понял за чем ты это пишешь в ПВД документа если в запросе получаешь наменклатуру?
3 Алексей777
 
03.02.15
09:12
(1)(2) Ок. Это не реальная база, смоделировал пример.
Решаю задачу выгрузки из документа Источника в документы Приемника. Т.е. документ источника в базе приемника будет выгружен в три документа в зависимости от данных документа источника. Если в источнике товар по Перечисл1 то в 1 документа приемника, если товар по Перечисл2 во-второй док.приемника, по Перечисл3 в третий док.приемника. Пример с перечислениями условный, также для понимания.

Т.е. у меня есть айдишник источника и три значений перечисления - это поля поиска в в приемнике.
4 Rie
 
03.02.15
09:15
(3) Снова непонятно, зачем ВыгрузитьПоПравилу, если ИмяПКО можно присвоить имя нужного правила.
5 Рэйв
 
03.02.15
09:16
(3)Сделай 3 ПКО и перед выгрузкой проверяй условия. Если ложь тогда Отказ=Истина и все.
6 Рэйв
 
03.02.15
09:17
Источник у всех ПКО одного типа, приемники разные
7 Рэйв
 
03.02.15
09:18
ааа...сторно.Один документ в три.
8 Рэйв
 
03.02.15
09:19
как объект.
9 Рэйв
 
03.02.15
09:19
ну..вощем не очень понятно:-)  Но если подойдет мой пример, то хорошо:-)
10 Rie
 
03.02.15
09:20
Вот это и непонятно - то ли у ТС три разных правила на разные случаи жизни, то ли один объект в три выгружается.
11 Алексей777
 
03.02.15
09:37
(10) да, 1 объект выгружается в три :).

(9) да этот вариант, также подойдет.

Спасибо.

v8: Конвертация одного документа в несколько. Очень нужна помощь. - воспроизвожу данный вариант.
12 Алексей777
 
03.02.15
09:40
Вроде как создал ПВД и перед тем как выгрузить объект он анализирует данные в нём и в зависимости от данных выгружает по ПКО.
AdBlock убивает бесплатный контент. 1Сергей