КД 2.1: Перенос картинок из ХранилищаДополнительнойИнформации в СправочникПрикрепленныеФайлы
Вроде кое как, с форумчан сделал правила обмена для переноса справочника с картинками из обычного приложения в управляемое. Но, при загрузке получаю ошибку:
Вот код обработчика:
Подскажите, где ошибка и критична ли она?
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7386)}: Значение не является значением объектного типа (Отбор)
Ошибка в обработчике события ПослеЗагрузкиДанных (конвертация)
Обработчик = ПослеЗагрузкиДанных (конвертация)
ОписаниеОшибки = Значение не является значением объектного типа (Конвертация_ПослеЗагрузкиДанных)
ПозицияМодуля = (1)
КодСообщения = 23Вот код обработчика:
ЗагруженныеОбъектыПереноса = Параметры.ЗагруженныеОбъектыПереноса;
ЗагруженныеОбъектыПереноса.Сортировать("ИмяПКО");
Для Каждого СтрокаТаблицы Из ЗагруженныеОбъектыПереноса Цикл
Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;
Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;
ОбъектМодифицирован = Истина;
Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;
Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
КонецЕсли;
КонецЦикла; ПоказатьПодскажите, где ошибка и критична ли она?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) на первый вгляд проблем не вижу. попробуйте открыть файл с правилами через любой текстовый редактор и поищите в тексте вот это: Конвертация_ПослеЗагрузкиДанных. В том месте, где это встретится скорее всего и будет проблема. возможно такого алгоритма у вас просто нет, а вызов его где-то присутствует.
(8) Я так понял, что проблема в ПВД Штрихкоды. Там в обработчике ПередОбработкой такой код:
И видимо он не полный, хотя я искал вызов этого кода в других обработчиках/алгоритмах, но не нашел. Может плохо искал.
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Штрихкоды.Штрихкод КАК Штрихкод,
| Штрихкоды.ТипШтрихкода КАК ТипШтрихкода,
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.ЕдиницаИзмерения КАК Упаковка,
| Штрихкоды.ХарактеристикаНоменклатуры КАК Характеристика
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ
| Штрихкоды.Владелец ССЫЛКА Справочник.Номенклатура
| И ВЫРАЗИТЬ(Штрихкоды.Владелец КАК Справочник.Номенклатура).ВидНоменклатуры.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга))
|");
ВыборкаДанных = Запрос; ПоказатьИ видимо он не полный, хотя я искал вызов этого кода в других обработчиках/алгоритмах, но не нашел. Может плохо искал.
Здравствуйте, а какова концепция переноса картинок, если картинки и номенклатура хранятся отдельно друг от друга в источнике (картинка не является реквизитом товара), и у товара много картинок.
Допустим я переношу товары и их картинки в некую пустую базу.
Вот я написал правила для переноса товаров, а в какой момент к этим товарам нужно подгружать картинки ?
На стороне приемника (после загрузки товара ) я уже не могу обратиться к данным источника, чтобы получить запросом список картинок.
Если написать отдельное правило для справочника картинок и выгружать их следом за товарами, то нужно искать что-ли в
приемнике товар-владельца после загрузки каждой картинки ?
Но будет ли у этого товара ссылка на момент поиска, чтобы установить его в качестве владельца этой картинки ?
Допустим я переношу товары и их картинки в некую пустую базу.
Вот я написал правила для переноса товаров, а в какой момент к этим товарам нужно подгружать картинки ?
На стороне приемника (после загрузки товара ) я уже не могу обратиться к данным источника, чтобы получить запросом список картинок.
Если написать отдельное правило для справочника картинок и выгружать их следом за товарами, то нужно искать что-ли в
приемнике товар-владельца после загрузки каждой картинки ?
Но будет ли у этого товара ссылка на момент поиска, чтобы установить его в качестве владельца этой картинки ?
Сделал через запись товара после загрузки и затем через поиск этого товара после загрузки картинки. Не уверен что правильно, думаю что должен быть более простой способ.
если что - в правила после загрузки данных, что бы файл и подгрузился и сразу показывался у ном-ры добавлен вот такой код
ЗагруженныеОбъектыПереноса = Параметры.ЗагруженныеОбъектыПереноса;
ЗагруженныеОбъектыПереноса.Сортировать("ИмяПКО");
Для Каждого СтрокаТаблицы Из ЗагруженныеОбъектыПереноса Цикл
Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;
Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;
ОбъектМодифицирован = Истина;
Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;
Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Ном = Объект.ВладелецФайла.Ссылка.ПолучитьОбъект();
Ном.ФайлКартинки = Объект.Ссылка;
Ном.Записать();
КонецЕсли;
КонецЦикла;
ЗагруженныеОбъектыПереноса = Параметры.ЗагруженныеОбъектыПереноса;
ЗагруженныеОбъектыПереноса.Сортировать("ИмяПКО");
Для Каждого СтрокаТаблицы Из ЗагруженныеОбъектыПереноса Цикл
Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;
Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;
ОбъектМодифицирован = Истина;
Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;
Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Ном = Объект.ВладелецФайла.Ссылка.ПолучитьОбъект();
Ном.ФайлКартинки = Объект.Ссылка;
Ном.Записать();
КонецЕсли;
КонецЦикла;
(13)
а можете поделиться правилами
сейчас пытаюсь для рт сделать не выгружает картинку(
ЗагруженныеОбъектыПереноса = Параметры.ЗагруженныеОбъектыПереноса;
ЗагруженныеОбъектыПереноса.Сортировать("ИмяПКО");
Для Каждого СтрокаТаблицы Из ЗагруженныеОбъектыПереноса Цикл
Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;
Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;
ОбъектМодифицирован = Истина;
Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;
Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Ном = Объект.ВладелецФайла.Ссылка.ПолучитьОбъект();
Ном.ФайлКартинки = Объект.Ссылка;
Ном.Записать();
КонецЕсли;
КонецЦикла;
ПоказатьЗагруженныеОбъектыПереноса.Сортировать("ИмяПКО");
Для Каждого СтрокаТаблицы Из ЗагруженныеОбъектыПереноса Цикл
Если СтрокаТаблицы.Объект.ЭтоНовый() Тогда
Продолжить;
КонецЕсли;
Объект = СтрокаТаблицы.Объект.Ссылка.ПолучитьОбъект();
ПараметрыОбъекта = СтрокаТаблицы.Параметры;
ИмяПКО = СтрокаТаблицы.ИмяПКО;
ОбъектМодифицирован = Истина;
Если Метаданные.Справочники.Содержит(Объект.МетаДанные()) Тогда
Выполнить(Алгоритмы.ОбработкаСправочниковОтложенная);
КонецЕсли;
Если ОбъектМодифицирован Тогда
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Ном = Объект.ВладелецФайла.Ссылка.ПолучитьОбъект();
Ном.ФайлКартинки = Объект.Ссылка;
Ном.Записать();
КонецЕсли;
КонецЦикла;
а можете поделиться правилами
сейчас пытаюсь для рт сделать не выгружает картинку(
(16)
Подскажите в справочник НоменклатураПрисоединенныеФайлы запись сделал а вот в регистре в ДанныеРегистра.Вставить("Файл",ДанныеПрисоединенногоФайла); не заполняет Файл пишит неопределено
где я накосячил ткните носом
Запросы.ФайлыНоменклатуры.УстановитьПараметр("Номенклатура",Источник);
Выборка = Запросы.Файлыноменклатуры.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеПрисоединенногоФайла = Новый Структура ("Ссылка, Наименование, ВладелецФайла, Расширение, Размер, ПутькФайлу");
ЗаполнитьЗначенияСвойств(ДанныеПрисоединенногоФайла,Выборка);
ДанныеПрисоединенногоФайла.Расширение = РаботаСФайлами.ПолучитьРасширениеФайла(Выборка.ИмяФайла);
ДанныеПрисоединенногоФайла.Размер = 0;
ДанныеПрисоединенногоФайла.ПутьКфайлу="";
ВыгрузитьПоПравилу(ДанныеПрисоединенногоФайла, , , , "НоменклатураПрисоединенныеФайлы");
ДанныеРегистра = Новый Структура ("ДвоичныеДанныеФайла");
ЗаполнитьЗначенияСвойств(ДанныеРегистра,Выборка);
ДанныеРегистра.Вставить("Активность",Истина);
ДанныеРегистра.Вставить("Файл",ДанныеПрисоединенногоФайла);
ВыгрузитьПоПравилу(ДанныеРегистра,,,,"ДвоичныеДанныеФайлов");
КонецЦикла; ПоказатьПодскажите в справочник НоменклатураПрисоединенныеФайлы запись сделал а вот в регистре в ДанныеРегистра.Вставить("Файл",ДанныеПрисоединенногоФайла); не заполняет Файл пишит неопределено
где я накосячил ткните носом
Прикрепленные файлы:
ПравилаОбменаДанными2.xml
(16) эту ошибку исправил неправильно указал правило а вот в номенклатуре файлкартинки не заполняется
исправил код вот так вот это правильно?
сейчас заполняет но не уверен что правильно
исправил код вот так вот это правильно?
сейчас заполняет но не уверен что правильно
Запросы.ФайлыНоменклатуры.УстановитьПараметр("Номенклатура",Источник);
Выборка = Запросы.Файлыноменклатуры.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеРегистра = Новый Структура("ДвоичныеДанныеФайла");
ЗаполнитьЗначенияСвойств(ДанныеРегистра,Выборка);
ДанныеРегистра.Вставить("Активность",Истина);
ДанныеПрисоединенногоФайла = Новый Структура ("Ссылка, Наименование, ВладелецФайла, Расширение, Размер, ПутькФайлу");
ЗаполнитьЗначенияСвойств(ДанныеПрисоединенногоФайла,Выборка);
ДанныеПрисоединенногоФайла.Расширение = РаботаСФайлами.ПолучитьРасширениеФайла(Выборка.ИмяФайла);
ДанныеПрисоединенногоФайла.Размер = 0;
ДанныеПрисоединенногоФайла.ПутьКфайлу="";
ВыгрузитьПоПравилу(ДанныеПрисоединенногоФайла, , , , "НоменклатураПрисоединенныеФайлы");
ДанныеРегистра.Вставить("Файл",ДанныеПрисоединенногоФайла);
ВыгрузитьПоПравилу(ДанныеРегистра, , , , "ДвоичныеДанныеФайлов");
Значение = ДанныеПрисоединенногоФайла.Ссылка; ///добавил вот так иначе не заполнял
КонецЦикла;
ПоказатьПрикрепленные файлы:
ПравилаОбменаДанными2.xml
(24)извините слепой действительно
немного модернизировал вот так мб что потом перекинуть картинку на том было можно иначе ругался на то что тип не двоичные данные а картинка
немного модернизировал вот так мб что потом перекинуть картинку на том было можно иначе ругался на то что тип не двоичные данные а картинка
Запросы.ФайлыНоменклатуры.УстановитьПараметр("Номенклатура",Источник);
Выборка = Запросы.Файлыноменклатуры.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДХ = Выборка.ДвоичныеДанныеФайла.Получить();
Если ТипЗнч(ДХ) = Тип("Картинка") Тогда
Размер = ДХ.ПолучитьДвоичныеДанные().Размер();
ДвДанные = Новый ХранилищеЗначения(ДХ.ПолучитьДвоичныеДанные(), Новый СжатиеДанных(9));
КонецЕсли;;
ДанныеПрисоединенногоФайла = Новый Структура ("Ссылка, Наименование, ВладелецФайла, Расширение, Размер, ПутькФайлу,файл,ФайлХранилище,ИндексКартинки,Автор,ТипХраненияФайла,СтатусИзвлеченияТекста");
ЗаполнитьЗначенияСвойств(ДанныеПрисоединенногоФайла,Выборка);
ДанныеПрисоединенногоФайла.Расширение = РаботаСФайлами.ПолучитьРасширениеФайла(Выборка.ИмяФайла);
ДанныеПрисоединенногоФайла.ФайлХранилище = ДвДанные;
ДанныеПрисоединенногоФайла.ИндексКартинки ="42";
ДанныеПрисоединенногоФайла.Автор = "";
ДанныеПрисоединенногоФайла.Размер = Размер;
ДанныеПрисоединенногоФайла.ТипХраненияФайла ="ВИнформационнойБазе";
ДанныеПрисоединенногоФайла.ПутьКфайлу="";
ДанныеПрисоединенногоФайла.СтатусИзвлеченияТекста = "НеИзвлечен";
ВыгрузитьПоПравилу(ДанныеПрисоединенногоФайла, , , , "НоменклатураПрисоединенныеФайлы");
///++++Регистр присоединенныеФайлы
ДанныеРегистра = Новый Структура("ДвоичныеДанныеФайла,Активность,Файл");
ДанныеРегистра.Вставить("ДвоичныеДанныеФайла", ДвДанные);//Выборка.ДвоичныеДанныеФайла);
ДанныеРегистра.Вставить("Активность", Истина);
ДанныеРегистра.Вставить("Файл",ДанныеПрисоединенногоФайла);
ВыгрузитьПоПравилу(ДанныеРегистра, , , , "ДвоичныеДанныеФайлов");
///----Регистр присоединенныеФайлы
//ЗаполнитьЗначенияСвойств(ДанныеРегистра,Выборка);
Значение = ДанныеПрисоединенногоФайла;
КонецЦикла; Показать
Пытаюсь из УТ11.1 -> УТ11.4 сделать. Не выгружает картинку.
Справочники: Номенклатура, НоменклатураПрисоединенныеФайлы заполнил. РС ДвоичныеДанныеФайлов тоже.
В карточке товара написано, что файл есть, если зайти в файл - там тоже файл есть, но открыть картинку его не получается, ошибка. Уже голову сломал.
Не поделитесь опытом ?
Справочники: Номенклатура, НоменклатураПрисоединенныеФайлы заполнил. РС ДвоичныеДанныеФайлов тоже.
В карточке товара написано, что файл есть, если зайти в файл - там тоже файл есть, но открыть картинку его не получается, ошибка. Уже голову сломал.
Не поделитесь опытом ?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
