В ЗУП есть регистр сведений "состояния сотрудников", из которого срезом мы хотим выдрать всех работающих на нужную дату. У уволенных в срезе последняя запись будет "увольнение". И вот тут у меня вопрос. ЗАпрос такого плана не работает:
ЗапросСотрудники.Текст =
"ВЫБРАТЬ
| СостоянияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
| СостоянияСотрудниковСрезПоследних.Сотрудник.Код КАК ТабельныйНомер,
| СостоянияСотрудниковСрезПоследних.Год КАК Год,
| СостоянияСотрудниковСрезПоследних.Состояние КАК Состояние
|ИЗ
| РегистрСведений.СостоянияСотрудников.СрезПоследних(
| &ДатаНачалаСобытия,
| Сотрудник.ГоловнаяОрганизация = &Организация
| И Год = &НачалоРасчетногоГода
| И Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение)) КАК СостоянияСотрудниковСрезПоследних
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ";
Он вкидывает уволенных, и при этом даже не записью увольнение. Такое ощущение, что запрос смотрит срез, видет "увольнение", и начинает смотреть еще раньше, пока не найдет нечто не-"увольнение"
А вот этот отфильтровывает нормально, уволенные не попадают в выборку вообщ:
ЗапросСотрудники.Текст =
"ВЫБРАТЬ
| СостоянияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник,
| СостоянияСотрудниковСрезПоследних.Сотрудник.Код КАК ТабельныйНомер,
| СостоянияСотрудниковСрезПоследних.Год КАК Год,
| СостоянияСотрудниковСрезПоследних.Состояние КАК Состояние
|ИЗ
| РегистрСведений.СостоянияСотрудников.СрезПоследних(
| &ДатаНачалаСобытия,
| Сотрудник.ГоловнаяОрганизация = &Организация
| И Год = &НачалоРасчетногоГода) КАК СостоянияСотрудниковСрезПоследних
|ГДЕ
| СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение)
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ";
Я правильно понимаю между ними разницу?
youalex
1 - 23.03.21 - 10:42
Это нормальное поведение "среза"
В первом случае срез строится по записям с Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение)
во втором - из уже построенного среза исключаются записи с Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение)
Йохохо
2 - 23.03.21 - 10:47
"видет "увольнение"" не, не видет "И Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение"
Жан Пердежон
3 - 23.03.21 - 13:23
"видет" не "видет";
в первом случае ты задаешь параметры формирования виртуальной таблицы (срез последних) - строка с увольнением не попадает в срез;
во втором - фильтруешь из сформированного среза