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

Передать 2 значения в запрос ПФ

Автор sali, 22 мая 2025, 14:26

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

sali

есть код печати

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

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


Если СтрЧислоВхождений(ИмяОбласти, "Строка") > 0 Тогда

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

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

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл     
ВозвратСтруктуры = Новый Структура("Картинка1, Картинка2", ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные, ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные);
// ВозвратСтруКТУРЫ.Вставить("ВладелецФайла1, Картинка1", "ВыборкаДетальныеЗаписи.ВладелецФайла", "ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные");
// ВозвратСтруКТУРЫ.Вставить("ВладелецФайла2, Картинка2","ВыборкаДетальныеЗаписи.ВладелецФайла", "ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные");
                Возврат ВозвратСтруктуры;

КонецЦикла;




КонецФункции
вывод такой
Снимок экрана (322).png
то есть выводит одну и ту же ,  а получает 2. что нужно, где и как исправить?

Максим75

sali, ну так Вы же записываете в структуру дважды одно и то же.

ВозвратСтруктуры = Новый Структура("Картинка1, Картинка2", ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные, ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные);

и в картинка1 и в картинка2 пишется то же самое.
что пишите, то и получаете.

ну не знаю, сделайте вывод вначале бухгалтера, потом директора.
ну короче говоря смотрите сами, как реализовать вывод двух разных картинок.

sali

Максим75, там по отладке смотрел получалось выводить сначала для бухгалтера потом для менеджера . и выводились разные. в консоли уж точно выводилось как нужно

Максим75

sali, внимательно посмотрите, что и как заполняется.
У Вас в цикле выборки запроса заполняется структура и возвращается эта структура прямо из цикла.
а на выходе Вы получаете один раз это кино.
возьмите не структуру сделайте, а массив в цикле в функции ПрисоединенныеФайлыФизЛица
при обходе выборки создайте два элемента массива, в конце верните этот массив из двух элементов, а потом получите из первого и второго элемента что нужно.

sali

Максим75, Функция ПрисоединенныеФайлыФизЛица(Шапка)

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

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

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

antoneus


sali

antoneus, подъёб засчитан. а серьезно?

Максим75

sali, ну как бы всего не видно, что вложении - там все так, вот что дальше, хз

sali

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

Максим75

sali, да это не код, а жуть какая-то.

верните как было, только выгрузку сделайте в массив

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

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

   
   
   Возврат МассивВыбора
КонецФункции

Теги:

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

Рейтинг@Mail.ru

Поиск