Вход | Регистрация


1С:Предприятие ::

Метки: 

Конвертация данных произвольным запросом

Я
   Ayrym
 
10.07.18 - 10:17
Конвертация данных 2.1. Выгружаю данные произвольным запросом: необходимо из сложного запроса выбрать данные и в приемнике создать документ с таб.частью. Запрос в норме, все данные проверила, но при выгрузке не записываются ссылочные данные из запроса. Уже через отладчик по выгрузке смотрела, ВыборкаДанных в норме, но при записи xml файла ссылочные данные не пишутся в файл, в ПКС нужно включить какую-то настройку, но уже устала искать, подскажите кто знает, в чем может быть проблема
 
  Рекламное место пустует
   segn
 
1 - 10.07.18 - 10:37
В ПВД стандартная обработка отключена?
   Ayrym
 
2 - 10.07.18 - 10:43
(1) в ПВД нет такой настройки, может это версия КД с глюком? есть только настрйоки: Отключить правило, Выбирать данные для выгрузки одним запросом, Не выгружать объекты созданные в приемнике.
В ПВД у меня объект выборки пустой, способ выборки - произвольный алгоритм, Правило конвертации - то которое зодавала под выгрузку, в обработчике перед обработкой собственно мой запрос с загрузкой в ВыборкаДанных
   hhhh
 
3 - 10.07.18 - 10:46
(2) типовые правила откройте и посмотрите как там сделано. Зачем заморачиваться и пытаться что-то изобрести?
   d4rkmesa
 
4 - 10.07.18 - 10:49
(0) Там пустой узел ссылки или вообще нет? Может правила отключены, может, нет для них подходящих ПКО.
   azt-yur
 
5 - 10.07.18 - 10:53
(2) чему приравниваете ВыборкаДанных? покажите код.
И вот на это внимание обращали:
Важно:
Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".
   Вафель
 
6 - 10.07.18 - 10:54
может проще делать ВыгрузитьПоПравилу(...)
   Ayrym
 
7 - 10.07.18 - 10:55
(5) Этот признак стоит, в том то и дело
   Ayrym
 
8 - 10.07.18 - 10:56
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата",Новый ОписаниеТипов("Дата"));
ТЗ.Колонки.Добавить("ВидОперации", Новый ОписаниеТипов("ПеречислениеСсылка.ВидыОперацийОприходованиеТоваров"));
ТЗ.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТЗ.Колонки.Добавить("Ответственный", Новый ОписаниеТипов("СправочникСсылка.Пользователи"));
ТЗ.Колонки.Добавить("ОтражатьВБухгалтерскомУчете");
ТЗ.Колонки.Добавить("ОтражатьВУправленческомУчете");
ТЗ.Колонки.Добавить("Подразделение");
ТЗ.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТЗ.Колонки.Добавить("СуммаДокумента");
ТЗ.Колонки.Добавить("Товары");

НоваяСтрока                                = ТЗ.Добавить();
НоваяСтрока.Дата                         = КонецДня(Параметры.Дата);
НоваяСтрока.ВидОперации                 = Перечисления.ВидыОперацийОприходованиеТоваров.ТоварыПродукция;
НоваяСтрока.Организация                 = Справочники.Организации.НайтиПоКоду("000000001");
НоваяСтрока.Ответственный                 = Справочники.Пользователи.НайтиПоНаименованию("Автообмен");
НоваяСтрока.ОтражатьВБухгалтерскомУчете = Ложь;
НоваяСтрока.ОтражатьВУправленческомУчете = Истина;
НоваяСтрока.Подразделение                 = Справочники.Подразделения.НайтиПоКоду("000000001");
НоваяСтрока.Склад                         = Параметры.Склад;
НоваяСтрока.СуммаДокумента                 = 1;

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


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

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

ВыборкаДанных = ТЗ;
   rozer76
 
9 - 10.07.18 - 10:56
В ПКО перед выгрузкой 
КлючВыгружаемыхДанных = Источник.Ссылка;
   rozer76
 
10 - 10.07.18 - 10:58
+ (9) и в вашем запросе ссылку в выборку
 
  Рекламное место пустует
   Ayrym
 
11 - 10.07.18 - 11:01
(9) Вставила, но теперь ругается на параметр Дата
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1582)}: Ошибка в обработчике события ПередВыгрузкойОбъекта
    ПКО                    =  ОприходованиеТоваров  (:)
    Объект                 =  01.07.2018 00:00:00  (Дата)
    Обработчик             =  ПередВыгрузкойОбъекта
    ОписаниеОшибки         =  Значение не является значением объектного типа (Ссылка)
    ПозицияМодуля          =  (1)
    КодСообщения           =  41
   Ayrym
 
12 - 10.07.18 - 11:02
(10) Так там и так ссылки пишутся, или куда вписать эту ссылку, я не совсем поняла
   azt-yur
 
13 - 10.07.18 - 11:05
(8) Из СП: ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов.
Вы присваиваете ВыборкаДанных  к таблице значений, не уверен, что конвертация ее может воспринимать.
На сколько понял из кода вам надо за раз выгрузить один документ. Вместо таблицы значений сделайте структуру и используйте ВыгрузитьПоПравилу(<ИмяСтруктуры>, , , , <ИмяПравила>) вместо присваивания ВыборкаДанных = ТЗ;
   rozer76
 
14 - 10.07.18 - 11:05
(13)  + 1
   rozer76
 
15 - 10.07.18 - 11:08
(12) не, это для того чтобы поиск дока был по гуиду... сорри неверно прочел посыл ваш про "ри выгрузке не записываются ссылочные данные" (
   rozer76
 
16 - 10.07.18 - 11:09
+ (15) смотри в (6) и (13) там истина )
   segn
 
17 - 10.07.18 - 11:09
(11) В выборке нет поля "Ссылка"
   Ayrym
 
18 - 10.07.18 - 11:11
(13) Конвертация ее воспринимает нормально, так как выгрузка есть (смотрела в отладчике в самой обработке Универсальный обмен данными xml) но при открытии файла выгрузки нет ссылочных данных, только те, что имеют тип Булево, число и Дату
   azt-yur
 
19 - 10.07.18 - 11:14
(18) Т.е. документ сам выгружается? Под ссылочными данными понимаете реквизиты документа Организация, Склад, Номенклатура и т.д.?
Проверьте галочку в самом ПКО "Не выгружать объекты свойств источника по ссылкам"
   segn
 
20 - 10.07.18 - 11:14
И в ВыборкаДанных можно передавать и результат запроса. Здесь ТЗ не нужна.
   Ayrym
 
21 - 10.07.18 - 11:18
(20) Не помогает, признак этот не влияет на запись ссылок в xml
   Ayrym
 
22 - 10.07.18 - 11:19
(20) Можно, но я запросом получаю данные для табличной части ,поэтому мне нужна ВыборкаДанных, где одна колонка - это отдельная ТЗ
   segn
 
23 - 10.07.18 - 11:21
У вас в ТЗ, как и в выборке нет поля "Ссылка"
   Ayrym
 
24 - 10.07.18 - 11:21
попробую сейчас ВыгрузитьПоПравилу, хотя вчера этот способ тоже уже юзала,  но может глаз замылился, кто знает
   Ayrym
 
25 - 10.07.18 - 11:21
(23) ссылка на что? я не совсем понимаю какого поля не хватает
   segn
 
26 - 10.07.18 - 11:23
В ТЗ добавьте колонку Ссылка, и заполняйте из выборки ссылочным типом данных (правда ее и в выборке нет - надо добавить).
   Ayrym
 
27 - 10.07.18 - 11:23
Пример делала по аналогу видео с Ютьюба (Конвертация данных 2.1. Урок 31. Перенос данных через произвольную коллекцию) с конвертацией разбираюсь впервые....вот и застряла с этим
   segn
 
28 - 10.07.18 - 11:25
Выполните уже п.26
   Ayrym
 
29 - 10.07.18 - 11:25
(28) ок, сейчас попробую
   rozer76
 
30 - 10.07.18 - 11:31
(28) да она вроде читала (10)



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