Конвертация Данных. Перенос Изображения Номенклатуры #693052


#0 by AndreyBorovkov
Здравствуйте всем! Стоит задача перенести справочник номенклатура из УТ в УНФ. Переношу с помощью КД. Все ясно кроме одного момента. Как перенести ОсновноеИзображение номенклатуры с помощью КД если в УТ - реквизит ОсновноеИзображение имеет тип хранилище значений а в УНФ - это справочник файлы. Может кто сталкивался подскажите будьте добры..
#1 by vicof
Упакуй файл из справочника в хранилище.
#2 by AndreyBorovkov
Пожалуйста поподробней)
#3 by vicof
Тебе надо привести твой файл к типу ХранилищеЗначения. Я не знаю, как там в УНФ, скорей всего тоже хранилище. Перед выгрузкой изображения пишешь: Значение = Источник.ТвойФайл.РеквизитХранилище; Ну или как там у тебя в УНФ добраться до реквизита, который этот файл содержит.
#4 by cw014
У него из хранилища в справочник нужно передать В значение передавай структуру, вызывай правило, которое загрузить по этой структуре справочник
#5 by AndreyBorovkov
В УТ - это реквизит, тип "ХранилищеЗначений" В УНФ - это реквизит, тип справочник "файлы" Я переношу из УТ в УНФ. Может наоборот всетаки?
#6 by vicof
А ну да, наоборот. невнимательно прочитал.
#7 by AndreyBorovkov
Пожалуйста напишите как для чайника, буду очень благодарен!!
#8 by Поpyчик-4
Я бы кодировал изображение в УТ в формат base64 и передавал в УНФ в параметрах объекта. При загрузке объекта в УНФ раскодировать данные и записывать в справочник файлы или что там в УНФ.
#9 by cw014
1.Сделай правило для справочника "Файлы" без источника, укажи реквизиты 2. В ПКО "ОсновноеИзображение" перед выгрузкой пиши: Значение = Новый Структура(ТутПеречисляйРеквизитыИНеЗабудьОсновноеИзображение,Тут,Перечисляй,Значения,Реквизитов,Не,Забудь,Основное,Изображение...); ПКО укажи свое правило в 1
#10 by AndreyBorovkov
в п.2 Вы имели ввиду ПКС ОсновноеИзображение ?
#11 by cw014
Да, ошибся
#12 by AndreyBorovkov
спасибо большое , буду пробовать)
#13 by Kvestin
Я бы делал так: - перегнал исходное Хранилище значений в Base64 строку, которую можно безболезненно передавать как текст - при загрузке конвертировал это строку обратно в файл Далее надо в соответствующей подсистеме УНФ смотреть, что надо подать на вход процедуре, чтобы она закинула файл туда куда нужно и привязала его к нужному объекту (там их несколько есть). В простейшем случае, можно самому сделать элемент справочника Файл, но это не лучший вариант, т.к. организация хранения может поменяться (хранили в конфигурации а потом решили в томах) и ваш код перестанет работать. Лучше просмотреть экспортные процедуры подсистемы Файлы и использовать именно их после загрузки самого элемента номенклатуры.
#14 by cw014
Видимо с КД ты не работал
#15 by Поpyчик-4
Я с КД2 работаю с 2007 года, но  сделал бы так же, с использованием процедур БСП
#16 by AndreyBorovkov
Функция ДобавитьФайл( Вот в эту функцию ?
#17 by Necessitudo
А синхронизацию данных как делать?
#18 by Kvestin
На правилах КД у меня работат все переносы (между ЗУП, УПП, УТ и БУ + самописная на БСП). Чтобы понять как работать с КД, необходимо просмотреть всю логику работы универсальной загрузки XML (что я и сделал в свое время). Все остальное - это гадание на галочках в правилах без понимания как все это обрабатывается изнутри.
#19 by AndreyBorovkov
Вы не могли бы подробней описать как сделать перенос? Я думаю это пригодится для других. Как преобразовывать и в какую процедуру задействовать?
#20 by Kvestin
У меня нет под рукой УНФ, и я не помню, как именно там привязывается изображение к номенклатуре. Т.е. там именно реквизит с типом СправочникСсылка.Файлы или просто список файлов привязанных в элементу справочника Номенклатуры через владельца. Исходя из этого будет понятно как искать этот присоединенный файл в справочнике УНФ (т.к. никакого GUIDа при выгрузке у вас нет). Далее необходимо создать ПКО для конвертации из хранилища значений в СправочникСсылка.Файлы. В это правило добавляем параметр [Base64] и ставим галку [Получать из входящих данных].Далее перед выгрузкой пишем: Таким образом, мы получим при загрузке сам файл в виде строки. Далее надо настроить поиск этого самого файла в справочнике Файлы. После этого при загрузке возможны 2 варианта: - нашли файл и его надо обновить - файл к номенклатуре не привязан и надо его добавить Чтобы не гадать. Я запустил бы мониторинг производительности и сделал бы обе эти операции в УНФ "руками". Протом проанализировал какие функции используются в том или ином случае. Результат анализа написал бы в После загрузки ПКО. Как пример вот кусок кода в ПКО для переноса УТ => РАРУС CRM (писал напарник):
#21 by Kvestin
Обратите внимание: - в БСП две подсистемы работы с файлами (в УНФ скорее всего тоже). Одна подразумевает версионирование, а вторая нет. Модули для добавления у них различные. - обязательно протестируйте вариант добавление новой номенклатуры с новым файлом, т.к. в этом случае вам надо добавить элемент в справочник Файлы с владельцем (элемент спаравочника Номенклатура), который еще не записана (и фактически ссылки у вас еще нет).
#22 by AndreyBorovkov
Большое спасибо, все становится немного яснее
#23 by AndreyBorovkov
Итак в ПКО Номенклатуры в обработчике После выгрузки пишу: Вся номенклатура сначала загружена без картинок, то есть она существует в базе. При попытке загрузить её уже с картинками  выскакивает ошибка при записи номенклатуры как бы объект(номенклатура) несоответвует (изменен)("операция не может быть выполнена из-за несоответствия версии") , оно ясно что он изменен в той функции из бсп, но я же в конце пишу отказ . почему все равно производится попытка записи.
#24 by AndreyBorovkov
Кстате для этого первого элемента на котором и выскакивает ошибка перегрузилось фото и подставилось как мне надо. Как мне обойти эту ошибку что б номенклатуру не записывало?
#25 by AndreyBorovkov
Kvestin, на Вас надежда))..
#26 by Kvestin
Почему используете обработчик ПослеВыгрузки? Нужно использовать [ПередВыгрузкой] для формирования Base64 строки и [ПослеЗАГРУЗКИ] для добавления изображения на этапе загрузки.
#27 by Kvestin
"оно ясно что он изменен в той функции из бсп" - не совсем понимаю зачем эта функция должна записывать номенклатуру переданную по ссылке в [ВладелецФайла].
#28 by AndreyBorovkov
Я "Перед выгрузкой" сделал как вы говорили. И на "Перед загрузкой" получил двоичные данные все как положено. В общем с задачей справился, благодаря Вам! Создал с помощью конвертации элементы справочника "файлы", и отделно обработкой привязал их к номенклатуре! Все получилось! Еще раз спасибо Вам большое, без Вас я б к этому решению не пришол бы сам..
#29 by Kvestin
Меня просто смутила фраза "Итак в ПКО Номенклатуры в обработчике После выгрузки пишу:". Поэтому и спросил. Я рад что у вас все получилось. Хороших выходных ...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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