Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 05:54

Картинка в макет печати

Автор Zverff, 01 мар 2012, 22:25

0 Пользователей и 3 гостей просматривают эту тему.

Zverff

Здравствуйте! Вопрос такой) Как вставить картинку в макет печати. Как сделать запрос из рег. сведений, Картинки прикрепляется в документе Прием Стоматолога, что бы с каждого прием он собрал картинки по пациенту и вставил в макет печати.
Конфа 1с рарус Амбулатория

E_x

Если картинка хранится в каком-то реквизите(хранилище данных), то ее от туда можно стянуть спокойно, и добавить  в макет.. предварительно в макете надо будет добавить поле типа картинки.
Вот примерный код(выводит 4 картинки на лист, каждая занимает 1/4 листа само собой,писал для УТ 10.2):
п=1; //переменная для подсчета картинок на листе
к=1;
Для каждого изоб Из скан Цикл  // скан - результат запроса, в котором я отбирал картинку и другую инфу(картинка хранилась в хранилище данных)
ОбластьСкана.ПолеСверху = 5; //установка полей
ОбластьСкана.ПолеСлева = 5;
ОбластьСкана.ПолеСнизу = 5;
ОбластьСкана.ПолеСправа = 5; 
Попытка
    Путь = КаталогВременныхФайлов()+ "\1С_Картинка_"+Формат(ТекущаяДата(),"ДФ=yyyyMMddЧЧммсс")+".bmp";  //так будет выглядеть имя и место хранения нашей картинки
    КартинкаВПамяти = изоб.Карт.Получить(); //тащим картинку из запроса
    КартинкаВПамяти.Записать(Путь); // записываем картинку в каталог временных файлов
Если п%2=0 тогда //если место свободно, то присоединяем картинку сбоку(2 картинки на строчке получается)
      ОбластьСкана.Рисунки.Изображение.Картинка = Новый Картинка(Путь);
   ТабДокумент.Присоединить(ОбластьСкана);
   п=п+1;                                 
иначе //иначе вставляем картинку ниже
   ОбластьСкана.Рисунки.Изображение.Картинка = Новый Картинка(Путь);
   ТабДокумент.Вывести(ОбластьСкана);
   п=п+1;
КонецЕсли;
   Если к%4=0 Тогда //если все 4 картинки есть, то делаем разрыв страницы, чтобы другие картинки не "съехали"
   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();   
   Иначе
   КонецЕсли;
    Сообщить(Путь); // это для себя делал, чтобы узнать, что работает
Исключение
    ОбластьСкана.Рисунки.Изображение.Картинка = Новый Картинка; //если картинки в хранилище нет
КонецПопытки;

Zverff

А через конструктор запроса можно?

Zverff

 ОбластьМакета = Макет.ПолучитьОбласть("Страница6");

   Запрос = Новый Запрос("ВЫБРАТЬ
                         |   КартинкиИФайлы.ИмяФайла,
                         |   КартинкиИФайлы.Картинка,
                         |   ПриемСтоматолога.Ссылка,
                         |   ПриемСтоматолога.Пациент
                         |ИЗ
                         |   Документ.ПриемСтоматолога КАК ПриемСтоматолога
                         |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КартинкиИФайлы КАК КартинкиИФайлы
                         |      ПО КартинкиИФайлы.Объект = ПриемСтоматолога.Ссылка");
   Запрос.УстановитьПараметр("Картинка", СсылкаНаОбъект.Ссылка);   
   //   
   //Выборка = Запрос.Выполнить().Выбрать();
   //
   //Если Выборка.Следующий() Тогда
   //   ОбластьМакета.Параметры.Картинка = Выборка.Картинка;
   //КонецЕсли;
   ТабДокумент.Вывести(ОбластьМакета);
   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

Zverff


E_x

Если я не ошибаюсь, вы не правильно в область макета картинку передаете.
ОбластьМакета.Параметры.Картинка = Выборка.Картинка; - это как будто обычный параметр, а должно выглядеть так:

ОбластьМакета.Рисунки.Изображение.Картинка = Выборка.Картинка; где Рисунки - область рисунка на макете, Изображение - имя этой области(задается в свойствах), Картинка - свойство, в котором хранится само изображение.

Хотя если следовать примеру во втором сообщении, то должно выглядеть примерно так:

ОбластьМакета = Макет.ПолучитьОбласть("Страница6");

   Запрос = Новый Запрос("ВЫБРАТЬ
                         |   КартинкиИФайлы.ИмяФайла,
                         |   КартинкиИФайлы.Картинка,
                         |   ПриемСтоматолога.Ссылка,
                         |   ПриемСтоматолога.Пациент
                         |ИЗ
                         |   Документ.ПриемСтоматолога КАК ПриемСтоматолога
                         |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КартинкиИФайлы КАК КартинкиИФайлы
                         |      ПО КартинкиИФайлы.Объект = ПриемСтоматолога.Ссылка");
   Запрос.УстановитьПараметр("Картинка", СсылкаНаОбъект.Ссылка);   
     
   Выборка = Запрос.Выполнить().Выгрузить();
   
   Для каждого изоб Из Выборка Цикл  // скан - результат запроса, в котором я отбирал картинку и другую инфу(картинка хранилась в хранилище данных)
ОбластьМакета.ПолеСверху = 5; //установка полей
ОбластьМакета.ПолеСлева = 5;
ОбластьМакета.ПолеСнизу = 5;
ОбластьМакета.ПолеСправа = 5; 
Попытка
    Путь = КаталогВременныхФайлов()+ "\1С_Картинка_"+Формат(ТекущаяДата(),"ДФ=yyyyMMddЧЧммсс")+".bmp";  //так будет выглядеть имя и место хранения нашей картинки
    КартинкаВПамяти = изоб.ИмяФайла.Получить(); //тащим картинку из запроса
    КартинкаВПамяти.Записать(Путь); // записываем картинку в каталог временных файлов
   ОбластьМакета.Рисунки.Изображение.Картинка = Новый Картинка(Путь);
    ТабДокумент.Вывести(ОбластьМакета);
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();   
Исключение
    ОбластьМакета.Рисунки.Изображение.Картинка = Новый Картинка; //если картинки в хранилище нет
КонецПопытки;

Думаю как-то так наверно должно быть. Еще раз повторюсь, что в макете должен быть элемент РИСУНОК!, без него картинку не добавить.

Zverff

не выходить картинки( Как с вами связаться можно?

E_x

Со мной нет смысла связываться, ведь я ученик) Полгода только работаю с 1с, но что-то уже делал(все что выкладывал - делал сам, кстати вот файлик с моим отчетом для Торговли, который вытаскивает картинки)

Zverff

Спс) Такая же история) 5 мес. токо работаю))

Zverff


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск