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

ПРИСОЕДИНЕННЫЕ ФАЙЛЫ В ПФ

Автор sali, Вчера в 14:43

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

sali

со мной поделились таким кодом  функции Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КонтрагентыПрисоединенныеФайлы.Ссылка КАК Ссылка,
| ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК ДвоичныеДанныеФайла
|ИЗ
| Справочник.КонтрагентыПрисоединенныеФайлы КАК КонтрагентыПрисоединенныеФайлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УдалитьДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
| ПО КонтрагентыПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл
|ГДЕ
| КонтрагентыПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
| И КонтрагентыПрисоединенныеФайлы.Наименование = &Наименование
|
|УПОРЯДОЧИТЬ ПО
| КонтрагентыПрисоединенныеФайлы.ДатаСоздания УБЫВ";

Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла);
Запрос.УстановитьПараметр("Наименование", "QR");

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Если ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла = null Тогда

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КонтрагентыПрисоединенныеФайлы.Ссылка КАК Ссылка,
| ДвоичныеДанныеФайлов.ХранилищеДвоичныхДанных КАК ДвоичныеДанныеФайла
|ИЗ
| Справочник.КонтрагентыПрисоединенныеФайлы КАК КонтрагентыПрисоединенныеФайлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХранилищеФайлов КАК ДвоичныеДанныеФайлов
| ПО КонтрагентыПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл
|ГДЕ
| КонтрагентыПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
| И КонтрагентыПрисоединенныеФайлы.Наименование = &Наименование
|
|УПОРЯДОЧИТЬ ПО
| КонтрагентыПрисоединенныеФайлы.ДатаСоздания УБЫВ";

Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла);
Запрос.УстановитьПараметр("Наименование", "QR");

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВОзврат ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.Ссылка.ДвоичныеДанные;
КонецЦикла;
Иначе
Возврат ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла;
КонецЕсли;
КонецЦикла;

    Возврат Справочники.КонтрагентыПрисоединенныеФайлы.ПустаяСсылка();

для размещения картинки ( в этом случае qr )
и строкой в процедуре/функции печати документа(где берет данные для пф)
Картинка = ?(ФаилQR = Null ИЛИ ФаилQR = Справочники.КонтрагентыПрисоединенныеФайлы.ПустаяСсылка(),Новый Картинка(),Новый Картинка(ФаилQR.Получить()));
   ОбластьМакета.Рисунки.QR.Картинка = Картинка;
в макете есть картинка. точнее место для нее
я не понимать как уже впихнуть такой же механизм у себя
вот мое изобретение
Функция ПечатьСчетНаОплатуНаАнглийском(МассивОбъектов, ОбъектыПечати)
ТекстЗапроса = ....


//ФаксимилеБухгалтера = ?(файлкартинка = Null ИЛИ файлкартинка = Справочники.ФизическиеЛицаПрисоединенныеФайлы.ПустаяСсылка(),Новый ФаксимилеБухгалтера(),Новый ФаксимилеБухгалтера(файлкартинка.Получить()));
//ОбластьМакета.Рисунки.QR.Картинка = Картинка;
//ДанныеПечати.Вставить("ФаксимилеБухгалтера", ФаксимилеБухгалтера);

// Области
МассивОбластейМакета = Новый Массив;
//Если ЗначениеЗаполнено(Шапка.ФайлЛоготип) Тогда
МассивОбластейМакета.Добавить("Заголовок");
//Иначе
// МассивОбластейМакета.Добавить("ЗаголовокБезЛоготипа");
//КонецЕсли;

МассивОбластейМакета.Добавить("ШапкаТаблицы");
МассивОбластейМакета.Добавить("Строка");       

Если ЗначениеЗаполнено(Шапка.СкидкаСсылка) Тогда   
МассивОбластейМакета.Добавить("Скидка");   
КонецЕсли;
МассивОбластейМакета.Добавить("СтрокаПоле");
Если ЗначениеЗаполнено(Шапка.СрокОплаты) Тогда 
МассивОбластейМакета.Добавить("ИтогПродленный");   
Иначе
МассивОбластейМакета.Добавить("Итог"); 
КонецЕсли;

МассивОбластейМакета.Добавить("Подвал");
Для Каждого ИмяОбласти Из МассивОбластейМакета Цикл
ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти);
Если СтрЧислоВхождений(ИмяОбласти, "Строка") > 0 Тогда

Для Каждого СтрокаТаблицы Из ТаблицаУслуги Цикл
ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы);
ТабличныйДокумент.Вывести(ОбластьМакета); 
КонецЦикла; 

Иначе
ЗаполнитьЗначенияСвойств(ОбластьМакета.Параметры, ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
файлкартинка = ПрисоединенныеФайлыФизЛица(Шапка);
Картинка = ?(файлкартинка = Null ИЛИ файлкартинка = Справочники.ФизическиеЛицаПрисоединенныеФайлы.ПустаяСсылка(),Новый Картинка(),Новый Картинка(файлкартинка.Получить()));
ОбластьМакета.Рисунки[0].Картинка = файлкартинка;
КонецЦикла;

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);

КонецЦикла;

Возврат ТабличныйДокумент;

КонецФункции         

Функция ПрисоединенныеФайлыФизЛица(Шапка)
Запрос = новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ФизическиеЛицаПрисоединенныеФайлы.Ссылка КАК Ссылка,
| ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК ДвоичныеДанныеФайла
| ИЗ
| Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УдалитьДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
| ПО ФизическиеЛицаПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл
| ГДЕ
| ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
|
| УПОРЯДОЧИТЬ ПО
| ФизическиеЛицаПрисоединенныеФайлы.ДатаСоздания УБЫВ";

Запрос.УстановитьПараметр("ВладелецФайла", Шапка.ПодписьБухгалтера);
//Запрос.УстановитьПараметр("Наименование", "ФаксимилеСотрудника"); 
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла = null Тогда

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ФизическиеЛицаПрисоединенныеФайлы.Ссылка КАК Ссылка,
| ДвоичныеДанныеФайлов.ХранилищеДвоичныхДанных КАК ДвоичныеДанныеФайла
|ИЗ
| Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХранилищеФайлов КАК ДвоичныеДанныеФайлов
| ПО ФизическиеЛицаПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл
|ГДЕ
| ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
|
|УПОРЯДОЧИТЬ ПО
| ФизическиеЛицаПрисоединенныеФайлы.ДатаСоздания УБЫВ";

Запрос.УстановитьПараметр("ВладелецФайла", Шапка.ПодписьБухгалтера);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВОзврат ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.Ссылка.ДвоичныеДанные;
КонецЦикла;
Иначе
Возврат ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла;
КонецЕсли;
КонецЦикла;

    Возврат Справочники.ФизическиеЛицаПрисоединенныеФайлы.ПустаяСсылка();

КонецФункции

sali

сейчас выходит ошибка
Ошибка при установке значения атрибута контекста (Картинка)
{СчетНаОплату Документ.СчетНаОплатуПокупателю.МодульМенеджера(233)}:            ОбластьМакета.Рисунки[0].Картинка = файлкартинка;
{СчетНаОплату Документ.СчетНаОплатуПокупателю.МодульМенеджера(7)}:        "СчетНаОплатуНаАнглийском", НСтр("ru = 'Счет на оплату en'"), ПечатьСчетНаОплатуНаАнглийском(МассивОбъектов, ОбъектыПечати),,
{ОбщийМодуль.УправлениеПечатью.Модуль(3376)}:                            МенеджерПечати.Печать(ОбъектыСоответствующиеПечатнойФорме, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы,
{ОбщаяФорма.ПечатьДокументов.Форма(792)}:        ПечатныеФормы = УправлениеПечатью.СформироватьПечатныеФормы(Параметры.ИмяМенеджераПечати, ИменаМакетов,
{ОбщаяФорма.ПечатьДокументов.Форма(61)}:        КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(310)}:        ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, Строка(Новый УникальныйИдентификатор));
{ОбщийМодуль.УправлениеПечатьюГлобальный.Модуль(13)}:    УправлениеПечатьюСлужебныйКлиент.ПродолжитьВыполнениеКомандыПечати();
по причине:
Несоответствие типов
Несоответствие типов
что мне исправить?
строку ОбластьМакета.Рисунки[0].Картинка = файлкартинка;я менял на ОбластьМакета.Рисунки.ФаксимилеБухгалтера.Картинка = файлкартинка;
//и на
ОбластьМакета.Рисунки.D1.Картинка = файлкартинка;
 //потому как в отладке выходило  это имя и я подумал может его и подставлял неправильно , но нет блин

antoneus

Странно, валиться должно уже на этом

Новый Картинка(файлкартинка.Получить())
если файлкартинка - это ссылка на элемент справочника.

sali

antoneus, мне сказали ,что в запросе, который дали нужно изменить лишь справочник ну и подставить своего владельца ( т к владельца два - Бухгалтер и менеджер , сделал через ...ВладелецФайла В (&ФИЗЛицо1, &ФизЛицо2)) понт возник как раз на строках
Картинка = ?(ФаилQR = Null ИЛИ ФаилQR = Справочники.КонтрагентыПрисоединенныеФайлы.ПустаяСсылка(),Новый Картинка(),Новый Картинка(ФаилQR.Получить()));
   ОбластьМакета.Рисунки.QR.Картинка = Картинка;

Картинка вроде как название объекта в макете для картинки

Теги:

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

Рейтинг@Mail.ru

Поиск