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

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

Автор Черника, 04 авг 2022, 12:10

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

Черника

Подскажите пожалуйста, как исправить текущий код, что бы запрос делать выборку только по 3 документам "Паспорт гражданина РФ", "Иностранный паспорт" и "Вид на жительство". Много, что перепробовала, но ничего не работает  :dfbbdrfb:

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

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

LexaK

Черника, г..код конечно, но на первый взгляд все должно работать (как и положено для настоящего г..кода)!
ошибка то в чем?
по заданному физлицу находите первый из трех заданных документов
(внимательно сравнение по именам сделать)
еще в проверку добавить
ИНАЧЕ (на тот случай когда у физлица нет документов или еще не завели)

вот это добавьте
Иначе
                        //ластьПодвал.Параметры.ДатаВ = Формат(Выборка2.ДатаВыдачи, "ДЛФ=ДД");
                        ОбластьПодвал.Параметры.Документ = "Документ не найден
                        ОбластьПодвал.Параметры.Серия = "";
                        ОбластьПодвал.Параметры.Номер = "";
                        ОбластьПодвал.Параметры.КемВыдан = "";

            КонецЕсли;
если помогло нажмите: Спасибо!

ls600

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

Черника

LexaK, Ошибка в том, что это "нехороший код"  :P

Черника

ls600, Спасибо так и сделала, все работает

Теги:

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

Рейтинг@Mail.ru

Поиск