Имя: Пароль:
1C
 
Картинки из Табличного Документа
0 tashi_ork
 
28.07.10
14:54
Здравствуйте.
Подскажите, пожалуйста, решение следующей проблемы.
Имеется табличный документ, в некоторых ячейках которого содержатся картинки.
Каким образом можно получить картинку из ячейки(или сопоставить элементы коллекции картинок табличного документа соответствующим ячейкам), для последующей, работы с ними, например записи в хранилище значений?
1 Лефмихалыч
 
28.07.10
14:56
ТабличныйДокумент.Рисунки (SpreadsheetDocument.Drawings)
ТабличныйДокумент (SpreadsheetDocument)
Рисунки (Drawings)
Использование:
Только чтение.
Описание:
Тип: КоллекцияРисунковТабличногоДокумента. Содержит коллекцию рисунков табличного документа.
Сериализуется.
2 tashi_ork
 
28.07.10
15:03
Верно,и таким способом я получу список рисунков Табличного Документа, но сопоставить ячейку и рисунок из этого списка я не могу. Или я что-то неправильно делаю.
Объясните,пожалуйста.
3 Mitriy
 
28.07.10
15:08
(2) цель какая?
4 Лефмихалыч
 
28.07.10
15:11
(3) возвижу - изображения товара из каталога поставщика в номенклатуру всосать. Или что-то вроде этого
5 tashi_ork
 
28.07.10
15:15
Абсолютно верно. Цель - заполнять справочник номенклатура из excel-файла прайса поставщика.
Одно из условий - должно загружаться изображение товара, содержащееся в одной из ячеек.
Может у кого-то есть идеи?
6 Mitriy
 
28.07.10
15:18
(5) а табличный документ тут каким боком?
7 tashi_ork
 
28.07.10
15:22
Продолбавшись с excel-файлом несколько дней, я Йокселем переконвертировал его в *.mxl, который гружу в табличный документ.
В принципе, мне все равно, откуда брать данные, если это возможно сделать и напрямую из excel, тоже сойдет.
8 Лефмихалыч
 
28.07.10
15:28
(7) почему не получилось через ОЛЕ?
9 tashi_ork
 
28.07.10
15:31
Я не разобрался как из excel-файла получить картинки через Ole.
10 tashi_ork
 
28.07.10
15:55
А как получить картинку из ячейки экселя через Ole?
11 Лефмихалыч
 
28.07.10
16:05
картинки лежат в коллекции Shapes объектов Worksheet
12 Лефмихалыч
 
28.07.10
16:11
а вот какой-то лютый велосипед на тему того, как вытряхнуть картинку из экселя на винт:
http://xlvba.3.forumer.com/index.php?showtopic=207
13 Лефмихалыч
 
28.07.10
16:20
кстати, то ли голова моя не туда вставлена, то ли что, но я в экселе родных средств для экспорта вставленной картинки не нашел...
14 tashi_ork
 
28.07.10
16:20
Можетвсе-таки есть какой-то беспроблемный способ получить соответвие элемента коллекции картинок табличного документа и ячейки?
А то городить не хочется.
15 tashi_ork
 
28.07.10
16:22
(13) Угу,я тоже. Табличный документ без проблем грузится, вместе с картинками, теперь бы еще к ним доступ получить.
16 Лефмихалыч
 
28.07.10
16:34
(14) нет способа для ТаблоичногоДокумента. Теперь я даже сомневаюсь в существовании способа для экселя...
17 Лефмихалыч
 
28.07.10
16:35
+(16) а у поставщика нет сайта с каталогом в гипертексте? ИМХО, может оказаться проще с сайта содрать это зал**пидрень...
18 tashi_ork
 
28.07.10
16:39
К сожалению, поставщик предоставил только прайс в виде экселевского файла и *.xml
файл в структуре которого я не смог разобраться(размер файла - 150 мб, распарсить не удается, вырезать кусок не удается, проанадизировать сторонними парсерами *.xml не удается)...
Куда ни кинь,всюду клин.
19 Mitriy
 
28.07.10
16:47
(18) можно попытать получать область табдока и проверять ее на сущесвование в ней рисунка... только, если хотя бы одна граница рисунка будет выходить за пределы полученной области, то коллекция Рисунки этой области будет пустой...
20 tashi_ork
 
28.07.10
16:56
(19)А можно пример?
21 nbIx
 
28.07.10
17:11
(0) Может я чего то не понимаю, но
Пробежаться по табличному документу.

Методом ПолучитьОбласть получить область. У нее есть свойство рисунки, которая содержит рисунок.
22 Лефмихалыч
 
28.07.10
17:18
(21) мля... и то верно, нельзя верить СП... Рисунки есть не только у табличногодокмента, но и области ячеек...
23 Mitriy
 
28.07.10
17:19
(22) гонишь... только у табдока...
24 Mitriy
 
28.07.10
17:21
(23)+ Область() <> ПолучитьОбласть()
25 nbIx
 
28.07.10
17:21
(23) ну так ПолучитьОбласть и вернет ТабличныйДокумент
26 nbIx
 
28.07.10
17:22
А что мешает использовать не Область() а ПолучитьОбласть()
27 Лефмихалыч
 
28.07.10
17:22
(23) http://screencast.com/t/MGUwMTRiODEt
может и гоню, но вот такая обработка почему-то сообщает "2"...
28 Mitriy
 
28.07.10
17:22
(26) см (19)
29 Лефмихалыч
 
28.07.10
17:23
ну, точно, нормально всё с СП - это ж табдок!
30 Mitriy
 
28.07.10
17:23
(29) угу ))
31 nbIx
 
28.07.10
17:27
(28) так с чего ты взял, что граница выходит за пределы области?
32 Лефмихалыч
 
28.07.10
17:28
(31) имеется в виду, что "если вдруг с адресом не угадаешь"
33 nbIx
 
28.07.10
17:32
(32) Ну это понятно. Кстати, а если просто ко всему табдок обратиться как .рисунки

они наверняка будут по-порядку...
34 tashi_ork
 
28.07.10
17:33
Аллилуйя, братцы, вроде понял!
Всем спасибо за помощь, щас накатаю код и сюда сброшу, чтобы другим было понятнее.
35 Mitriy
 
28.07.10
17:34
Если ты получишь область (которая типа табдок), а рисунок вроде ячейки этого табдока накрывает, но чуть-чуть не помещается, то этот рисунок в этом полученном табдоке (вроде области) ты не увидишь...
36 tashi_ork
 
28.07.10
17:35
(35) Приму во внимание. Но так вроде прайс ровненько сделан, все картинки вмещаются в ячейки.
37 nbIx
 
28.07.10
17:36
Во. Токо щас посмотрел, если обратиться как табДок.Рисунки он имена рисунков по порядку присваивает как D1, D2...DN
38 nbIx
 
28.07.10
17:36
(37) т.е. бежишь по ячейкам и обращаешься последовательно к следующему рисунку.
39 Mitriy
 
28.07.10
17:37
(38) я так понял, автору контекст нужен, то бишь, грубо говоря, номенклатура, напротив которой этот рисунок находится...
40 Mitriy
 
28.07.10
17:38
(39)* а, ну да, я просто неправильно прочитал...
41 nbIx
 
28.07.10
17:41
Короче вопрос закрыт. Только не понятно как автор их экселя картинки в mxl перевел.
вручную что ли?
42 tashi_ork
 
28.07.10
18:57
С помощью Йокселя произвел конвертацию.
43 tashi_ork
 
29.07.10
11:05
//Объект  - новый элемент справочника номенклатура конфигурации УТ
   ТабличныйДокумент = ЭлементыФормы.ТабличныйДокумент;
   
   Для СчетчикСтрок = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл
       ОбластьИзображение = ТабличныйДокумент.ПолучитьОбласть(СчетчикСтрок,2);//Изображения хранятся во второй колонке
       Попытка//в ячейке может и не быть изображения
           Если ТипЗнч(ОбластьИзображение.Рисунки[0]) = Тип("РисунокТабличногоДокумента") Тогда
               //Тут здоровенный костыль, но не было времени разбираться
               ОбластьИзображение.Рисунки[0].Картинка.Записать(КаталогВременныхФайлов()+"tempimg.jpg");
               ТМПКартинка = Новый Картинка(КаталогВременныхФайлов()+"tempimg.jpg");
               ХранилищеКартинки = Новый ХранилищеЗначения(ТМПКартинка);
               УдалитьФайлы(КаталогВременныхФайлов()+"tempimg.jpg");
               //Конец КОСТЫЛЯ
               ОбъектКартинка = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
               ОбъектКартинка.Объект = Объект.Ссылка;
               ОбъектКартинка.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
               ОбъектКартинка.Наименование = Объект.Наименование;
               ОбъектКартинка.Хранилище = ХранилищеКартинки;
               ОбъектКартинка.Записать();
               Объект.ОсновноеИзображение=ОбъектКартинка.Ссылка;
               Объект.Записать();
           КонецЕсли;
       Исключение
       КонецПопытки;
   КонецЦикла;