|
Выгрузка изображений номенклатуры | ☑ | ||
---|---|---|---|---|
0
NortT
07.11.17
✎
11:28
|
Добрый день. Кто-нибудь знает как выгрузить картинку, прикрепленную к номенклатуре?
Пробовал сделать вот так, но значение Файл у меня в результате Неопределено. Может есть у кого рабочий пример? &НаСервере Процедура ВыгрузитьКартинкиНаСервере() КаталогИБ = "C:\wamp64\www\ххх\img\"; КаталогНаДиске = Новый Файл("C:\wamp64\www\ххх\img\1"); Если НЕ КаталогНаДиске.Существует() Тогда СоздатьКаталог(КаталогНаДиске.Путь); КонецЕсли; ИмяФайла = КаталогИБ + "1.jpg"; Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Тестовая бита"); Если Номенклатура <> Неопределено Тогда Файл = Номенклатура.ФайлКартинки.ФайлХранилище.Получить(); Если Файл <> Неопределено Тогда Попытка Сообщить("Производится локальная запись файла: " + ИмяФайла); Файл.Записать(ИмяФайла); Сообщить("Файл успешно записан на диск"); Исключение Сообщить("Ошибка записи"); КонецПопытки; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
1
PuhUfa
07.11.17
✎
11:41
|
А отладчик то что говорит? что у тебя тут:
Номенклатура.ФайлКартинки.ФайлХранилище |
|||
2
NortT
07.11.17
✎
11:56
|
Отладчик говорит что тип Номенклатура.ФайлКартинки.ФайлХранилище это ХранилищеЗначения. А когда делаю Получить() то получаю в итоге Неопределено. Попробовал сделать через запрос к справочнику НоменклатураПоставщиковПрисоединенныеФайлы и получить все записи. Там всего 4 записи на данный момент, при этом для каждой записи ФайлХранилище.Получить() возвращает Неопределено.
|
|||
3
NortT
07.11.17
✎
12:05
|
Прошу прощения. Под НоменклатураПоставщиковПрисоединенныеФайлы
имелось ввиду НоменклатураПрисоединенныеФайлы, скопировал имя с конфигуратора не то :) |
|||
4
ejikbeznojek
07.11.17
✎
12:10
|
А картинки номенклатуры куда-то ещё выводятся?
Может там посмотреть откуда они берутся? |
|||
5
NortT
07.11.17
✎
12:15
|
Выводятся в форме элемента номенклатуры. Сейчас разбираюсь откуда они выводятся на форму, но пока не могу понять.
|
|||
6
mehfk
07.11.17
✎
12:18
|
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Тестовая бита");
Если Номенклатура <> Неопределено Тогда бессмысленное сравнение |
|||
7
NortT
07.11.17
✎
12:22
|
Согласен, но сути дела это не меняет.
|
|||
8
NortT
07.11.17
✎
12:24
|
Можно уменьшить код до такого:
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Тестовая бита"); Файл = Номенклатура.ФайлКартинки.ФайлХранилище.Получить(); |
|||
9
mehfk
07.11.17
✎
12:25
|
Ну раз не меняет - значит ебись сам.
|
|||
10
NortT
07.11.17
✎
12:28
|
И как меняет?
|
|||
11
h-sp
07.11.17
✎
12:32
|
(10) НайтиПоНаименованию в вашем случае никогда не даст в результате Неопределено.
поэтому сравнение Если Номенклатура <> Неопределено Тогда это дебилизм. |
|||
12
PuhUfa
07.11.17
✎
12:36
|
(2) Номенклатура.ФайлКартинки - ссылка на справочник?
У "Тестовая бита" картинка то вообще есть? |
|||
13
NortT
07.11.17
✎
12:40
|
Я же написал, это понятно, что не даст. Этот кусок кода я скопипастил с соседней ветки этого форума. Вопрос был не в том что даст НайтиПоНаименованию, а как сохранить изображение найденной номенклатуры в файл.
Попробовал получить запросом список файлов у номенклатуры, в цикле Файл тоже имеет значение неопределено. Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Тестовая бита"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураПрисоединенныеФайлы.ФайлХранилище |ИЗ | Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы |ГДЕ | НоменклатураПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла"; Запрос.УстановитьПараметр("ВладелецФайла", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Файл = ВыборкаДетальныеЗаписи.ФайлХранилище.Получить(); КонецЦикла; (12) - Да есть, приведенный выше запрос возвращает одну запись. Проверял в консоле запросов на всякий случай, там тоже запрос возвращает одну запись для данной номенклатуры. |
|||
14
NortT
07.11.17
✎
12:41
|
(12) Да, оменклатура.ФайлКартинки это ссылка на НоменклатураПрисоединенныеФайлы
|
|||
15
PuhUfa
07.11.17
✎
12:44
|
(13) >>Да есть, приведенный выше запрос возвращает одну запись.
Приведенный запрос возвращает ссылку на НоменклатураПрисоединенныеФайлы. Но это не факт, что в найденном элементе справочника "НоменклатураПрисоединенныеФайлы", в реквизите "ФайлХранилище" записана картинка. |
|||
16
R740
07.11.17
✎
15:42
|
Используй "Двоичные данные"
........... РезультаТ = Неопределено; НМК = СокрЛП(Строка(Номенклатура)); КартинкаПоАртикулу = КаталогИЗО+"\"+НМК+".jpg"; Попытка Картинка = Новый ДвоичныеДанные(КартинкаПоАртикулу); НадоВыгружать = истина; Исключение НадоВыгружать = Ложь; Сообщить("Нет файла-"+НМК+".jpg"+" с изображением в исходном каталоге!"); КонецПопытки; ................ |
|||
17
NortT
08.11.17
✎
04:19
|
(16) Так в этом примере я получаю картинку из файла, а мне нужно записать картинку в файл. Вопрос в том как получить ее из базы, где именно они хранятся?
(15) Я запросом перебрал все записи в НоменклатураПрисоединенныеФайлы, в каждой записи поле ФайлХранилище == Неопределено. Вопрос: кто знает где именно хранится картинка номенклатуры? |
|||
18
NortT
08.11.17
✎
05:18
|
В общем решение было найдено. Данные картинок хранятся в регистре ПрисоединенныеФайлы, а не в справочнике НоменклатураПрисоединенныеФайлы. Для конкретной номенклатуры получился такой код (код требует доработки, но общий смысл примерно такой):
Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Тестовая бита"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПрисоединенныеФайлы.ХранимыйФайл, | НоменклатураПрисоединенныеФайлы.ВладелецФайла, | НоменклатураПрисоединенныеФайлы.Ссылка, | Номенклатура.Код, | НоменклатураПрисоединенныеФайлы.Расширение |ИЗ | Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО НоменклатураПрисоединенныеФайлы.ВладелецФайла = Номенклатура.Ссылка, | РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы |ГДЕ | НоменклатураПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла | И Номенклатура.ФайлКартинки.Ссылка = НоменклатураПрисоединенныеФайлы.Ссылка | И ПрисоединенныеФайлы.ПрисоединенныйФайл = Номенклатура.ФайлКартинки.Ссылка"; Запрос.УстановитьПараметр("ВладелецФайла", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Файл = ВыборкаДетальныеЗаписи.ХранимыйФайл.Получить(); Файл.Записать(КаталогИБ+ВыборкаДетальныеЗаписи.Код+"."+ВыборкаДетальныеЗаписи.Расширение); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |