Имя: Пароль:
1C
1С v8
И опять конвертация данных
,
0 4uvak
 
23.10.12
08:55
Здравствуйте подскажите пожалуйста, в стандартных правилах изменяю ПВД на документ "РеализацияТоваровИУслуг" убираю в объект выборки, ставлю произвольный алгоритм в способе выборке, пишу код на выборку для записи в один документ из многих. Далее пытаюсь выгрузить данные по данному правилу но обработка выдает ошибку.
Ошибка при вызове метода контекста (НайтиПоТипу): Несоответствие типов (параметр номер '1')
Проверяя в конфигураторе что не понравилось, обнаружил что проблема как раз в том что не указал в ПВД объект выборки. Кто сталкивался подскажите как с этим боролись
1 vmv
 
23.10.12
08:57
я бросил курить
2 Нуф-Нуф
 
23.10.12
08:57
(1) красава
3 4uvak
 
23.10.12
08:57
(1)я тоже, не помогло
4 Redkiy
 
23.10.12
08:59
Что передаешь в ПКО?
Давай кусок кода.
5 4uvak
 
23.10.12
09:02
Запрос = Новый Запрос;
Запрос.текст = "ВЫБРАТЬ
              |    РеализацияТоваровУслугТовары.АкцизВидОперацииРеализации,
              |    РеализацияТоваровУслугТовары.ЕдиницаИзмерения,
              |    РеализацияТоваровУслугТовары.Количество,
              |    РеализацияТоваровУслугТовары.Коэффициент,
              |    РеализацияТоваровУслугТовары.НДСВидОперацииРеализации,
              |    РеализацияТоваровУслугТовары.Номенклатура,
              |    РеализацияТоваровУслугТовары.СтавкаАкциза,
              |    РеализацияТоваровУслугТовары.СтавкаНДС,
              |    РеализацияТоваровУслугТовары.Сумма,
              |    РеализацияТоваровУслугТовары.СуммаАкциза,
              |    РеализацияТоваровУслугТовары.СуммаНДС,
              |    РеализацияТоваровУслугТовары.Цена
              |ИЗ
              |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
              |ГДЕ
              |    РеализацияТоваровУслугТовары.Ссылка.НаличиеДокументов = ЛОЖЬ";

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

ТаблицаДанные = Новый ТаблицаЗначений;
ТаблицаДанные.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаДанные.Колонки.Добавить("ВидОперации", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыОперацийРеализацияТоваров"));
ТаблицаДанные.Колонки.Добавить("БанковскийСчетОрганизации", Новый ОписаниеТипов("СправочникСсылка.БанковскиеСчета"));
ТаблицаДанные.Колонки.Добавить("ВалютаДокумента", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаДанные.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТаблицаДанные.Колонки.Добавить("СуммаДокумента", Новый ОписаниеТипов("Число"));
ТаблицаДанные.Колонки.Добавить("Товары", Новый ОписаниеТипов("ТаблицаЗначений"));
                                                                                     
Товары = Новый ТаблицаЗначений();
Товары.Колонки.Добавить("АкцизВидОперацииРеализации", Новый ОписаниеТипов("СправочникСсылка.ВидыОперацийОблагаемыхАкцизом"));
Товары.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.КлассификаторЕдиницИзмерения"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Коэффициент", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("НДСВидОперацииРеализации", Новый ОписаниеТипов("СправочникСсылка.ВидыРеализации"));
Товары.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Товары.Колонки.Добавить("СтавкаАкциза", Новый ОписаниеТипов("СправочникСсылка.СтавкиАкциза"));
Товары.Колонки.Добавить("СтавкаНДС", Новый ОписаниеТипов("СправочникСсылка.СтавкиНДС"));
Товары.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("СуммаАкциза", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("СуммаНДС", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Пока Выборка.Следующий() Цикл

   СтрокаТоваров = Товары.Добавить();
   СтрокаТоваров.АкцизВидОперацииРеализации = Выборка.АкцизВидОперацииРеализации;
   СтрокаТоваров.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
   СтрокаТоваров.Количество = Выборка.Количество;
   СтрокаТоваров.Коэффициент = Выборка.Коэффициент;
   СтрокаТоваров.НДСВидОперацииРеализации = Выборка.НДСВидОперацииРеализации;
   СтрокаТоваров.Номенклатура = Выборка.Номенклатура;
   СтрокаТоваров.СтавкаАкциза = Выборка.СтавкаАкциза;
   СтрокаТоваров.СтавкаНДС = Выборка.СтавкаНДС;
   СтрокаТоваров.Сумма = Выборка.Сумма;
   СтрокаТоваров.СуммаАкциза = Выборка.СуммаАкциза;
   СтрокаТоваров.СуммаНДС = Выборка.СуммаНДС;
   СтрокаТоваров.Цена = Выборка.Цена;
КонецЦикла;
Организация = Справочники.Организации.НайтиПоКоду("000000001");
НоваяСтрокаДанные = ТаблицаДанные.Добавить();
НоваяСтрокаДанные.Организация = Организация;
НоваяСтрокаДанные.СуммаДокумента = Товары.Итог("Сумма");
НоваяСтрокаДанные.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;
НоваяСтрокаДанные.БанковскийСчетОрганизации = Организация.ОсновнойБанковскийСчет;
НоваяСтрокаДанные.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("398");
НоваяСтрокаДанные.Товары = Товары;
//ВыгрузитьПоПравилу(ИсходящиеДанные,, ,,"ПКО");
ВыборкаДанных = ТаблицаДанные;
6 4uvak
 
23.10.12
09:06
(4)Проблема заключается не в коде, а в стандартной обработке ОбменДаннымиXML там в процедуре
ВыполнитьВыгрузкуИзмененныхДанныхДляУзлаОбмена
Есть такой кусочек кода
Для Каждого СтрокаПравилаВыгрузки Из ВременныйМассивПравилВыгрузкиДанных Цикл
           
           МетаданныеПВД = Метаданные.НайтиПоТипу(СтрокаПравилаВыгрузки.ОбъектВыборки);
           МассивВыгружаемыхМетаданных.Добавить(МетаданныеПВД);
           
       КонецЦикла;
Вот тут то и возникает ошибка при поиске Типа объекта выборки.
7 Redkiy
 
23.10.12
09:10
Судя но коду, ты пытаешься создать один док из всех по условию НаличиеДокументов = ЛОЖЬ.
8 4uvak
 
23.10.12
09:10
(7)Так и есть
9 vmv
 
23.10.12
09:11
Процедура СоздатьКолонкиТаблицы()

ТаблицаДанные = Новый ТаблицаЗначений;
ТаблицаДанные.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаДанные.Колонки.Добавить("ВидОперации", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыОперацийРеализацияТоваров"));
ТаблицаДанные.Колонки.Добавить("БанковскийСчетОрганизации", Новый ОписаниеТипов("СправочникСсылка.БанковскиеСчета"));
ТаблицаДанные.Колонки.Добавить("ВалютаДокумента", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаДанные.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТаблицаДанные.Колонки.Добавить("СуммаДокумента", Новый ОписаниеТипов("Число"));
ТаблицаДанные.Колонки.Добавить("Товары", Новый ОписаниеТипов("ТаблицаЗначений"));
                                                                                     
Товары = Новый ТаблицаЗначений();
Товары.Колонки.Добавить("АкцизВидОперацииРеализации", Новый ОписаниеТипов("СправочникСсылка.ВидыОперацийОблагаемыхАкцизом"));
Товары.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.КлассификаторЕдиницИзмерения"));
Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Коэффициент", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("НДСВидОперацииРеализации", Новый ОписаниеТипов("СправочникСсылка.ВидыРеализации"));
Товары.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Товары.Колонки.Добавить("СтавкаАкциза", Новый ОписаниеТипов("СправочникСсылка.СтавкиАкциза"));
Товары.Колонки.Добавить("СтавкаНДС", Новый ОписаниеТипов("СправочникСсылка.СтавкиНДС"));
Товары.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("СуммаАкциза", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("СуммаНДС", Новый ОписаниеТипов("Число"));
Товары.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));

КанецПродураков

так зуми для начала, ато код поход на кучу навоза
10 vmv
 
23.10.12
09:12
(6) поставь условие проверки на вшивость

СтрокаПравилаВыгрузки.ОбъектВыборки
11 4uvak
 
23.10.12
09:14
(10)Знать бы где Массив уже приходит в процедуру
12 4uvak
 
23.10.12
09:18
(10)Да к тому же, менять стандартный код обработки не хочется, может кто знает как можно ее обмануть?
13 Redkiy
 
23.10.12
11:14
Создай новое ПКО РеализацияТоваровИУслуг_.
Начинай с малого - переноси реквизиты постепенно, сначала перенеси только дату, получится - добавляй следующие.
Т.к. ссылку не передаешь в ПКО отключи поиск по GUID, поиск по реквизиту Дата.
А вообще от твоего кода глаза режет...
14 4uvak
 
23.10.12
11:35
(13)Понимаешь если в правилах выгрузки данных, я выбираю объект выборки "РеализацияТоваровУслуг", то выгрузка проходит, но количество документов остается прежним и поля заполнены лишь те которые указал, если объект выборки из правил выгрузки данных удаляю то ругается на ошибку. А что с кодом?
15 Redkiy
 
23.10.12
11:47
(14) Ты между строк читаешь? Тебе предложен способ быстро (за пару минут) локализовать ошибку!

по коду: запрос надо бы свернуть, или у тебя номенклатура не повторяется?

Товары = запрос.Выполнить().Выгрузить(); // ТАКОЕ ПРОХОДИЛИ?