Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Отчет с разным кол-вом картинок


Автор: ZneP 26.1.2009, 11:06
Добрый день!


Поставили такую задачу.

Есть справочник договоров. Для каждого договора пользователь может загрузить сканы самого договора. Кол-во страниц договора (кол-во сканов/изображений) разное.

Я это сделал и все изображения хранятся в своей папке вместе с базой.


Нужно сделать еще возможность печати этих сканов, чтобы формировался отчет, а в нем каждая страница - это скан страницы договора.
Например договор состоит из 3-х страниц. Пользователь загрузил изображение каждой страницы и в дальнейшем, если он захочет распечатать его, должен формироваться отчет, где должны отображаться эти изображения.


Я даже представить не могу как это можно сделать.
Если кто знает как это сделать или если есть другие варианты реализовать это, подскажите пожалуйста.

Автор: ZneP 26.1.2009, 11:48
Вроде как немножко разобрался.

Сделал так:

В отчете создал секцию "Картинка" где разместил объект Рисунок

при нажатии кнопки формирования отчета отрабатывает след. функция:

Функция ПечатьСкан()
    Д = СоздатьОбъект("Справочник.Договора");
    Если Д.НайтиЭлемент(ТекущийЭлемент())=1 Тогда
        Если ФС.СуществуетФайл(КаталогИБ()+"Scan\"+Д.Код+".scn")=1 Тогда
            Таб = СоздатьОбъект("Таблица");
            Таб.ИсходнаяТаблица("ПечатьСкан"); 
            Таб.ВывестиСекцию("Картинка"); 
            Флаг = 2;                                                      //Второе изображение
            Таб.ВывестиСекцию("Картинка");
            Таб.Опции(1,1,0,0);          
            Таб.ПараметрыСтраницы(,,,0,0,0,0,0,0,1);
            Таб.ТолькоПросмотр(1);
            Таб.Показать("Договор");
        КонецЕсли;
    КонецЕсли;
КонецФункции


Когда отображается отчет, то запускается еще одна функция для вывода изображений:

Процедура ЗагрузитьКартинку(Картинка)
    Если Флаг = 2 Тогда
        Картинка.Загрузить("D:\2.jpg");           //Картинка - идентификатор объекта Рисунок в отчете
    Иначе
        Картинка.Загрузить("D:\1.jpg");
    КонецЕсли;
    Картинка.РежимРисования(2);
КонецПроцедуры


Но это в случае 2 картинок. А точное кол-во картинок по каждому договору не известно


И еще перестал работать предварительный просмотр отчета. Не открывается.

Автор: ZneP 26.1.2009, 17:41
Разобрался с этим вопросом


Алгоритм следующий:

Есть переменные

Перем Массив[20];  //В массиве будут хранится путь к изображениям
Перем ТекЭл;     //Текущий элемент массива и картинки. Присвоил значение 1 при открытии формы.


В обработке кнопки "На печать" я прохожу циклом по кол-ву изображений данного договора (создал отдельный реквизит КолВо и вношу туда число загруженных сканов) и проверяю существования файла (имя файла выглядит как КодДоговора_НомерСкана.jpg). Если файл существует, то записываю имя файла в массив и вывожу секцию "Картинка".

В итоге выходит, что на форме у меня нужное кол-во секций, в каждой из которых есть объект Картинка, а в свойствах этого объекта прописал следующее:

ЗагрузитьКартинку(Таб.ТекущийЭлемент, ТекЭл);
ТекЭл = ТекЭл + 1;


а в модуле в процедуре ЗагрузитьКартинку(Картинка, Эл) следующий код:
Картинка.Загрузить(Массив[Эл]);
Картинка.РежимРисования(2);



Все отлично работает, даже если реальное кол-во изображений меньше, чем записано в развизите КолВо


Но все равно не отображается пред просмотр сформированного отчета. Что с ним делать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)