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

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

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


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

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

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