[РЕШЕНО] Универсальный отчет с картинками

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем IceBeerG, 4 июн 2015.

  1. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Добрый день.
    Конфигурация УТ 10.3
    Нужно в универсальный отчет, например, ведомость товаров на складах добавить картинку номенклатуры. Основная сложность заключается в том, что картинки лежат на ftp ресурсе.
    Что посоветуете?
  2. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.748
    Симпатии:
    509
    Баллы:
    204
    Либо грузить картинки в базу, либо изворачиваться и подгружать картинки с ФТП во временный каталог, и у же при выводе номенклатуры подгружать из каталога.
  3. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Грузить в базу не вариант, а про временный каталог можно поподробнее? Что это такое и как с этим работать?
  4. Thelearning
    Offline

    Thelearning Профессионал в 1С Команда форума

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Да как с обычным каталогом ))) С фтп затягиваете туда файлы, а после выполнения отчета удаляете.
  5. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.748
    Симпатии:
    509
    Баллы:
    204
    Только вот вопрос, и самый главный. Как файл картинки связан с номенклатурой ?
  6. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    У номенклатуры есть реквизит строкового типа, он полностью совпадает с наименованием файла картинки на ftp
  7. alexburn
    Online

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.748
    Симпатии:
    509
    Баллы:
    204
    Вот смотрите, по ФТП будет однозначно долго работать, причем нужен стабильный и широкий канал. При локальной загрузке, будет работать быстрее, но нужно что-то делать с путями. На вашем месте, я бы использовал стороннюю прогу, которая читает экселевский файл с номенклатурой и вставляет в него картинки. Экселевский файл формирует 1С с указанием путей до FTP.
  8. TopicStarter Overlay
    IceBeerG
    Offline

    IceBeerG Опытный в 1С

    Регистрация:
    15 дек 2012
    Сообщения:
    193
    Симпатии:
    11
    Баллы:
    29
    Всем спасибо, сделал на построителе, может кому пригодится:
    Код:
    ПостроительОтчета = ЭтотОбъект.Построитель;
        Построитель.Текст = ТекстПостроителяОтчета();
        ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;
       
        ТабДок.Очистить();
       
        Макет = ЭтотОбъект.ПолучитьМакет("Макет");
       
        ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
        ТабДок.Вывести(ОбластьШапка);
        //ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
       
        Макет = ЭтотОбъект.ПолучитьМакет("Макет"); 
        ПостроительОтчета.Макет = Неопределено;
        ПостроительОтчета.Макет = Макет;
       
        //Подключение к ftp                                                           
        АдресСайта = "0.0.0.0";
        Порт = 21;
        Логин = "login";
        Пароль = "pass";
        ИмяКаталога = "namedir";
        FTPСоединение = Новый FTPСоединение(АдресСайта, Порт, Логин, Пароль,,Ложь);
        FTPСоединение.УстановитьТекущийКаталог(ИмяКаталога);
       
        Результат = Построитель.Результат;
        Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
       
        ТабДок.НачатьАвтогруппировкуСтрок();
       
        Пока Выборка.Следующий() Цикл
           
            Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
                Область = Макет.ПолучитьОбласть("Группа");
            Иначе
                Область = Макет.ПолучитьОбласть("Строка");
            КонецЕсли;
           
            //Область.Параметры.Заполнить(Выборка);
            //ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
            сч = 0;
            строчка = "";
            Пока сч <> Выборка.Уровень()*4 Цикл
                строчка = строчка + " ";
                сч = сч+1;
            КонецЦикла;
           
            Область.Параметры.Номенклатура = строчка + Выборка.Номенклатура;
            Область.Параметры.Остаток = Выборка.Остаток;
           
            КодН = СокрЛп(Выборка.Номенклатура.Код);
            Если FTPСоединение.НайтиФайлы(КодН +".jpg").Количество() <> 0 тогда
                ВременныйФайл = ПолучитьИмяВременногоФайла("jpg");
                FTPСоединение.Получить(КодН +".jpg", ВременныйФайл);
                Область.Рисунки.D1.Картинка = Новый Картинка(ВременныйФайл);           
            КонецЕсли;
           
            ТабДок.Вывести(Область, Выборка.Уровень());
           
            Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
                ЗаполнениеГруппировок(Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, Выборка.Группировка()), Макет, ТабДок, FTPСоединение);
            КонецЕсли;   
            //ТабДок.Вывести(ОбластьСтрока);
        КонецЦикла;   
           
        ТабДок.ЗакончитьАвтогруппировкуСтрок();
       
        //Построитель.Выполнить();
        //ПостроительОтчета.ВыводитьДетальныеЗаписи = Истина;
        //
        //ПостроительОтчета.МакетЗаголовкаОтчета = ОбластьШапка;
        //ПостроительОтчета.МакетДетальныхЗаписей = ОбластьСтрока;
        ПостроительОтчета.Вывести(ТабДок);
    
    alexburn нравится это.

Поделиться этой страницей