|   |   | 
| 
 | Загрузка картинок с эксель листа | ☑ | ||
|---|---|---|---|---|
| 0
    
        falselight 11.03.19✎ 13:48 | 
        Есть эксель листы, в которых идут прайс лист с картинками.
 Есть обработка которая грузит эти прайс листы на форму обработки. Как быть с картинками, если их нужно грузить с эксель листов? Как их загружать на форму обработки, а потом в 1с. Можете подсказать по примеру? | |||
| 1
    
        Лодырь 11.03.19✎ 13:54 | 
        Мы должны телепатически догадаться как устроена загрузка?
 Хоть бы скриншот с описанием кинул. | |||
| 2
    
        mikecool 11.03.19✎ 14:04 | 
        картинку - из листа в файл(а может - в двоичные данные)
 полученный файл(ДД) - пихать в соответствующий ресурс | |||
| 3
    
        falselight 11.03.19✎ 14:14 | 
        (1) Да не суть как устроена загрузка. Их же есть много разных.
 Грузят в табличный документ на форме, в таблицу значений на форме. Тут интересует как грузить картинки? Сейчас например не грузят. Там просто пустое поле. Как что бы там появлялись картинки. Хочется понять. Код где либо посмотреть или пример какой. | |||
| 4
    
        sqr4 11.03.19✎ 14:23 | 
        v8: Загрузка картинок из Экселя. Как?
 тут схожее обсуждение | |||
| 5
    
        sqr4 11.03.19✎ 14:24 | 
        С блэкджеком и примерами кода     | |||
| 6
    
        falselight 11.03.19✎ 15:10 | 
        (4) Что то не сильно то обсуждаемо. Поверхностно как то!!!!!     | |||
| 7
    
        sqr4 11.03.19✎ 15:11 | 
        (6) Но и по ним можно понять, что чуда не будет и одной строчкой такое не делается.     | |||
| 8
    
        falselight 11.03.19✎ 15:19 | 
        (7) Охото понимать, как можно обработать изображение в Экселе, и загрузить его в номенклатуру.     | |||
| 9
    
        Мыш 11.03.19✎ 15:21 | 
        Если не самый старый эксель, то распаковать файл, распарсить контент, вытащить картинки. Получится нативный 1С )     | |||
| 10
    
        Fish гуру 11.03.19✎ 15:24 | 
        (6) Там же даже решение есть.     | |||
| 11
    
        falselight 11.03.19✎ 16:04 | 
        (10) с использованием каких то библиотек?     | |||
| 12
    
        Fish гуру 11.03.19✎ 16:08 | 
        (11) Не каких-то, а вполне определённой.     | |||
| 13
    
        falselight 11.03.19✎ 16:11 | 
        (12) Да и решение вот тут? http://catalog.mista.ru/public/16800/
 Надоело качать не понятно что. У меня эксель. Строки и картинки на каждой строке. Интересует как это загрузить на форму обработки а потом в номенклатуру. Растратил я все мани. Не на что качать это что бы посмотреть что там. | |||
| 14
    
        Fish гуру 11.03.19✎ 16:16 | 
        (13) "Растратил я все мани. Не на что качать это что бы посмотреть что там" - Там загрузка бесплатная вроде.     | |||
| 15
    
        falselight 11.03.19✎ 16:35 | 
        (14) Спасибо, понял, не обратил внимание. Скачал. Завтра буду смотреть.
 Пытаться понять как это может помочь при загрузке эксель листа, с картинками в строках. Как их можно переносить на форму обработки или номенклатуру. | |||
| 16
    
        АнализДанных 11.03.19✎ 16:41 | 
        (0) Все намного проще, чем советуют. Делается, без дополнительных компонент:
 Считываешь эксель, через метод табличного документа "ТабДок.Прочитать(ПутьКФайлуЭксель, СпособЧтенияЗначенийТабличногоДокумента.Значение)". Дальше для каждой строки получаешь область этой строки и перебираешь все картинки, которые в ней находятся (тебя интересует только одна картинка). Т.к. в эксель картинки не привязываются к ячейкам, а лежат сверху, то может получится, что картинка находится одновременно на двух ячейках, в этом случае система выберет ту картинку, которая большей частью лежит на нужной области (или как-то так...). Для НомерСтроки=1 По ТабДок.ВысотаТаблицы Цикл НомерСтроки_Стр = Формат(НомерСтроки,"ЧН=0; ЧГ=0"); АдресОбластиРисунка = "R"+НомерСтроки_Стр+"C1:R"+НомерСтроки_Стр+"C"+3; // Картинку ищем в первых 3-х колонках Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл НужныеДанныеКартинки = РисунокТД.Картинка; Прервать; КонецЦикла; КонецЦикла | |||
| 17
    
        falselight 11.03.19✎ 17:43 | 
        (16)  Спасибо буду пробовать.     | |||
| 18
    
        falselight 11.03.19✎ 18:02 | 
        (16) А куда это считывается?
 ТабДок.Прочитать(ПутьКФайлуЭксель, СпособЧтенияЗначенийТабличногоДокумента.Значение) | |||
| 19
    
        АнализДанных 11.03.19✎ 18:12 | 
        (18) В Табличный документ:
 ТабДок = Новый Табличный документ; ТабДок.Прочитать(ПутьКФайлуЭксель, СпособЧтенияЗначенийТабличногоДокумента.Значение); | |||
| 20
    
        Мимохожий Однако 11.03.19✎ 18:31 | 
        (0) Спроси у Маньяка     | |||
| 21
    
        falselight 12.03.19✎ 08:42 | 
        (19) Почему идет ошибка? Доступ к файлу не может быть получен, на Прочитать()?
 // ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ЭтотОбъект.ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); // Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл НомерСтроки_Стр = Формат(НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиРисунка = "R" + НомерСтроки_Стр + "C3:R" + НомерСтроки_Стр + "C" + 3;// Картинку ищем в первых 3-х колонках Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл НужныеДанныеКартинки = РисунокТД.Картинка; Прервать; КонецЦикла; // КонецЦикла | |||
| 22
    
        falselight 12.03.19✎ 08:44 | 
        (21) Хотя я понял почему. Я этот файл обрабатываю и гружу на форму обработки.
 А потом вставил этот блок, то есть получается сам файл этот и обрабатывается в данный момент. Как лучше тогда это обработку встроить в этот код? Процедура ВыборЛиста(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка) //Открываем необходимый лист Если Найти(СокрЛП(Строка(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы)), "xls") > 0 Тогда Предупреждение("Выберите конкретный лист для загрузки, а не сам файл!"); Возврат; КонецЕсли; Excel.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).select(); //Получим количество строк и колонок. //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel Версия = Лев(Excel.Version,Найти(Excel.Version,".") -1); Если Версия = "8" тогда ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count; ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13); Иначе ФайлСтрок = Excel.Cells(1,1).SpecialCells(11).Row; ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column; Конецесли; ЭлементыФормы.ДанныеЛиста.Колонки.Очистить(); ДанныеЛиста.Колонки.Очистить(); Колонка = ЭлементыФормы.ДанныеЛиста.Колонки.Добавить("НомерСтроки"); Колонка.Данные = "НомерСтроки"; ДанныеЛиста.Колонки.Добавить("НомерСтроки"); Колонка.ТекстШапки = "№ строки"; Для Счетчик = 1 По ФайлКолонок Цикл ДанныеЛиста.Колонки.Добавить("К"+Счетчик, Новый ОписаниеТипов("Строка")); Колонка = ЭлементыФормы.ДанныеЛиста.Колонки.Добавить("К" + Счетчик, Новый ОписаниеТипов("Строка")); Колонка.Данные = "К" + Счетчик; КонецЦикла; Для Счетчик = 1 По ФайлСтрок Цикл НоваяСтрока = ДанныеЛиста.Добавить(); КонецЦикла; Область = Excel.ActiveWorkbook.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).Range(Excel.ActiveWorkbook.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).Cells(1,1), Excel.ActiveWorkbook.Sheets(ЭлементыФормы.ДеревоЛистов.ТекущаяСтрока.Листы).Cells(ФайлСтрок,ФайлКолонок)); Данные = Область.Value.Выгрузить(); Для Счетчик = 1 По ФайлКолонок Цикл ДанныеЛиста.ЗагрузитьКолонку(Данные[Счетчик - 1], Счетчик); КонецЦикла; Для к = 1 по ФайлСтрок цикл ДанныеЛиста[к - 1].НомерСтроки = к; КонецЦикла; // ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ЭтотОбъект.ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); // Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл НомерСтроки_Стр = Формат(НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиРисунка = "R" + НомерСтроки_Стр + "C3:R" + НомерСтроки_Стр + "C" + 3;// Картинку ищем в первых 3-х колонках Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл НужныеДанныеКартинки = РисунокТД.Картинка; Прервать; КонецЦикла; // КонецЦикла КонецПроцедуры | |||
| 23
    
        falselight 12.03.19✎ 12:07 | 
        Не подскажете? Как тут применить 16? Картинки в листе в 3й ячейке.     | |||
| 24
    
        falselight 12.03.19✎ 12:10 | 
        Можно ли как то скопировать временно файл для обработки?     | |||
| 25
    
        ДенисЧ 12.03.19✎ 12:14 | 
        (24) Я не против, копируй. Кто может тебе запретить?     | |||
| 26
    
        falselight 12.03.19✎ 12:33 | 
        Лучше так.
 Excel.DisplayAlerts = False; Excel.Quit(); // ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ЭтотОбъект.ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); // Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл НомерСтроки_Стр = Формат(НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиРисунка = "R" + НомерСтроки_Стр + "C3:R" + НомерСтроки_Стр + "C" + 3;// Картинку ищем в первых 3-х колонках Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл НужныеДанныеКартинки = РисунокТД.Картинка; Прервать; КонецЦикла; // КонецЦикла Тут - НужныеДанныеКартинки - Картинка, как её в предприятии посомтреть что это она? | |||
| 27
    
        falselight 12.03.19✎ 12:48 | 
        Вывел на ТЗ на форме обработки картинку. А как мне её там отобразить??????
 http://joxi.ru/Vm6Zv3Xt4DYeGm КонецЦикла; // Excel.DisplayAlerts = False; Excel.Quit(); // ТабДок = Новый ТабличныйДокумент; ТабДок.Прочитать(ЭтотОбъект.ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение); // Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл НомерСтроки_Стр = Формат(НомерСтроки, "ЧН=0; ЧГ=0"); АдресОбластиРисунка = "R" + НомерСтроки_Стр + "C3:R" + НомерСтроки_Стр + "C" + 3;// Картинку ищем в первых 3-х колонках Для Каждого РисунокТД ИЗ ТабДок.ПолучитьОбласть(АдресОбластиРисунка).Рисунки Цикл НужныеДанныеКартинки = РисунокТД.Картинка; // ДанныеЛиста[НомерСтроки-1][3] = НужныеДанныеКартинки; // Прервать; КонецЦикла; // КонецЦикла КонецПроцедуры | |||
| 28
    
        falselight 13.03.19✎ 08:49 | 
        (19)  А я вот прочел этот документ эксель, он же получается открыт в памяти!!!! А как его закрыть?
 Подскажите пожалуйста!!! Если он открыт табличным документом? | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |