| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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); Все отлично работает, даже если реальное кол-во изображений меньше, чем записано в развизите КолВо Но все равно не отображается пред просмотр сформированного отчета. Что с ним делать? |