Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как программно разгруппировать картинки в табличном документе?

Как программно разгруппировать картинки в табличном документе?
Я
   Neznayu
 
04.02.20 - 19:58
Как программно разгруппировать картинки в табличном документе?
http://prntscr.com/qxhy10
   Neznayu
 
1 - 04.02.20 - 19:59
нжно грузить прайс.. а там картинки погруппирование( неужели нект средства программного?
   Neznayu
 
2 - 04.02.20 - 20:07
нашол мою проблему
ктото пытался 8 лет назад... но ничего не изменилось?
v8: Группировка рисунков в табличном документе
   МихаилМ
 
3 - 05.02.20 - 00:30
(2) изменилось. на ис есть статья про разгруппировки через сериализацию. к тому же 1с8 научилась работать с двоичными данными в памяти.
   Neznayu
 
4 - 05.02.20 - 11:48
(3) а поподробнее
читаю я так

            ТабДок = Новый ТабличныйДокумент;
        ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);    
        //

        
        ТабДок.Показать();
        
        ОбластьФайла = ТабДок.ПолучитьОбласть(ИмяЛиста);
        КолВоСтрокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоВертикали();
        КолВоКолонокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоГоризонтали();

        ТаблицаЗнач.колонки.Добавить("Картинка");

        ОбластьФайла.показать();
        
        НачалоОбласти = "";
        КартинкиСоотв = новый Соответствие;
        ВсегоКартинок =0;
        БитыхКартинок = 0;
        Для НомерСтроки = НачСтрока По КолВоСтрокФайла Цикл
            НомерСтроки_Стр = Формат(НомерСтроки, "ЧН=0; ЧГ=0");
            нКолонка = Формат(КолонкаИзображениеВExcel, "ЧГ=0") ;
            //АдресОбластиРисунка = "R" + НомерСтроки_Стр + "C"+Формат(КолонкаИзображениеВExcel, "ЧГ=0") ; // Картинку ищем в первых 3-х колонках

            ТекОбласть = "R"+НомерСтроки_Стр+"C"+нКолонка;
                    Область = ОбластьФайла.ПолучитьОбласть(ТекОбласть);
            //ТекущаяОбласть = Область.ТекущаяОбласть;

            //Попытка

            //    ЗначениеЯчейки = ТекущаяОбласть.Значение;        // Число, Дата.

            //Исключение

            //    ЗначениеЯчейки = СокрЛП(ТекущаяОбласть.Текст);    // Строка, Булево. (Булево как строка "ИСТИНА"/"ЛОЖЬ")

            //    Если ЗначениеЗаполнено(ЗначениеЯчейки) Тогда

            //        ЗначениеЯчейки = ПреобразоватьПростоеЗначениеИзСтрокиВТипизованноеЗначение1С(ЗначениеЯчейки);

            //        Если ТипЗнч(ЗначениеЯчейки) = Тип("Строка") Тогда

            //            ЗначениеЯчейки = СокрЛП(ЗначениеЯчейки);

            //        КонецЕсли;

            //    Иначе

            //        ЗначениеЯчейки = Неопределено;

            Если Область.Рисунки.Количество() > 0 Тогда    // Изображение.

                стрВТАб = ТаблицаЗнач[НомерСтроки_Стр-НачСтрока];
                стрВТАб.Картинка = ПолучитьЗначениеЯчейкиОбластиТабличногоДокументаСКартинками(Область, НомерСтроки_Стр, нКолонка, "1");
                ВсегоКартинок = ВсегоКартинок +1;
            ИначеЕсли НачалоОбласти ="" тогда
                НачалоОбласти =    "R"+НомерСтроки_Стр+"C"+нКолонка;
            Иначе
                Область = ОбластьФайла.ПолучитьОбласть(НачалоОбласти+":"+ТекОбласть);
                Если Область.Рисунки.Количество() > 0 Тогда    // Изображение.

                    мКарт = ПолучитьЗначениеЯчейкиОбластиТабличногоДокументаСКартинками(Область, НомерСтроки_Стр, нКолонка, "1");
                    Если мКарт<> "" тогда
                        НачСтрокаНомер = число(Сред(НачалоОбласти,2,СтрДлина(НачалоОбласти)-3));
                        Для ккк = НачСтрокаНомер По НомерСтроки Цикл
                        
                            стрВТАб = ТаблицаЗнач[НомерСтроки-ккк];
                            стрВТАб.Картинка = мКарт;
                            
                        КонецЦикла; 
                        ВсегоКартинок = ВсегоКартинок +1;
                    иначе
                        БитыхКартинок = БитыхКартинок +1;
                    КонецЕсли;
                    НачалоОбласти =    "";
                КонецЕсли;
            КонецЕсли;


Функция ПолучитьЗначениеЯчейкиОбластиТабличногоДокументаСКартинками(Знач Область, Знач нСтрока, Знач нКолонка, Знач ПравилоИмяФайлаКартинки = "УИД")
    Перем Рисунок, ит, ИмяФайлаРисунка;
    Перем ЗначениеЯчейки;
    
    ит = 0;
    ЗначениеЯчейки = "";
    Для Каждого Рисунок ИЗ Область.Рисунки Цикл
        ит = ит + 1;
        Если ПравилоИмяФайлаКартинки = "УИД" Тогда
            ИмяФайлаРисунка = КаталогВременныхФайлов() + Новый УникальныйИдентификатор() + ".jpg";
        Иначе
            ИмяФайлаРисунка = КаталогВременныхФайлов() + "с" + нСтрока +".png";//+ "К" + нКолонка + ".jpg";

        КонецЕсли;
        Попытка
            //Рисунок.Картинка.Записать(ИмяФайлаРисунка);

            Картинка1 = Рисунок.Картинка;
            Картинка1.Записать(ИмяФайлаРисунка);

            ЗначениеЯчейки = ЗначениеЯчейки + ИмяФайлаРисунка + ?(ит < Область.Рисунки.Количество(), Символы.ПС, "");
            
        Исключение
            //сообщить(ОписаниеОшибки());// Поле картинки недоступно для чтения.

        КонецПопытки;
    КонецЦикла;
    
    Возврат ЗначениеЯчейки;
    
КонецФункции

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.