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

как выбрать валюты?

Автор sali, 29 мая 2025, 11:13

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

antoneus

Потому что если условие в запросе не выполнено (т.е. владелец не входит в список) - выборка будет пустой, как мы убедились.
Как вариант -

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

sali

antoneus, я благодарен вам за ваше время, но по этому коду он идет не верно . у сотрудника которого нет файла выводит пустую ссылку, а у сотрудника у которого есть файл он тоже идет по пути будто этого файла нет

sali

он здесь ложь возвращает на заполненное значение
Если ВыборкаДетальныеЗаписи.НайтиСледующий(Новый Структура("ВладелецФайла", ВладелецФайла)) Тогда
потому как результат запроса показывает Ошибку чтения значения

antoneus

А, да, запрос таки кривой.

ВЫБРАТЬ
    |    ФизическиеЛицаПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла,
    |    ДвоичныеДанныеФайлов.ХранилищеДвоичныхДанных КАК ДвоичныеДанныеФайла

sali

antoneus, да, я до этого допёр вчера . но он почему-то подставляет подпись второго сотрудника первому, то бишь делает наоборот
и когда есть подпись у первого сотрудника, а у второго нет, то подпись подставляется второму , хотя должна первому. что не так опять? отрабатывает правильно по отладке, результат не тот

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


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

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

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

sali

ммм понял, он находит у того у кого есть картинка и подставляет эту картинку сотруднику у которого нет ее. но куда интересней что он отрабатывает аналогичным образом когда у двух сотрудников есть присоединенный файл :ooifh:  ;)

sali


antoneus

Блин, редко этой шляпой пользуюсь, совсем забыл про Сбросить().

Для каждого ВладелецФайла из ВладельцыФайла Цикл
    Если ВыборкаДетальныеЗаписи.НайтиСледующий(Новый Структура("ВладелецФайла", ВладелецФайла)) Тогда
        МассивВыбора.Добавить(ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные);
        ВыборкаДетальныеЗаписи.Сбросить()

sali

antoneus,    Для каждого ВладелецФайла из ВладельцыФайла Цикл
        Если ВыборкаДетальныеЗаписи.НайтиСледующий(Новый Структура("ВладелецФайла", ВладелецФайла)) Тогда // и не ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла = null Тогда
            МассивВыбора.Добавить(ВыборкаДетальныеЗаписи.ДвоичныеДанныеФайла.ДвоичныеДанные);
ВыборкаДетальныеЗаписи.Сбросить();
        Иначе
            МассивВыбора.Добавить(Справочники.ФизическиеЛицаПрисоединенныеФайлы.ПустаяСсылка());
        КонецЕсли;
КонецЦикла; 

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

antoneus

Потому что в D2 находится подпись бухгалтера а в D3 подпись менеджера? А при выводе ты распихиваешь картинки наоборот?

Теги:

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

Рейтинг@Mail.ru

Поиск