Условие на пустую дату в виртуальной таблице .СрезПоследних()

1. RomanVG7 17.01.20 11:27 Сейчас в теме
Хочу выгрузить действующих сотрудников (Камин 4.0), накладываю условие на дату увольнения:
РегистрСведений.КадровыеСведения.СрезПоследних( 
            &Дата, 
            Фирма = &Фирма И СтатусРаботы = ЗНАЧЕНИЕ(Справочник.СтатусыРаботы.ОсновноеМестоРаботы) 
            И (ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)    ИЛИ ДатаУвольнения >= &Дата)) КАК КадровыеСведенияСрезПоследних 

условие на дату увольнения НЕ срабатывает - выходят все сотрудники!
Когда выношу условие на дату в ГДЕ
ГДЕ (КадровыеСведенияСрезПоследних.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ КадровыеСведенияСрезПоследних.ДатаУвольнения >= &Дата) 

условие срабатывает, но правильнее условия делать в параметрах виртуальной таблицы.

когда ставлю условие в виртуальной таблице:
ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
то выходят все уволенные сотрудники
если ставлю:
НЕ (ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
опять выходят все сотрудники - такое ощущение, что система не понимает пустую дату.
поиск по конкретной дате увольнения работает.
По теме из базы знаний
Найденные решения
11. Lenten 25 17.01.20 12:51 Сейчас в теме
(10) а у вас если
01,01,2015 приняли сотрудника
01,01,2019 уволили

это 1 или 2 записи в регистре?
RomanVG7; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. DJDUH 17 17.01.20 11:46 Сейчас в теме
(1) Фильтр по ресурсам в парамах вирт табл - это классическая ошибка не верных данных!!!
2. VictorRGB2 13 17.01.20 11:38 Сейчас в теме
СрезПоследних\Первых получает данные именно на дату среза и не может отфильтровать их еще по какой-то дате
а вот дальше уже полученные данные можно фильтровать по условию запроса, что вы и наблюдаете

тоже не понимаю, почему так, но для себя решил, что так было задумано ))
3. Lenten 25 17.01.20 11:45 Сейчас в теме
когда ставлю условие в виртуальной таблице:
ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
то выходят все уволенные сотрудники


это правильно. 1с находит строчку, в которой дата увольнения проставлена. Это строка увольнения. Вот их она вам и показывает

если ставлю:
НЕ (ДатаУвольнения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
опять выходят все сотрудники


тут 1с показывает вам строчки, где датаУвольнения пустая. Думаю при приеме на работу на каждого сотрудника появляется по строчке с пустой датой увольнения. Вот вы всех и видите
10. RomanVG7 17.01.20 12:45 Сейчас в теме
(3) я считал, что условие в ВТ ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) должно вывести только работающих сотрудников, но выводятся все сотрудники в т.ч. уволенные, при этом, если вывести поле ДатаУвольнения - оно будет пустым, хотя у некоторых оно точно не пустое!
11. Lenten 25 17.01.20 12:51 Сейчас в теме
(10) а у вас если
01,01,2015 приняли сотрудника
01,01,2019 уволили

это 1 или 2 записи в регистре?
RomanVG7; +1 Ответить
13. Fril 17.01.20 12:58 Сейчас в теме
(11) есть еще перемещение
14. RomanVG7 17.01.20 12:59 Сейчас в теме
(11) 2 записи! Теперь все понятно, спасибо!
12. Fril 17.01.20 12:51 Сейчас в теме
(10)регистр не тот. В своем регистре "КадровыеСведения" сделай отбор по пустой дате в колонке ДатаУвольнения и увидишь причину
5. Fril 17.01.20 12:04 Сейчас в теме
Доброго дня!
Я использовал регистр "КадроваяИсторияСотрудников"

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо КАК Сотрудник,
	МАКСИМУМ(КадроваяИсторияСотрудниковСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ВТ_МаксПериод
ИЗ
	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, ) КАК КадроваяИсторияСотрудниковСрезПоследних
ГДЕ
	НЕ КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
	КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_КадрИстория.Период КАК Период,
	ВТ_КадрИстория.ВидСобытия КАК ВидСобытия,
	ВТ_КадрИстория.Сотрудник КАК Сотрудник,
	ВТ_КадрИстория.ТабельныйНомер КАК ТабельныйНомер,
	ВТ_КадрИстория.Должность КАК Должность,
	ВТ_КадрИстория.Подразделение КАК Подразделение,
	ВТ_КадрИстория.ГоловнаяОрганизация КАК ГоловнаяОрганизация
ИЗ
	ВТ_МаксПериод КАК ВТ_МаксПериод
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КадрИстория КАК ВТ_КадрИстория
		ПО (ВТ_КадрИстория.Сотрудник = ВТ_МаксПериод.Сотрудник)
			И (ВТ_КадрИстория.Период = ВТ_МаксПериод.Период)
Показать


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

В самом отчете можно поставить фильтр "Не показывать уволенных"
6. Fril 17.01.20 12:08 Сейчас в теме
Главное сначала понять с какого регистра тянуть данные, а для этого надо промониторить подобные регистры и какие в них данные хранятся...
7. Fox-trot 156 17.01.20 12:22 Сейчас в теме
(6) или открыть документацию...
8. RomanVG7 17.01.20 12:38 Сейчас в теме
(6) У меня Камин 4.0, откуда взять данные я знаю, вопрос был в другом: почему условие в ВТ с конкретной датой отрабатывает, а условие с пустой датой выводит все записи (в примере и уволенных и не уволенных сотрудников). Если это ограничение платформы для ВТ .СрезПоследних(), то принимаю и работаю с секцией ГДЕ.
9. Fril 17.01.20 12:44 Сейчас в теме
(8)Посмотри регистр и посмотри результаты в консоли запросов с датой и без, как оно там в камине устроено...
Камина нет под рукой
Посмотри мой запрос, может тебе и дату указывать не надо!
Выведи последние данные по всем статусам, а потом наложи условие (уже в пользовательском режиме) на неравно "Уволенные"
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день