Имя: Пароль:
1C
1С v8
Перенос данных их 7 в 8 через КД
0 Genri
 
30.11.14
18:52
Задача перенести из 7 за выбранный период группу документов в 8 в один.
Делал по примеру в демо КД, перенос остатков.
Ошибка выдает.
Ошибка выбора объектов коллекции...
Не могу понять где искать ошибку.

Вот правила ПКО.
http://clip2net.com/s/jnKpgE

http://clip2net.com/s/jnKrM9

Вот правила ПВД.

ТоварыНаСкладах =  СоздатьОбъект("ТаблицаЗначений");
ТоварыНаСкладах.НоваяКолонка("ТМЦ1");
ТоварыНаСкладах.НоваяКолонка("Количество");
ТоварыНаСкладах.НоваяКолонка("Цена");
ТоварыНаСкладах.НоваяКолонка("СумЛей");

//Параметры
ВыбНачПериода = ДатаНачала;
ВыбКонПериода = ДатаОкончания;

    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Валюта = Документ.РасходнаяНакладная.Валюта;
    |Курс = Документ.РасходнаяНакладная.Курс;
    |ТМЦ = Документ.РасходнаяНакладная.ТМЦ;
    |Кво = Документ.РасходнаяНакладная.Кво;
    |Ед = Документ.РасходнаяНакладная.Ед;
    |ЦенаБезНДС = Документ.РасходнаяНакладная.ЦенаБезНДС;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |ДатаДок = Документ.РасходнаяНакладная.ДатаДок;
    |МестоХранения = Документ.РасходнаяНакладная.МестоХранения;
    |Функция КвоСумма = Сумма(Кво);
    |Функция ЦенаБезНДССумма = Сумма(ЦенаБезНДС);
    |Группировка ДатаДок;
    |Группировка ТМЦ без групп;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
         Отказ = 1;
    КонецЕсли;

    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ДатаДок
        Пока Запрос.Группировка(2) = 1 Цикл
            
        ТоварыНаСкладах.НоваяСтрока();
        ТоварыНаСкладах.ТМЦ1             = Запрос.ТМЦ;
        ТоварыНаСкладах.Цена             = Запрос.ЦенаБезНДС;
        ТоварыНаСкладах.Количество       = Запрос.Кво;
        ТоварыНаСкладах.СумЛей           = Запрос.Кво * Запрос.ЦенаБезНДС;
        КонецЦикла;
    КонецЦикла;
//    
ИсходящиеДанные = СоздатьОбъект("СписокЗначений");
ИсходящиеДанные.Установить("Дата", ТекущаяДата());
ИсходящиеДанные.Установить("ТМЦ", ТоварыНаСкладах);

ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "РасхНалоговаяНакладная_Розница");
1 Genri
 
30.11.14
18:55
Вот еще ПВД http://clip2net.com/s/jnKvzo
2 Genri
 
30.11.14
19:01
Вот выгрузка из 7 http://clip2net.com/s/jnKDWw
3 Маленький Вопросик
 
30.11.14
19:02
Выгрузи документ в любой файл, пересоздай его - дела пары часов
4 Genri
 
30.11.14
19:07
(3) ну..., я же у же здесь все почти сделал.
5 Сияющий Асинхраль
 
30.11.14
20:30
А коды обработки выгрузки поменял?
6 Franchiser
 
гуру
30.11.14
20:58
Есть переменная ВыборкаДанных, посмотри типовые правила как там делается через выгрузитьпоправилу. Может не в тот параметр исходящиеданные кладешь. Еще кажется ТЗ должна быть типизирована.
7 Genri
 
30.11.14
21:11
(5) да поменял.
8 Genri
 
30.11.14
22:15
(6) помогло спасиб, ошибка ушла, вроде б все выгружает но теперь проблема другая пишет что загрузил n -число  объектов , но в базе ничего не меняется.
9 Genri
 
30.11.14
22:23
Все заработало,ппц, с этими галочками можно с ума сойти.
10 Genri
 
30.11.14
22:23
Важно:
Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".
11 Genri
 
30.11.14
22:25
А получать из входящих галку надо убрать, тогда все работает.
12 Genri
 
30.11.14
22:30
ТоварыНаСкладах =  СоздатьОбъект("ТаблицаЗначений");
ТоварыНаСкладах.НоваяКолонка("ТМЦ1");
ТоварыНаСкладах.НоваяКолонка("Количество");
ТоварыНаСкладах.НоваяКолонка("Цена");
ТоварыНаСкладах.НоваяКолонка("СумЛей");

//Параметры
ВыбНачПериода = ДатаНачала;
ВыбКонПериода = ДатаОкончания;

    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Валюта = Документ.РасходнаяНакладная.Валюта;
    |Курс = Документ.РасходнаяНакладная.Курс;
    |ТМЦ = Документ.РасходнаяНакладная.ТМЦ;
    |Кво = Документ.РасходнаяНакладная.Кво;
    |Ед = Документ.РасходнаяНакладная.Ед;
    |ЦенаБезНДС = Документ.РасходнаяНакладная.ЦенаБезНДС;
    |СуммаСНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |ДатаДок = Документ.РасходнаяНакладная.ДатаДок;
    |МестоХранения = Документ.РасходнаяНакладная.МестоХранения;
    |Функция КвоСумма = Сумма(Кво);
    |Функция ЦенаБезНДССумма = Сумма(ЦенаБезНДС);
    |Группировка ДатаДок;
    |Группировка ТМЦ без групп;
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
         Отказ = 1;
    КонецЕсли;

    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей ДатаДок
        Пока Запрос.Группировка(2) = 1 Цикл
            
        ТоварыНаСкладах.НоваяСтрока();
        ТоварыНаСкладах.ТМЦ1             = Запрос.ТМЦ;
        ТоварыНаСкладах.Цена             = Запрос.ЦенаБезНДС;
        ТоварыНаСкладах.Количество       = Запрос.Кво;
        ТоварыНаСкладах.СумЛей           = Запрос.Кво * Запрос.ЦенаБезНДС;
        КонецЦикла;
    КонецЦикла;
    
    ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
    ВыборкаДанных.НоваяКолонка("Дата");
    ВыборкаДанных.НоваяКолонка("ТМЦ");
    //
    ВыборкаДанных.НоваяСтрока();
    ВыборкаДанных.Дата = ТекущаяДата();
    ВыборкаДанных.ТМЦ = ТоварыНаСкладах;
13 Genri
 
30.11.14
22:31
вот так работает.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn