Имя: Пароль:
1C
1С v8
excel
0 Renat11111
 
18.10.11
21:27
Для Каждого MyPic Из Лист.Pictures Цикл
       MyPic.Select();
       
     

КонецЦикла;

Каким методом могу сохранить в картинку в указанном каталоге?
1 wade25
 
18.10.11
21:33
Не помешала бы тебе обработка та =)
2 BuHu
 
18.10.11
21:36
(0)а зачем ты ту обработку просил?там же описано как сохранить картинки из файла эксль , или тебе программно надо?
3 Renat11111
 
18.10.11
21:37
(2) только программно
4 Renat11111
 
18.10.11
21:38
я для себя уже решил... сохранить нужно в какой то каталог потом по имени искать и создавать Новый Картинка(МойКаталог+МоеИмя). Просто не могу картинку сохранить...
5 BuHu
 
18.10.11
21:39
(3) есть у меня кусок кода , сейчас кину , только там врятли оптимальный вариант , но работает.
6 Renat11111
 
18.10.11
21:39
(5) да мне щас не до оптимальности, если честно
7 BuHu
 
18.10.11
21:39
MyPath = ИмяФайлаЕксель;//ПутьКПрайсу - на форме.
myOlApp = Новый COMОбъект ("Excel.Application");
MyWo= myOlApp.Workbooks.Open(MyPath, , True);
MySheet=MyWo.Worksheets(1);//Предполагаем, что картинки на первом листе.
Сч = 1;
Для Каждого MyPic Из MySheet.Pictures Цикл
   str = MySheet.Name;
   MyPic.Select();
   lH = myOlApp.Selection.Height;
   lW = myOlApp.Selection.Width;
   Если lH=0 Тогда
       Продолжить;
   КонецЕсли;
   
   myOlApp.Selection.Copy();
   Chart = myOlApp.Charts.Add();//Добавлем диаграмму.
   myOlApp.ActiveChart.Location(2,str);//Помещаем диаграмму на наш лист. 2 - это xlLocationAsObject.
   strShNa = myOlApp.ActiveChart.Name;
   strShNa = СокрЛП(СтрЗаменить(strShNa, str, ""));
   myOlApp.ActiveSheet.Shapes(strShNa).Height = lH * 1.001;
   myOlApp.ActiveSheet.Shapes(strShNa).Width = lW * 1.001;
   //myOlApp.DoEvents();
   myOlApp.ActiveChart.Paste();//Пуляем картинку в диаграмму.
   myOlApp.ActiveChart.Export(ПутьККартинкам+"Pic"+Сч+".jpg", "jpg");//Созраняем диаграмму как картинку jpeg. ПутьККартинкам - на форме.
   myOlApp.ActiveSheet.Shapes(strShNa).Delete();//Удаляем диаграмму
КонецЦикла;
MyWo.Close(False);
8 Renat11111
 
18.10.11
21:59
(7) Код без ошибок проходит, но ни фига не сохраняет
9 Renat11111
 
18.10.11
22:02
вру получилось... спасибо
10 BuHu
 
18.10.11
22:04
(9) глянул твои предыдущие ветки , вопрос :
КодРисунка =  MyPic.ShapeRange.AlternativeText;
что там за код рисунка ? от куда он берется?
11 Renat11111
 
19.10.11
10:03
(10) Туда завод производитель пихает код товара. тоесть я беру оттуда код и ищу в 1с товар по нему.
12 BuHu
 
19.10.11
11:52
(11) как они его туда пихают , программно? как интерактивно в экселе засунуть нужное значение в AlternativeText ?
13 Renat11111
 
19.10.11
13:03
(12) видимо программно.... у меня excel файл с 500 000 наименований. врядли кто то вручную такое будет делать. Как интерактивно не знаю
14 Renat11111
 
19.10.11
13:10
кстати по поводу темы.... выгрузить во временный каталог и загрузить картинку в 1с получилось, но картинка какая то стремная, очень плохое качество. С этим что то можно придумать?

   ТекКод = MyPic.ShapeRange.AlternativeText;
       ИмяФайлаКартинки = "C:\Users\Renat\Desktop\Заеб\"+ТекКод+".jpg";
       myOlApp.ActiveChart.Export(ИмяФайлаКартинки, "jpg");//Созраняем диаграмму как картинку jpeg. ПутьККартинкам - на форме.
       

       СтруктураЗаписи.Очистить();    
       
       СтруктураЗаписи.Вставить("Картинка"    , ИмяФайлаКартинки);
       СтруктураЗаписи.Вставить("Код"        , ТекКод );
       ДобавитьОбновитьСправочникНоменклатура(СтруктураЗаписи);

Функция ДобавитьОбновитьСправочникНоменклатура (СтруктураЗаписи)
   
   КодПоиска =  Лев(Строка(СокрЛП(СтруктураЗаписи.Код)),8);
   СсылкаНаОбъект = Справочники.Номенклатура.НайтиПоКоду(КодПоиска);
   Если НЕ СсылкаНаОбъект.Пустая() Тогда
       
       МенеджерЗаписи = СсылкаНаОбъект.ПолучитьОбъект();
       
   Иначе
       Сообщить("Не найден элемент"": " + " " + СтруктураЗаписи.Наименование);
   КонецЕсли;
   
   
   НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
   НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
   НовыйОбъект.Хранилище = Новый ХранилищеЗначения(Новый Картинка(СтруктураЗаписи.Картинка), Новый СжатиеДанных);
   НовыйОбъект.Объект = МенеджерЗаписи.Ссылка;
   НовыйОбъект.Записать();

   МенеджерЗаписи.ОсновноеИзображение = НовыйОбъект.Ссылка;
   МенеджерЗаписи.Записать();
   
           
КонецФункции
15 BuHu
 
19.10.11
13:47
(14) может при копировании и происходит сжатие , но я думаю, что просто картинки изначально такого качества , т.к. у меня бывало после загрузки картинок в 1с некоторые плохого качества некоторые хорошего.
16 Renat11111
 
19.10.11
14:05
(15) изначально хорошего качества.... сохраняю excel как веб документ картинка весит 12,5 кб, сохраняю программно всего 1,5.
17 Renat11111
 
19.10.11
14:05
может знаешь как побороть?
18 Renat11111
 
19.10.11
14:08
(15) пароль какой для файла, который ты прислал?
19 Renat11111
 
19.10.11
14:28
ап
20 Renat11111
 
19.10.11
15:01
ау хелп
21 BuHu
 
20.10.11
11:26
(18) ни че не присылал