Работающие сотрудники. Запрос.

1. userzak 26.12.22 14:58 Сейчас в теме
Приветствую Коллеги!
Делаю выборку работающих сотрудников на определенную дату.
ВЫБРАТЬ
	Сотрудники.Ссылка КАК Сотр,
	Сотрудники.ФизическоеЛицо КАК Физ,
	КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия КАК ВидСобытия
ИЗ
	Справочник.Сотрудники КАК Сотрудники
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаПерехода, Организация = &Организация) КАК КадроваяИсторияСотрудниковСрезПоследних
		ПО (КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = Сотрудники.Ссылка)
ГДЕ
	КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)


Показать

В запрос дейтвительно попадают работающие сотрудники по выбранной организации.
Но почему???
Ведь выборка идет из Справочник.Сотрудники и ЛЕВОЕ соединение с регистром.
Значит, должен быть выбран весь справочник сотрудники! Но в выборку попадают сотрудники работающие в выбранной организации....
Я сломался...
По теме из базы знаний
Найденные решения
26. mkalimulin 1183 26.12.22 17:11 Сейчас в теме
(23) Логика проста до безобразия. Если левое соединение, то в правой части NULL. Если наложить хоть какое-то условие на правую часть, то все NULL отсекаются и получается внутреннее соединение. Мог бы и сам догадаться
userzak; user1881120; +2 Ответить
4. user1278383 5 26.12.22 15:04 Сейчас в теме
Условие в "где" превращает левое во внутреннее соединение
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 26.12.22 15:02
Сообщение было скрыто модератором.
...
11. userzak 26.12.22 15:19 Сейчас в теме
В условии не важно а = б или б=а
3. spacecraft 26.12.22 15:04 Сейчас в теме
(1) отбор из секции ГДЕ перенести в условия соединения таблиц.
17. userzak 26.12.22 15:34 Сейчас в теме
Можно подробнее? Если в параметре то это не пойдет.
18. spacecraft 26.12.22 15:37 Сейчас в теме
(17)
ИЗ
    Справочник.Сотрудники КАК Сотрудники
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаПерехода, Организация = &Организация) КАК КадроваяИсторияСотрудниковСрезПоследних
        ПО (КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = Сотрудники.Ссылка)
        И     КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
4. user1278383 5 26.12.22 15:04 Сейчас в теме
Условие в "где" превращает левое во внутреннее соединение
5. пользователь 26.12.22 15:09
Сообщение было скрыто модератором.
...
6. DBV 26.12.22 15:10 Сейчас в теме
(4) Левое соединение остается Левым, нигде оно не превращается
Легким движением руки брюки превращаются... превращаются брюки... брюки превращаются... В элегантные шорты!
7. user1278383 5 26.12.22 15:12 Сейчас в теме
(6) не согласен. Результат запроса будет такой же, как если бы это было внутреннее соединение
8. DBV 26.12.22 15:13 Сейчас в теме
(7) но соединение останется левым
9. user1278383 5 26.12.22 15:16 Сейчас в теме
(8) ок. в следующий раз прежде, чем написать, я буду стараться все разжевать подробно, при этом помечая знаками препинания используемые мной упрощения
10. DBV 26.12.22 15:17 Сейчас в теме
(9) так Вы сравните
Условие в "где" превращает левое во внутреннее соединение
и
Результат запроса будет такой же, как если бы это было внутреннее соединение
user1881120; +1 Ответить
12. user1278383 5 26.12.22 15:20 Сейчас в теме
(10) чего вы хотите добиться?) для меня левое соединение с условием, отсевающее левую часть, равносильно внутреннему. Если это не так, что ж, я переживу
13. DBV 26.12.22 15:22 Сейчас в теме
(12) так это Вам понятно. А новичок может запутаться
Добавит условие к основной таблице и подумает, что это равносильно внутреннему соединению
14. user1278383 5 26.12.22 15:24 Сейчас в теме
(13) я бы на месте новичка не понял, почему условие где отсекается левую часть соединения :)
15. DBV 26.12.22 15:27 Сейчас в теме
(14) Ну Тс вот и не понимает, а Ваш ответ
Условие в "где" превращает левое во внутреннее соединение
еще больше путает
Если бы сразу написали
Результат запроса будет такой же, как если бы это было внутреннее соединение
,то я бы ничего не написал
Не пишу, что вы не правы, просто не стоит путать и так не понимающих
16. user1278383 5 26.12.22 15:30 Сейчас в теме
(15) я уже дал ответ в (9). Я не понимаю к чему вообще весь этот диалог... В смысле что вам еще надо?)))
19. DBV 26.12.22 15:39 Сейчас в теме
20. user1278383 5 26.12.22 15:40 Сейчас в теме
(19) не очень-то и заметно. Сегодня вроде не пятница)
21. DBV 26.12.22 15:41 Сейчас в теме
(20) так скоро Новый год, вся неделя как пятница xD
23. userzak 26.12.22 16:47 Сейчас в теме
Действительно внутреннее... Но как теперь с этим жить? 🤣 Да и логику этого я не улавливаю пока...
26. mkalimulin 1183 26.12.22 17:11 Сейчас в теме
(23) Логика проста до безобразия. Если левое соединение, то в правой части NULL. Если наложить хоть какое-то условие на правую часть, то все NULL отсекаются и получается внутреннее соединение. Мог бы и сам догадаться
userzak; user1881120; +2 Ответить
22. user1278383 5 26.12.22 15:45 Сейчас в теме
(21) ах, если бы. Самые нужные обновления 1с выпускает под новый год(
К тому же запрос все равно неправильный) Используется один из трех регистров с кадровой историей. Если были исправления или корректировки результат уже не такой. К тому же разработчики ЗУПа завтра могут все переделать ;)
24. userzak 26.12.22 16:49 Сейчас в теме
(22) То есть по хорошему надо использовать все три регистра?
25. user1278383 5 26.12.22 16:59 Сейчас в теме
(24) по-хорошему нужно изучить хотя бы эту статью https://infostart.ru/1c/articles/942569/
27. userzak 27.12.22 08:21 Сейчас в теме
(25)ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолучения);
Благодарю!
28. user1278383 5 27.12.22 08:27 Сейчас в теме
(27) использование типовых функций в разделе ЗУП - это самый надежный вариант. Если окунуться еще глубже, то можно вместо таблицы получить МенеджерВременныхТаблиц, который затем можно использовать в запросах ;)
29. user1278383 5 27.12.22 08:28 Сейчас в теме
(27) а если вся эта штука используется для написания отчета, то самое правильное решение будет еще проще. Можете прочитать по механизм представлений в ЗУПе :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот