Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конвертация, как сделать выгрузку по произвольному алгоритму

Конвертация, как сделать выгрузку по произвольному алгоритму
Я
   mxs089
 
24.01.15 - 16:56
хочу выгружать остатки номенклатуры, создаю ПВД, способ выборки "Произвольный алгоритм", объект выборки - пусто, правила загружаю в настройку обмена данными, при обмене вылетает ошибка

ОписаниеОшибки         =  Ошибка при вызове метода контекста (НайтиПоТипу): Несоответствие типов (параметр номер '1')

Вопрос, как сделать выгрузку данных по произвольному алгоритму?
 
 
   ShoGUN
 
1 - 24.01.15 - 17:00
(0) В Правиле выгрузки данных в обработчике "Перед обработкой" вставить свой алгоритм и записать результат его работы в параметр "ВыборкаДанных":
ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов. Используется, когда способ выгрузки данных - Произвольный алгоритм. Если определить данную переменную, то обход коллекции и выгрузка объектов будет осуществляться автоматически
   mxs089
 
2 - 24.01.15 - 17:03
ошибка происходит перед выполнением этого события
   mxs089
 
3 - 24.01.15 - 17:03
УТ 10.3.7.8
   ShoGUN
 
4 - 24.01.15 - 17:07
(2) Поставь объект выборки. И исходя из (3) - чем выгружаешь - встроенной обработкой, или внешней из комплекта КД?
   mxs089
 
5 - 24.01.15 - 17:25
(4) ставил, в качестве объекта выбрал справочник номенклатура, ошибки нет, но выгружено 0 объектов, план обмена без регистрации номенклатур. выгружаю встроенной обработкой, настройка обмена в справочнике настройки обмена данными
   ShoGUN
 
6 - 24.01.15 - 17:28
(5) Не будет так работать, там же планы обмена используются. Либо лезть внутрь обработки выгрузки править место из (0), либо править выборку, передаваемую для выгрузки, либо регистрировать нужную номенклатуру в плане обмена(а алгоритм сделать в правилах регистрации).
   Rie
 
7 - 24.01.15 - 17:30
(5) А если просто УниверсальнымОбменомXML?
Ну и правило выгрузки - в общих чертах показал бы.
А также - какое ПКО назначено?
   mxs089
 
8 - 24.01.15 - 17:36
источник УТ , приемник УТ (добавлен регистр сведений, измерения 1. номенклатура, ресурсы 2. остаток).

есть ПКО НовыйРегистрСведений (источник - пусто), в ПВД запросом получаю остатки и в цикле обхода результат выгружаю по правилу

необходимо автоматизировать обмен, поэтому выбрал встроеную обработку
   ShoGUN
 
9 - 24.01.15 - 17:41
(8) А чего бы тогда источником в ПВД регистр сведений не выбрать?
   mxs089
 
10 - 24.01.15 - 17:44
(9) его нет в конфигурации источника
 
 Рекламное место пустует
   mxs089
 
11 - 24.01.15 - 17:47
вроде как получилось, ПВД оставил, событие ПередОбработкой = Отказ=Истина;

в глобальном событии "ПередПолучениемИзмененных"

Для каждого СтрокаДерева из ВременныйМассивПравилВыгрузкиДанных Цикл
    
    Если СтрокаДерева.Имя <> "Остатки" Тогда//имя ПВД

        Продолжить;
    КонецЕсли;
    
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |    ВЫБОР
        |        КОГДА ТоварыНаСкладахОстатки.КоличествоОстаток < 0
        |            ТОГДА 0
        |        ИНАЧЕ ТоварыНаСкладахОстатки.КоличествоОстаток
        |    КОНЕЦ КАК ОстатокОбщий
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(, " + ?(ЗначениеЗаполнено(Параметры.Склад), "Склад В ИЕРАРХИИ (&Склад)", "") + ") КАК ТоварыНаСкладахОстатки");
    Запрос.УстановитьПараметр("Склад", Параметры.Склад);

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        
        ВыгрузитьПоПравилу(Выборка,,,, "_НОВЫЙ_РС_",,,,,,,, Ложь);//последний параметр (ЭтоВыгружаетсяОбъект = Неопределено) в Ложь, иначе осуществляется поиск свойства Ссылка

        
    КонецЦикла;
    
    Прервать;    
КонецЦикла;
   Rie
 
12 - 24.01.15 - 17:49
(11) А зачем ВыгрузитьПоПравилу? Почему бы самому правилу выгрузки не назначить правило конвертации? Заодно можно было бы и от цикла избавиться.
   mxs089
 
13 - 24.01.15 - 17:52
т.к. у меня нет объекта выборки для ПВД
   Rie
 
14 - 24.01.15 - 17:57
Я имел в виду

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

Цикл - убрать, в ПВД указать правило конвертации _НОВЫЙ_РС_
   mxs089
 
15 - 24.01.15 - 18:48
(14) а нужно указывать объект выборки? если да, то что мне выбрать? такого регистра нет, если же нет, то происходит ошибка!
   Rie
 
16 - 24.01.15 - 20:47
(15) Не нужно. Произвольный алгоритм - он на то и произвольный, что должен просто сформировать ВыборкаДанных, любым способом. А эта ВыборкаДанных "провернётся" через указанное правило конвертации, колонки (поля) выборки будут использоваться в соответствующих ПКС.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует