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

Запросы

Автор Gio, 22 янв 2025, 20:43

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

Gio

Всем привет, я создал внешнюю обработку для фильтра документов (Поступление товаров и услуг) и я хочу добавить этот фильтр в этот запрос.

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

Как я могу добавить это легко?

Спасибо заранее

antoneus

Как-то так

Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
|ПОМЕСТИТЬ Пустые
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ПоступлениеТоваровУслуг.Ответственный = &Ответственный
| И ПоступлениеТоваровУслуг.НомерВходящегоДокумента = """"
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПоступлениеТоваровУслуг.Ссылка) КАК Ссылка
|ПОМЕСТИТЬ Дубли
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ПоступлениеТоваровУслуг.Ответственный = &Ответственный
| И ПоступлениеТоваровУслуг.НомерВходящегоДокумента <> """"
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеТоваровУслуг.НомерВходящегоДокумента
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПоступлениеТоваровУслуг.Ссылка) > 1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Пустые.Ссылка КАК Ссылка,
| """" КАК НомерВходящегоДокумента
|ИЗ
| Пустые КАК Пустые
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка,
| Дубли.НомерВходящегоДокумента
|ИЗ
| Дубли КАК Дубли
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
| ПО Дубли.НомерВходящегоДокумента = ПоступлениеТоваровУслуг.НомерВходящегоДокумента
|ГДЕ
| ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ПоступлениеТоваровУслуг.Ответственный = &Ответственный";

Gio

antoneus,

Спасибо за ответ,
Это работает хорошо, но у меня есть 2 значения. первое - "Ссылка" заполняется правильно. (и фильтруется ответственными) производит правильные документы.
Второе значение -"Ответственный" - пустои.

Я хочу, чтобы поле «Ответственный» заполнялось ответственным лицом документов.

Где должно быть добавлено это - { | ПоступлениеТоваровУслуг.Ответственный КАК Ответственный }


N                               Ссылка                                                                  Ответственный
1   Поступление товаров и услуг 00000070858 от 28.11.2023 23:58:58   
2   Поступление товаров и услуг 00000001574 от 03.01.2024 23:59:59




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

   Выбор = Запрос.Выполнить().Выгрузить();   
   
   ТЧ.Загрузить(Выбор);
   
КонецПроцедуры

antoneus

Зачем ответственный, если вы его и так указываете (т.е. он известен)? Ну, добавьте в последнюю выборку

|ВЫБРАТЬ
|    Пустые.Ссылка КАК Ссылка,
|    Пустые.Ссылка.Ответственный КАК Ответственный,
|    """" КАК НомерВходящегоДокумента
|ИЗ
|    Пустые КАК Пустые
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ПоступлениеТоваровУслуг.Ссылка,
|    ПоступлениеТоваровУслуг.Ответственный,
|    Дубли.НомерВходящегоДокумента

Gio

Цитата: antoneus от 23 янв 2025, 11:54Зачем ответственный, если вы его и так указываете (т.е. он известен)? Ну, добавьте в последнюю выборку
Да, вы прав, но у меня есть еще один(такой же) обработка, который не для текущего пользователя и я хочу использовать этот фильтр для них обоих.
 
Спасибо вам большое, это именно то, что я хотел.

Теги:

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

Рейтинг@Mail.ru

Поиск