Версия для печати темы (https://pro1c.org.ua/index.php?s=029be4812214da86f70823e06cc67fb1&showtopic=36113)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ ЗУП логотип в печатной форме документа

Автор: Altem 23.03.17, 10:40

Доброго дня!
Есть несколько организаций.
В печатной форме необходимо вывести логотип определенной организации.
Картинка находится в хранилище дополнительной информации.



Прикреплять картинку в макет документа присваивая область не подходит.

Автор: candrey 23.03.17, 10:45

Добрый день.

Исправляйте печатную форму. С анализом какая фирма с соответствующем отображением этого логотипа и всё.


Автор: Altem 23.03.17, 12:11

candrey @ Сегодня, 12:45 * ,

Я правильно понял?

Функция ПолучитьКартинку(Файл) Экспорт 
ВерсияСсылка = Файл.ТекущаяВерсия;
ТипХраненияФайла = ВерсияСсылка.ТипХраненияФайла;
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
Если НЕ ВерсияСсылка.Том.Пустая() Тогда
ПолныйПуть = ФайловыеФункции.ПолныйПутьТома(ВерсияСсылка.Том) + ВерсияСсылка.ПутьКФайлу;
ДвоичныеДанные = Новый ДвоичныеДанные(ПолныйПуть);
КонецЕсли;
Иначе
ДвоичныеДанные = ВерсияСсылка.ФайлХранилище.Получить();
КонецЕсли;
Возврат Новый Картинка(ДвоичныеДанные);
КонецФункции

//Запрос

ВЫБРАТЬ
| СчетНаОплату.Организация.ФайлКартинки.Ссылка КАК Файл
|ИЗ
|    Документ.СчетНаОплату КАК СчетНаОплату

после запроса  вставляем картинку:

Если ЗначениеЗаполнено(Файл) Тогда
Рисунок = ОбластьМакета.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 0;
Рисунок.Высота = 15;
Рисунок.Ширина = 15;
Рисунок.Лево = 0;
Рисунок.Картинка = ПолучитьКартинку(Файл);
КонецЕсли;

Автор: Altem 23.03.17, 16:52

Тема закрыта
Решил вопрос так:
Создайте в макете область Заголовок и обязательно в ней создайте картинку пустую. Растянув ее под нужный размер и дайте имя Логотип

Запрос = Новый Запрос;Запрос. 
    Текст =

    "ВЫБРАТЬ
    |    ХранилищеДополнительнойИнформации.Ссылка,
    |    ХранилищеДополнительнойИнформации.Объект,
    |    ХранилищеДополнительнойИнформации.Хранилище,
    |    ХранилищеДополнительнойИнформации.ИмяФайла
    |ИЗ
    |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
    |ГДЕ
    |    ХранилищеДополнительнойИнформации.Объект = &Организация";

    Запрос.УстановитьПараметр("Организация", Организация);
    ВыборкаДетальныеЗаписиКартинки=Запрос.Выполнить().Выбрать();

    Пока ВыборкаДетальныеЗаписиКартинки.Следующий() Цикл
    Если ВыборкаДетальныеЗаписиКартинки.Ссылка.Наименование = "Логотип" Тогда //   картинка с именем "Логотип"
        
        ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок");
        ОбластьМакетаЗаголовок.Рисунки.Логотип.Картинка = ВыборкаДетальныеЗаписиКартинки.Хранилище.Получить();
    КонецЕсли;
    КонецЦикла;
    ТабДокумент.Вывести(ОбластьМакетаЗаголовок);

Автор: candrey 23.03.17, 17:00

Если у вас все работает как Вы задумали то Ок.
Макет с другими организациями пробывали? Отрабатывает нормально?

Автор: Altem 24.03.17, 9:41

candrey @ Вчера, 19:00 * ,
Макет с другими организациями тоже нормально отрабатывает.

Автор: Altem 27.03.17, 12:46

candrey @ 23.03.17, 19:00 * ,
Подскажите, как сделать чтобы выводило на печать, если нет картинки в реквизите Организации?

Автор: logist 27.03.17, 12:48

Цитата(Altem @ 27.03.17, 12:46) *
как сделать чтобы выводило на печать

что бы выводило что?

Автор: Altem 27.03.17, 12:48

logist @ Сегодня, 14:48 * ,
печатную форму документа без логотипа

Запрос = Новый Запрос;Запрос. 
    Текст =

    "ВЫБРАТЬ
    |    ХранилищеДополнительнойИнформации.Ссылка,
    |    ХранилищеДополнительнойИнформации.Объект,
    |    ХранилищеДополнительнойИнформации.Хранилище,
    |    ХранилищеДополнительнойИнформации.ИмяФайла
    |ИЗ
    |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
    |ГДЕ
    |    ХранилищеДополнительнойИнформации.Объект = &Организация";

    Запрос.УстановитьПараметр("Организация", Организация);
    ВыборкаДетальныеЗаписиКартинки=Запрос.Выполнить().Выбрать();

    Пока ВыборкаДетальныеЗаписиКартинки.Следующий() Цикл
    Если ВыборкаДетальныеЗаписиКартинки.Ссылка.Наименование = "Логотип" Тогда //   картинка с именем "Логотип"
        
        ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок");
        ОбластьМакетаЗаголовок.Рисунки.Логотип.Картинка = ВыборкаДетальныеЗаписиКартинки.Хранилище.Получить();
    КонецЕсли;
    КонецЦикла;
    ТабДокумент.Вывести(ОбластьМакетаЗаголовок);

Автор: logist 27.03.17, 13:29

ОбластьМакетаЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Картинка = ВыборкаДетальныеЗаписиКартинки.Хранилище.Получить();
Если Не Картинка = Неопределено Тогд
        ОбластьМакетаЗаголовок.Рисунки.Логотип.Картинка = Картинка;
КонецЕсли;

Автор: Altem 27.03.17, 13:54

logist @ Сегодня, 15:29 * ,
Ошибку пишет
Значение не является значением объектного типа (Получить)
Картинка = ВыборкаДетальныеЗаписиКартинки.Хранилище.Получить();

Тоесть нужно выводить на печать даже если у организации нет логотипа

Автор: candrey 27.03.17, 15:19

1) Если есть логотип прикручивайте логотип к соответствующей организации.

2) Если логотипа нету. Нужно чтоб выводило пустоту - прикрутите к этой организации (к другой где нету логотипа) пустой логотип- "Пустой фаил без рисунка"

3) Если выводить логотип ненужно то перед выводом делайте проверку на логотип. Если есть логотип то печатаем его. Если нету его то пропускаем идем дальше печатаем без логотипа.

Определяйте сами. Что вам больше подходит.

Ставьте точку остановка в этом коде перед ошибкой и смотрите в отладчике что там.

Автор: logist 27.03.17, 16:59

Цитата(Altem @ 27.03.17, 13:54) *
Ошибку пишет
Значение не является значением объектного типа (Получить)
Картинка = ВыборкаДетальныеЗаписиКартинки.Хранилище.Получить();

Разбирайтесь почему у вас там ошибка, если файла логотипа нет, то по идее и выборка должна не доходить до этого момента. Не совсем понимаю код который написан в сообщении http://pro1c.org.ua/topic/zup-logotip-v-pechatnoj-forme-dokumenta-36113/?view=findpost&p=124794 Вероятно он не правильно написан, поэтому доходит до получения картинки которой нет.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua