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

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

Автор sali, 20 мая 2025, 14:43

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

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.Картинка = Картинка;

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

sali

что не так , пусто
        МассивОбластейМакета.Добавить("Подвал");
        МассивОбластейМакета.Добавить("СотрудникиИПодписи");
        Для Каждого ИмяОбласти Из МассивОбластейМакета Цикл
            ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти);           
            Если СтрЧислоВхождений(ИмяОбласти, "Строка") > 0 Тогда
               
                Для Каждого СтрокаТаблицы Из ТаблицаУслуги Цикл
                    ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы);
                    ТабличныйДокумент.Вывести(ОбластьМакета); 
                КонецЦикла; 
               
            Иначе
                ЗаполнитьЗначенияСвойств(ОбластьМакета.Параметры, ДанныеПечати);
                ТабличныйДокумент.Вывести(ОбластьМакета);
            КонецЕсли; 
            Если ИмяОбласти = "СотрудникиИПодписи" Тогда
                файлкартинка = ПрисоединенныеФайлыФизЛица(Шапка);
                Картинка = ?(файлкартинка = Null ИЛИ файлкартинка = Справочники.ФизическиеЛицаПрисоединенныеФайлы.ПустаяСсылка(),Новый Картинка(),Новый Картинка(файлкартинка.Получить()));
                ОбластьМакета.Рисунки.ФаксимилеБухгалтера.Картинка = Картинка; 
            КонецЕсли;
        КонецЦикла;
Снимок экрана (315).pngСнимок экрана (316).png 

antoneus

Что в переменной файлкартинка?

antoneus

ОбластьМакета.Рисунки.ФаксимилеБухгалтера.Картинка = Картинка;
А выводить ее в табличный документ не надо?

sali

antoneus, хранилищезначения
в функции ПрисоединенныеФайлыФизЛица(Шапка) выполняется второй запрос, и возвращается хранилище значения

sali

antoneus, а так  и сделал, но работает без ошибки и пустое поле

sali

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

Теги:

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

Рейтинг@Mail.ru

Поиск