|
Как получить файл картинки номенклатуры для вывода его на печать? УТ 11 | ☑ | ||
---|---|---|---|---|
0
vse_serjezno
21.01.14
✎
11:06
|
Утро доброе!
Ситуация следующая: У номенклатуры есть реквизит ФайлКартинка с типом СправСсылка.НоменклатураПрисоединенныеФайлы. Мне нужно получить картинку, которая хранится в номенклатуре и передать ее в макет для последующего вывода печатной формы. Проблема возникает получении картинки. С хранилищем значений до этого не работала, подскажите, пожалуйста, как решить данную задачу? Привожу код функции. |
|||
1
vse_serjezno
21.01.14
✎
11:06
|
Функция СформироватьПечатнуюФормуСертификаты(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент; Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ИПМ_ПечатьДополнительныхФорм.ПФ_MXL_Штрихкоды"); ОбластьКартинкиСертификата = Макет.ПолучитьОбласть("ИзображениеСертификата"); ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Сертификат"); СсылкаНаСборку = МассивОбъектов[0]; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Номенклатура, | ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Номенклатура.ФайлКартинки КАК ФайлКартинки |ИЗ | Документ.ИПМ_СборЗаказов.СписаниеНоменклатурыСЯчеек КАК ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек |ГДЕ | ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Ссылка = &Ссылка | И ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры"; Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры); Запрос.УстановитьПараметр("Ссылка", СсылкаНаСборку); Результат = Запрос.Выполнить(); ВыборкаКартинки = Результат.Выбрать(); Пока ВыборкаКартинки.Следующий() Цикл //НоменклатураОбъект = ВыборкаКартинки.Номенклатура; ИмяФайла = Строка(ВыборкаКартинки.ФайлКартинки); РазмещениеФайла = КаталогВременныхФайлов() + ИмяФайла + ".jpg"; ДвоичныеДанные = ПрисоединенныеФайлы.ПолучитьИмяФайлаСПутемКДвоичнымДанным(ВыборкаКартинки.ФайлКартинки); Макет.Рисунки.Сертификат.Картинка = ДвоичныеДанные; ТабличныйДокумент.Вывести(ОбластьКартинкиСертификата); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции |
|||
2
vse_serjezno
21.01.14
✎
11:09
|
Что следует передать в эту строку:
Макет.Рисунки.Сертификат.Картинка = ... ; ? Знаю, что ДвоичныеДанные не правильно туда передавать. |
|||
3
vse_serjezno
21.01.14
✎
11:13
|
Вот используемая функция
Функция ПолучитьИмяФайлаСПутемКДвоичнымДанным(ФайлСсылка) Экспорт ИмяФайлаСПутем = ""; Если ФайлСсылка.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда МенеджерЗаписи = РегистрыСведений.ПрисоединенныеФайлы.СоздатьМенеджерЗаписи(); МенеджерЗаписи.ПрисоединенныйФайл = ФайлСсылка.Ссылка; МенеджерЗаписи.Прочитать(); Если МенеджерЗаписи.ПрисоединенныйФайл.Пустая() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка открытия файла - файл не найден в информационной базе. Обратитесь к администратору. | Файл: ""%1.%2""'"), ФайлСсылка.Наименование, ФайлСсылка.Расширение); КонецЕсли; ДвоичныеДанные = МенеджерЗаписи.ХранимыйФайл.Получить(); ИмяФайлаСПутем = ПолучитьИмяВременногоФайла(ФайлСсылка.Расширение); ДвоичныеДанные.Записать(ИмяФайлаСПутем); Иначе Если НЕ ФайлСсылка.Том.Пустая() Тогда ИмяФайлаСПутем = ФайловыеФункции.ПолныйПутьТома(ФайлСсылка.Том) + ФайлСсылка.ПутьКФайлу; КонецЕсли; КонецЕсли; Возврат ИмяФайлаСПутем; КонецФункции |
|||
4
vse_serjezno
21.01.14
✎
11:15
|
Может нужно что-то типа МенеджерЗаписи.ХранимыйФайл.Получить() ?.. :/
|
|||
5
vse_serjezno
21.01.14
✎
11:17
|
Я конечно очень рада, что вы все здесь присутствуете и наблюдаете, как я тут сама с собой веду беседу.
Но может посоветуете что-нибудь в тему? О_о |
|||
6
НЕА123
21.01.14
✎
11:17
|
ХранилищеЗначения.Получить (ValueStorage.Get)
ХранилищеЗначения (ValueStorage) Получить (Get) Синтаксис: Получить() Возвращаемое значение: Тип: Произвольный. Значение, содержащееся в хранилище. Описание: Получает из хранилища сохраненное в нем значение. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: МояКартинка = ХранилищеКартинки.Получить(); |
|||
7
vse_serjezno
21.01.14
✎
18:39
|
Результат:
//++ tanya 21.01.2014 // Функция возвращает табличный документ с сертификатами, которые следует вложить в заказ Функция СформироватьПечатнуюФормуСертификаты(МассивОбъектов, ОбъектыПечати, ПараметрыПечати) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = УправлениеПечатью.ПолучитьМакет("Обработка.ИПМ_ПечатьДополнительныхФорм.ПФ_MXL_Штрихкоды"); ОбластьКартинкиСертификата = Макет.ПолучитьОбласть("ИзображениеСертификата"); Сертификат = ОбластьКартинкиСертификата.Рисунки["Сертификат"]; ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Сертификат"); СсылкаНаСборку = МассивОбъектов[0]; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Номенклатура, | ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Номенклатура.ФайлКартинки КАК ФайлКартинки |ИЗ | Документ.ИПМ_СборЗаказов.СписаниеНоменклатурыСЯчеек КАК ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек |ГДЕ | ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Ссылка = &Ссылка | И ИПМ_СборЗаказовСписаниеНоменклатурыСЯчеек.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры"; Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры); Запрос.УстановитьПараметр("Ссылка", СсылкаНаСборку); Результат = Запрос.Выполнить(); ВыборкаКартинки = Результат.Выбрать(); Пока ВыборкаКартинки.Следующий() Цикл Если ВыборкаКартинки.ФайлКартинки <> Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка() Тогда Сертификат.Картинка = Новый Картинка; СтруктураКартинки = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ВыборкаКартинки.ФайлКартинки); ЗнКартинки = ПолучитьИзВременногоХранилища(СтруктураКартинки.СсылкаНаДвоичныеДАнныеФайла); Если ТипЗнч(ЗнКартинки) = Тип("Картинка") Тогда Сертификат.Картинка = ЗнКартинки; Иначе Сертификат.Картинка = Новый Картинка(ЗнКартинки); КонецЕсли; Иначе Сообщить("У номенклатуры: "+ВыборкаКартинки.Номенклатура + " нет изображения!"); КонецЕсли; ТабличныйДокумент.Вывести(ОбластьКартинкиСертификата); ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции //-- tanya 21.01.2014 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |