|   |   | 
| 
 | Перенести картинку из номенклатуры в характеристику | ☑ | ||
|---|---|---|---|---|
| 0
    
        Олдж 24.01.25✎ 22:46 | 
        Доброго всем дня, прошу помочь с методикой переноса картинки в базе УНФ из номенклатуры в характеристику. Сами картинки хранятся в НоменклатураПрисоединенныеФайлы и ХарактеристикиПрисоединенныеФайлы.
 Делаю вот так: КартинкаХарактеристики = Справочники.ХарактеристикиНоменклатурыПрисоединенныеФайлы.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(КартинкаХарактеристики, Номенклатура.ФайлКартинки,,"Родитель,Владелец"); КартинкаХарактеристики.ВладелецФайла = Характеристика.Ссылка; КартинкаХарактеристики.Записать(); ХарактеристикаСКартинкой = Характеристика.ПолучитьОбъект(); ХарактеристикаСКартинкой.ФайлКартинки = КартинкаХарактеристики.Ссылка; ХарактеристикаСКартинкой.Записать(); Ошибок нет, но картинка у характеристики не появляется. | |||
| 2
    
        lEvGl 24.01.25✎ 23:05 | 
        судя по коду
 ЗаполнитьЗначенияСвойств(КартинкаХарактеристики, Номенклатура.ФайлКартинки,,"Родитель,Владелец"); КартинкаХарактеристики - элемент справочника, Номенклатура.ФайлКартинки - хранилище значения (наверно), как ЗаполнитьЗначенияСвойств должно тут отработать? Может Номенклатура? Ну и потом, хранилище значения (возможно) надо Получить(), потом копировать, хотя, может и так отработает, попробуйте зы. УНФов не было, но ЗаполнитьЗначения тут не по теме, либо параметры по-другому передавать надо | |||
| 3
    
        Олдж 24.01.25✎ 23:56 | 
        (2) у файлкартинки из характеристики тип "Справочник.ХарактеристикиНоменклатурыПрисоединенныеФайлы", у файлкартинки из номенклатуры "НоменклатураПрисоединенныеФайлы". Справочники НоменклатураПрисоединенныеФайлы и ХарактеристикиНоменклатурыПрисоединенныеФайлы имеют одинаковый набор реквизитов, поэтому и появилась мысль перенести данные таким образом     | |||
| 4
    
        НоваяВолна 24.01.25✎ 23:57 | 
        (3) Т.е. понимания что есть Номенклатура и чем отличается от ХарактеристикиНоменклатуры за все годы работы так и не появилось?     | |||
| 5
    
        Олдж 25.01.25✎ 00:06 | 
        (4) у Номенклатуры реквизит "ФайлКартинки" тип "Справочник.НоменклатураПрисоединенныеФайлы". У характеристики номенклатуры реквизит "ФайлКартинки" тип "Справочник.ХарактеристикиНоменклатурыПрисоединенныеФайлы". оба этих справочника имеют одинаковый набор реквизитов. Необходимо скопировать картинку из номенклатуры в характеристику. 
 Если есть понимание методики просьба помочь | |||
| 6
    
        lEvGl 25.01.25✎ 08:14 | 
        (5) ну чтобы уж точно, то из одного справочника - файл.получить(), это будут двоичные данные, в другом.файл = ДвоичныеДанные первого
 ЗаполнитьЗначения наверно должно отработать, но есть сомнения из за типа ХранилищеЗначения, это "обертка" а, ну да в другом.файл = Новый ХранилищеЗначение(ДвоичныеДанные первого, Новый СжатиеДанных(1-9)) | |||
| 7
    
        Сергиус 25.01.25✎ 03:50 | 
        (0)А там случаем не в регистре сведения сами данные то хранятся?     | |||
| 8
    
        Олдж 25.01.25✎ 11:01 | 
        (7) Похоже, что да     | |||
| 9
    
        Олдж 25.01.25✎ 11:20 | 
        (7) Вот так заработало, благодарю
 Запрос = Новый Запрос;
		Запрос.Текст  ="
		|Выбрать
		|	Файл,
		|	ХранилищеДвоичныхданных
		|ИЗ
		|	РегистрСведений.ХранилищеФайлов
		|ГДЕ
		|	Файл = &выбФайл"; 
		
		Запрос.УстановитьПараметр("выбФайл",Характеристика.Владелец.ФайлКартинки.Ссылка);
		Выборка = Запрос.Выполнить().Выгрузить();
		
		Если Выборка.Количество()>0 Тогда   
			КартинкаХарактеристики = Справочники.ХарактеристикиНоменклатурыПрисоединенныеФайлы.СоздатьЭлемент();  
			ЗаполнитьЗначенияСвойств(КартинкаХарактеристики, Характеристика.Владелец.ФайлКартинки,,"Родитель,Владелец");  
			КартинкаХарактеристики.ВладелецФайла = Характеристика.Ссылка; 
			
			ДвоичныеДанные = Характеристика.Владелец.ФайлКартинки.ТекстХранилище.Получить();
			КартинкаХарактеристики.ТекстХранилище = Новый ХранилищеЗначения(ДвоичныеДанные);
			КартинкаХарактеристики.Записать();
			
			ДвоичныеДанные = Характеристика.Владелец.ФайлКартинки.ФайлХранилище.Получить();
			КартинкаХарактеристики.ФайлХранилище = ДвоичныеДанные;
			КартинкаХарактеристики.Записать();  
			
			Запись = РегистрыСведений.ХранилищеФайлов.СоздатьМенеджерЗаписи();
			Запись.Файл = КартинкаХарактеристики.Ссылка;
			Запись.ХранилищеДвоичныхДанных = Выборка[0].ХранилищеДвоичныхданных;
			Запись.Записать(Ложь);   
			
			ХарактеристикаСКартинкой = Характеристика.ПолучитьОбъект();
			ХарактеристикаСКартинкой.ФайлКартинки = КартинкаХарактеристики.Ссылка;
			ХарактеристикаСКартинкой.Записать();
		КонецЕсли;
 | |||
| 10
    
        Tarlich 27.01.25✎ 09:34 | 
        (9) Похоже вы не перенесли, а скопировали картинку из номенклатуры в её характеристику, а если много характеристик у одной номенклатуры?     | |||
| 11
    
        Гений 1С 26.01.25✎ 14:46 | ||||
| 12
    
        Олдж 26.01.25✎ 17:39 | 
        (10) Да, так и есть, так и нужно :) Было 10 номенклатур, стало одна номенклатура и 10 характеристик. Из неиспользуемых номенклатур задача скопировать картинку в соответствующую характеристику.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |