Конвертация данных - запрос при обмене справочников #640470


#0 by impulse9
Задача: выгрузить из УТ 10.3 справочник номенклатуры + остатки определенному складу + определенный тип цены, в один справочник в приемнике. в ПКО Справочник.Номенклатура перед выгрузкой: При выгрузке ругается на строчку Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML(1562)}: Ошибка в обработчике события ПриВыгрузкеОбъекта    ПКО                    =  Номенклатура  (Справочник: Номенклатура)    Объект                 =  Ariston NTS 50 (SU) водонагреватель накопительный свыше 30 л  (Справочник ссылка: Номенклатура)    Обработчик             =  ПриВыгрузкеОбъекта    ОписаниеОшибки         =  Поле объекта не обнаружено (Цена)
#1 by GenV
Источник.Цена
#2 by impulse9
Конечно, не Источник а Объект.
#3 by impulse9
Теперь ругается так Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML(1593)}: Ошибка получения свойства объекта из входящих данных    ПКО                    =  Номенклатура  (Справочник: Номенклатура)    ПКС                    =  13  ( --> Количество)    Объект                 =  02 БЫТОВАЯ ТЕХНИКА  (Справочник ссылка: Номенклатура)    СвойствоПриемника      =  Количество  (Число)    ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
#4 by Alex S D
вот ты сумашедший, у тебя запрос вызывается при выгрузке каждого объекта...
#5 by impulse9
Alex S D самое главное что не работает ) Мне бы разобраться, а потом я общим запросом все перепишу
#6 by Alex S D
ну видно же, что нет источника для "количество"
#7 by impulse9
В ПКС у Количество стоит галка "Получить значение их входящих данных" Я эти данные вычисляю запросом. Куда их подмахнуть, чтобы они при загрузке подхватились?
#8 by Alex S D
в структуру ИсходящиеДанные
#9 by Alex S D
или ВходящиеДанные , не помню)
#10 by Дейл
ну для начала напиши запрос нормально 2 почему перед выгрузкой? Сделай в правиле Выгрузке объектов - перед обработкой ВыборкаДанных = Запрос.Выполнить.Выгрузить; и будет тебе счастье
#11 by Дейл
- источник хоть пустой?
#12 by Дейл
ВыгрузитьПоПравилу(,, ИсходящиеДанные,, "НачисленияИУдержания");
#13 by Дейл
как пример
#14 by Дейл
реально сделай запросом грамотным и все будет ок и без структруры обойдешся
#15 by impulse9
Когда галочку ставить источник очищается Да, надо переписать запрос под весь справочник
#16 by Дейл
Да кстати в параметрах запроса не "Источник", а источник.ссылка
#17 by impulse9
В общем, я совсем не понимаю, кучу книжек открыл, просмотрел все примеры, похожего не нашел Есть запрос, который вытаскивает все нужные данные: Ткните пальцем,, куда его подставить, чтобы оно выгрузилось в файл, и потом с него загрузилось. По-любому все просто и я туплю
#18 by PCcomCat
А нельзя сделать проще? После выгрузки данных выгрузить все остатки и цены, например, в текстовый файл. А после загрузки данных считать остатки из файла и записать куда нужно. Уж очень сильно сомневаюсь, что в приемнике у справочника Номенклатура есть реквизит Цена, да и остаток - будешь для каждой позиции свой документ остатков делать или каждый раз искать документ? Да и запрос остатков и цен всего справочника уж куда быстрей выполнится, чем в сумме по каждой позиции справочника.
#19 by impulse9
В приемнике нет документов. Приемник - это просто база-каталог товаров, которые есть в наличии. Соответственно в справочнике Номенклатура есть и Цена и Количество. Запрос и вытаскивает данные по всему справочнику Номенклатура, с условием, что по элементу есть остатки. PCcomCat, спасибо за желание помочь
#20 by impulse9
Да, про текстовый файл - обмен таким способом уже готов и работает. Надо переделать на стандартный обмен через XML
#21 by PCcomCat
Сложно помочь, не зная структуры приемника.
#22 by impulse9
Все очень просто. В приемнике 5 справочников, и все. Справочник Номенклатура: Количество как число Цена как число УПР_ГРУППА1 как элемент справочника УПР_ГРУППА1 УПР_ГРУППА2 как элемент справочника УПР_ГРУППА2 УПР_ГРУППА3 как элемент справочника УПР_ГРУППА3 УПР_ГРУППА4 как элемент справочника УПР_ГРУППА4
#23 by PCcomCat
Сделай правило конвертации для свойства: Источник - любой реквизит, Приёмник - реквизит остаток; а ПриВызргузке этого свойства пропиши свой запрос, и Значение = результат из твоего запроса.
#24 by impulse9
Правильно ли я понимаю, что этот запрос выполнится 1 раз для каждого элемента справочника, т.е. более 100000 раз?
#25 by PCcomCat
Этот запрос будет выполняться для каждого элемента справочника.
#26 by PCcomCat
Как вариант: Перед выгрузкой данных сформируй свой запрос по всем остаткам и запиши результат в ТаблицуЗначений, а для свойства Остаток пропиши поиск строки таблицы с этим элементом через Отбор.
#27 by Новенький_2009
О майн гот. Ну и велосипед! :) 1. Делаешь ПВД, с произвольным алгоритмом, в котором описываешь твой виртуальный объект. 2. Идешь в соотв. ПКО, и у них снимаешь галки кэшированья 3. Все. Какие запросы перед выгрузкой? Ты в своем уме?
#28 by impulse9
Спасибо в источнике искомые данные ЦЕНА и КОЛИЧЕСТВО хранятся в регистрах, в приемнике в реквизитах справочника.
#29 by Новенький_2009
никак не могу понять, в чем противоречие с тем, что я тебе описал в . Заджойнь сразу и цену и количество для требуемой выборки (за один раз), да отдай эту выборку на вход твоего ПКО. Или чо, ты думаешь, такое невозможно? :) Покури произвольный алгоритм в ПВД.
#30 by impulse9
Было бы круто и для меня, и для тех, кто потом придет сюда из гугла, если бы ты написал более подробно, как решить задачу "конвертация значения регистра в реквизит справочника" на моем примере. У меня такая задача стоит не только в этой конвертации, так что ты бы очень мне помог.
#31 by Новенький_2009
для всех кто придет сюда из гугла, и тебя тоже, отвечаю: 1. Создаешь ПКО для конвертации справочника Номенклатуры. 2. Для него создаешь ПВД с произвольным алгоритмом 3. В нем определяешь переменную ВыборкаДанных как Запрос, и описываешь текст запроса. Важно чтобы алиасы запроса совпали с названием реквизитов приемника в ПКО, которые ты собрался заполнять. Сохраняешь ПВД. Это все. Если запросом не получается сделать, тогда определяешь переменную ВыборкаДанных как произвольную коллекцию, и заполняешь ее программным кодом. Указываешь в качестве ПКО, то что ты сделал п.1
#32 by impulse9
Спасибо за ответ, сделал сам, потом прочитал и убедился, что сделал правильно ) 1. В Правиле Выгрузки Данных ставим Способ Выборки = Произвольный механизм (вот в чем  меня был затуп!!!) 2. Написал в Правиле Выгрузки Данных для Объекта Справочник.Номенклатура, раздел Перед Обработкой: .... Мой запрос, в котором имена переменных совпадают с реквизитами справочника ....
#33 by impulse9
Ах да, забыл добавить - если данные по объекту собираются запросом, то в ПКО для объекта Номенклатура надо поставить галочку "не запоминать выгруженные объекты"
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С