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

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

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

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

antoneus

Вот только картинку надо устанавливать перед выводом.

sali

antoneus, то бишь ...?? или как? МассивОбластейМакета.Добавить("Подвал");

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

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

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

antoneus

Перед. Выводом. Перед командой

ТабличныйДокумент.Вывести(ОбластьМакета);

sali

antoneus, вот это я прошляпил условие чутка

sali

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

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

antoneus

Может. Поэтому еще раз спрошу: что в переменной файлкартинка? Вот точку останова поставить и посмотреть.

sali


sali

Снимок экрана (317).png
я правда функцию чуть изменил и запрос в ней , чтобы сразу мучаться и получать 2 файла с физлиц
Функция ПрисоединенныеФайлыФизЛица(Шапка)
    Запрос = новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |            ФизическиеЛицаПрисоединенныеФайлы.Ссылка КАК Ссылка,
    |            ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК ДвоичныеДанныеФайла
    |        ИЗ
    |            Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы
    |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УдалитьДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
    |                ПО ФизическиеЛицаПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл
    |        ГДЕ
    |            ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла В (&ВладелецФайла1, &ВладелецФайла2)
    |                   
    |        УПОРЯДОЧИТЬ ПО
    |            ФизическиеЛицаПрисоединенныеФайлы.ДатаСоздания УБЫВ";
   
    Запрос.УстановитьПараметр("ВладелецФайла1", Шапка.ПодписьБухгалтера);
    Запрос.УстановитьПараметр("ВладелецФайла2", Шапка.ПодписьМенеджера);
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла = null Тогда
           
            Запрос = Новый Запрос;
            Запрос.Текст =
            "ВЫБРАТЬ
            |    ФизическиеЛицаПрисоединенныеФайлы.Ссылка КАК Ссылка,
            |    ДвоичныеДанныеФайлов.ХранилищеДвоичныхДанных КАК ДвоичныеДанныеФайла
            |ИЗ
            |    Справочник.ФизическиеЛицаПрисоединенныеФайлы КАК ФизическиеЛицаПрисоединенныеФайлы
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ХранилищеФайлов КАК ДвоичныеДанныеФайлов
            |        ПО ФизическиеЛицаПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл
            |ГДЕ
            |    ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла В (&ВладелецФайла1, &ВладелецФайла2)
            |
            |УПОРЯДОЧИТЬ ПО
            |    ФизическиеЛицаПрисоединенныеФайлы.ДатаСоздания УБЫВ";
           
            Запрос.УстановитьПараметр("ВладелецФайла1", Шапка.ПодписьБухгалтера);
            Запрос.УстановитьПараметр("ВладелецФайла2", Шапка.ПодписьМенеджера);   
            РезультатЗапроса = Запрос.Выполнить();
           
            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
           
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                 ВОзврат ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.Ссылка.ДвоичныеДанные;
             КонецЦикла;
         Иначе
            Возврат ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла;
        КонецЕсли;
    КонецЦикла;
   
    Возврат Справочники.ФизическиеЛицаПрисоединенныеФайлы.ПустаяСсылка();   
   
КонецФункции

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

Если Стр

antoneus

Хорошо. файлкартинка.Получить() что возвращает?
И этот код

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

не вернет два файла, он вернет один, потому что Возврат прерывает выполнение кода и возвращает управление в вызывающую процедуру.

sali


Теги:

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

Рейтинг@Mail.ru

Поиск