Добрый вечер !
Имеется запрос на выборку данных из справочника.Вот только работает он не совсем корректно.
В выборку попадают записи,которых там быть не должно,а именно не выполняется условие (Перев_ф>=КонДата)
В отчет попадают все записи ,у которых заполнено значение поля из запроса Перев_ф,а должны попадать
записи,значение даты у которых должны быть больше или равны дате окончания периода КонДата.
В общем не выполняется последнее условие.
НачДата и КонДата -реквизиты начала и окончания периода на форме отчета.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Обрабатывать НеПомеченныеНаУдаление;
|Период с НачДата по КонДата;
|Сотр = Справочник.Данные.ТекущийЭлемент;
|Таб = Справочник.Данные.ТекущийЭлемент.Код;
|Прием_д = Справочник.Данные.ТекущийЭлемент.ПриказОприеме.ДатаПриема;
|Перев_ф = Справочник.Данные.ТекущийЭлемент.ПриказОПеревВФилиал.ДатаПеревода;
|Увол_д = Справочник.Данные.ТекущийЭлемент.ПриказОбУвольнении.ДатаУвольнения;
|Увол_пр = Справочник.Данные.ТекущийЭлемент.ПриказОбУвольнении;
|Без итогов;
|группировка Сотр;
|Условие((Стаж<=КонДата));
|Условие((ДатаЧисло(Увол_д)=0) или (Увол_д>=НачДата) или (Увол_д>=КонДата) или (Перев_ф>=КонДата));
|"//}}ЗАПРОС
;
Sharzem @ Сегодня, 20:23
,
Смущает то, что запрос как надо не работает.То ли скобок нет,то ли лишние скобки...
andrew76 @ Сегодня, 18:29
,
Хорошо.
1. Зачем: (ДатаЧисло(Увол_д)=0) ?
2. Почему: (Увол_д>=НачДата) или (Увол_д>=КонДата) (Какая разница ?)
3. Считаю что нужно заменить: или на и (Перев_ф>=КонДата). Если считаете правильными свои условия с Увол_д.
Мое мнение с которым Вы можете не соглашаться: Сделайте через выборку справочника с условием. Работать будет быстрее (проверено).
andrew76 @ Сегодня, 18:51
,
Тогда так:
Условие(((ДатаЧисло(Увол_д)=0) или (Увол_д>=НачДата)) или (Перев_ф>=КонДата));
Должны попадать уволенные и не уволенные, а также те кого перевели.
Sharzem @ Вчера, 21:10
,
Запрос отработал также как и до переделки,т.е. опять не корректно, пока не переписал заново условие выборки :
|Условие(Стаж<=НачДата);
|Условие(((ДатаЧисло(Перев_ф)>0) и (Перев_ф>=КонДата)) ИЛИ ((Увол_д>=НачДата) И (ДатаЧисло(Перев_ф)=0)) ИЛИ ((ДатаЧисло(Увол_д)=0) И (ДатаЧисло(Перев_ф)=0)));
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua