Имя: Пароль:
1C
1С v8
УТ11: Выгрузка картинки номенклатуры в файл
, , ,
0 Manonegro
 
02.11.12
13:41
Всем форумчанам физкульт-привет!
Прошу помощи по выгрузке изображения элемента номенклатуры в файл. Пишу:


       ПутьКартинки = Выборка.ФайлКартинки;
       Если ЗначениеЗаполнено(ПутьКартинки) Тогда
           Картинка = ПутьКартинки.ФайлХранилище.Получить();
           Картинка.Записать(ПутьВыгрузки + "\Pictures\" + КодНоменклатуры + "." + ПутьКартинки.Расширение);
       КонецЕсли;

И... что-то не выходит! Прошу по голове сразу не бить.
1 Heckfy
 
02.11.12
13:42
Постав в отладчике точку останова перед
Картинка.Записать(ПутьВыгрузки + "\Pictures\" + КодНоменклатуры + "." + ПутьКартинки.Расширение);
посмотри, что там у тебя на самом деле.
2 Нуф-Нуф
 
02.11.12
13:43
а что не выходит?
3 Wobland
 
02.11.12
13:46
>И... что-то не выходит!
явно где-то не так
4 banco
 
02.11.12
13:49
что такое ФайлКартинки?
5 Manonegro
 
02.11.12
14:07
ФайлКартинки - реквизит справочника Номенклатура с типом СправочникСсылка.НоменклатураПрисоединенныеФайлы
6 Manonegro
 
02.11.12
14:11
Поставил точку останова: Картинка - тип значения Неопределено.
7 banco
 
02.11.12
14:13
сама картинка храниться в регистре сведений ПрисоединенныеФайлы
8 Manonegro
 
02.11.12
14:14
И далее следует: Значение не является значением объектного типа (Записать).
9 Manonegro
 
02.11.12
14:15
(7)
А как её оттуда достать?
10 Wobland
 
02.11.12
14:17
(9) тебе дать пример того, как я файл из РС на форме элемента справочника достаю или всё же от УТ лучше не отходить?
11 Manonegro
 
02.11.12
14:26
(10)
Лучше не отходить.
12 banco
 
02.11.12
14:28
(9) или запросом или
Картинка =ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки);
13 Manonegro
 
02.11.12
14:36
(12)
Извините, а как в целом это должно выглядеть?
14 jump if overflow
 
02.11.12
14:38
Подход какой то древний:

&НаКлиенте
Процедура СохранитьНаДиск(Команда)
   
Если Объект.Ссылка.Пустая() Тогда
       Предупреждение(НСтр("ru = 'Данные не записаны'", "ru"));
       Возврат;
   КонецЕсли;
   
   Если ПустаяСтрока(Объект.ИмяФайла) Тогда
       Предупреждение(НСтр("ru = 'Имя не задано'", "ru"));
       Возврат;
   КонецЕсли;
   
   Адрес = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайла");
   ПолучитьФайл(Адрес, Объект.ИмяФайла, Истина);
КонецПроцедуры
15 Manonegro
 
02.11.12
14:46
(14)
Что сие?
16 Wobland
 
02.11.12
14:46
(15) лекарство. подставь свою ссылку
Адрес = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайла");
   ПолучитьФайл(Адрес, Объект.ИмяФайла, Истина);
17 Manonegro
 
02.11.12
14:54
(16)
Извините, а можно на примере моего кода? Что-то ничего не могу понять.
18 Wobland
 
02.11.12
14:55
(17) не, я УТ11 не протелепатирую..
19 Manonegro
 
02.11.12
14:56
(18) ссылку на что надо подставить и куда?
20 Wobland
 
02.11.12
14:58
(19) да.. у (14) объект, а у тебя в РС всё лежит. а что, типовая сама не умеет сохранять? посмотри, как сделано
21 Manonegro
 
02.11.12
15:04
Всё перепробовал, весь инет перелопатил, не получается никак. Помогите!
22 banco
 
02.11.12
15:27
ПутьКартинки = Выборка.ФайлКартинки;
Если ЗначениеЗаполнено(ПутьКартинки) Тогда
    Картинка = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки).Получить();
  Картинка.Записать(ПутьВыгрузки + "\Pictures\" + КодНоменклатуры + "." + ПутьКартинки.Расширение);
КонецЕсли;
вот так поменяй у себя в коде и не мучайся и научись смотреть как  в типовой делается
23 Manonegro
 
02.11.12
15:42
(22)
ПолучитьДанныеФайла(ФайлКартинки)
в смысле
ПолучитьДанныеФайла(ПутьКартинки) ???
24 Manonegro
 
02.11.12
15:44
Если так, то
Метод объекта не обнаружен (Получить)
25 Manonegro
 
02.11.12
15:49
(22) Я бы рад не париться, но не работает...
26 Manonegro
 
02.11.12
16:06
Уважаемые знатоки, опять телезрители победили?
27 banco
 
02.11.12
16:11
(24) сложно псомотреть что тебе возвращает функция ПрисоединенныеФайлы.ПолучитьДанныеФайла ?
28 Manonegro
 
02.11.12
16:12
ПутьКартинки.ФайлХранилище - тип ХранилищеЗначения. А как из этого хранилища выдернуть картинку? Если ПутьКартинки.ФайлХранилище.Получить(), то возвращает тип Неопределено.
29 Manonegro
 
02.11.12
16:14
(27) возвращает тип Неопределено.
30 banco
 
02.11.12
16:14
(28)ПутьКартинки.ФайлХранилище - Служебное поле для обмена файлами в РИБ? двоичные данные картинки храниться в регисте сведений ПрисоединенныеФайлы
31 Manonegro
 
02.11.12
16:16
Если быть точным,
ПрисоединенныеФайлы.ПолучитьДанныеФайла(ФайлКартинки)
возвращает тип Неопределено
32 banco
 
02.11.12
16:19
ПрисоединенныеФайлы.ПолучитьДанныеФайла возвращает структуру, в этой структуре есть поле СсылкаНаДвоичныеДанныеФайла
33 Manonegro
 
02.11.12
16:27
ПрисоединенныеФайлы.ПолучитьДанныеФайла(Выборка.ФайлКартинки) возвращает Неопределено. Хорошо бы структуру возвращал...
34 Wobland
 
02.11.12
16:28
(33) дай своё творение, мне лениво компилировать всё в кучу из всех постов
35 Aprobator
 
02.11.12
16:29
(0) как минимум из хранилища не файл получен.
36 Manonegro
 
02.11.12
16:34
ПутьКартинки = Выборка.ФайлКартинки;
       Если ЗначениеЗаполнено(ПутьКартинки) Тогда
           Картинка = ПрисоединенныеФайлы.ПолучитьДанныеФайла(ПутьКартинки);
           Картинка.Записать(ПутьВыгрузки + "\Pictures\" + КодНоменклатуры + "." + ПутьКартинки.Расширение);
       КонецЕсли;
37 Wobland
 
02.11.12
16:35
(36) ладно, пойду поем. вдруг дождусь
38 Manonegro
 
02.11.12
16:42
(37) да я в (36) все написал...
39 Aprobator
 
02.11.12
16:46
ПутьКартинки - путь к файлу?
40 Aprobator
 
02.11.12
16:49
Вообще у Картинка тип должен быть двоичные данные, имхо.
41 Manonegro
 
02.11.12
16:56
(39) ПутьКартинки = Номенклатура.ФайлКартинки (тип Ссылка на справочник НоменклатураПрисоединенныеФайлы)
42 Aprobator
 
02.11.12
16:57
тип значения Картинка?
43 Manonegro
 
02.11.12
16:59
нет
44 Aprobator
 
02.11.12
17:00
млин, какой тип значения переменной Картинка.
45 Manonegro
 
02.11.12
17:02
Неопределено
46 Aprobator
 
02.11.12
17:08
ну так все правильно - у неопределено нет метода Записать(). Ковыряй модуль получения данных файла картинки.
47 Wobland
 
02.11.12
17:19
(38) гляжу, ты уже должен был понять, что не всё ;)
48 Manonegro
 
04.11.12
13:07
Извиняюсь, отсутствовал.
Кто-нибудь выгружал картинки номенклатуры из УТ? Неужели никто не выгружал?
49 Wobland
 
04.11.12
13:25
(48) скажем так, я на такое способен
50 Manonegro
 
04.11.12
14:04
ПутьКартинки = Выборка.ФайлКартинки;
       Если ЗначениеЗаполнено(ПутьКартинки) Тогда
             Картинка = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ПутьКартинки);
           Картинка.Записать(КаталогКартинок + КодНоменклатуры + "." + ПутьКартинки.Расширение);
       КонецЕсли;

Всем спасибо огромное! Вот так получилось.
Закон Брукера: Даже маленькая практика стоит большой теории.