|
Разные результаты - консоль и СКД | ☑ | ||
---|---|---|---|---|
0
Масянька
06.02.24
✎
08:36
|
Доброе утро!
Запрос: ВЫБРАТЬ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период КАК Период, ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник КАК Сотрудник, КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение, КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность, ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени КАК ВидУчетаВремени, ВЫБОР КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&СписокЧасовогоВремени) ТОГДА 0 ИНАЧЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Дни КОНЕЦ КАК Дни, ДанныеТабельногоУчетаРабочегоВремениСотрудников.Часы КАК Часы ИЗ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК ДанныеТабельногоУчетаРабочегоВремениСотрудников ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаНачала, ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)) КАК КадроваяИсторияСотрудниковСрезПоследних ПО (ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник) ГДЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И НЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&ЯвкиИВыходные) И ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник = &Сотрудник УПОРЯДОЧИТЬ ПО ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник В РС кадровая история по сотруднику 4 записи: 2 начальная штатная расстановка и 2 перемещения (временных), 2 временных более поздние. В консоли возвращает правильную должность (постоянную). В СКД возвращает временную должность. Изначально отчет СКД был без условия на пустую дату (ДействуетДо). После добавления условия - все равно возвращает не ту должность. Что не так в СКД? Спасибо. |
|||
1
Волшебник
06.02.24
✎
08:38
|
условие ДействуетДо вытащите из параметров в ГДЕ
|
|||
2
Волшебник
06.02.24
✎
08:38
|
в параметрах добавьте условие на сотрудника
|
|||
3
Масянька
06.02.24
✎
08:42
|
(1)
ВЫБРАТЬ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период КАК Период, ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник КАК Сотрудник, КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение, КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность, ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени КАК ВидУчетаВремени, ВЫБОР КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&СписокЧасовогоВремени) ТОГДА 0 ИНАЧЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Дни КОНЕЦ КАК Дни, ДанныеТабельногоУчетаРабочегоВремениСотрудников.Часы КАК Часы ИЗ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК ДанныеТабельногоУчетаРабочегоВремениСотрудников ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаНачала, ) КАК КадроваяИсторияСотрудниковСрезПоследних ПО ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник ГДЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И НЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&ЯвкиИВыходные) И (КадроваяИсторияСотрудниковСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)) //ИЛИ КадроваяИсторияСотрудниковСрезПоследних.ДействуетДо ЕСТЬ NULL) УПОРЯДОЧИТЬ ПО ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник Не арбайтен (не та должность). |
|||
4
Гена
гуру
06.02.24
✎
08:45
|
Попробуйте соединяться не с КадроваяИсторияСотрудников
а с КадроваяИсторияСотрудниковИнтервальный Там уже чётко будут должности по датам. |
|||
5
Масянька
06.02.24
✎
08:48
|
(4) Там тоже самое (4 записи, с теми же должностями).
Почему разные результаты в консоли и СКД? |
|||
6
Гена
гуру
06.02.24
✎
08:50
|
(5) И всё-таки попробуйте.
|
|||
7
Масянька
06.02.24
✎
08:55
|
(6)
ВЫБРАТЬ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период КАК Период, ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник КАК Сотрудник, КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение, КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность, ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени КАК ВидУчетаВремени, ВЫБОР КОГДА ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&СписокЧасовогоВремени) ТОГДА 0 ИНАЧЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Дни КОНЕЦ КАК Дни, ДанныеТабельногоУчетаРабочегоВремениСотрудников.Часы КАК Часы ИЗ РегистрНакопления.ДанныеТабельногоУчетаРабочегоВремениСотрудников КАК ДанныеТабельногоУчетаРабочегоВремениСотрудников ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковСрезПоследних ПО ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник ГДЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.Период МЕЖДУ &ДатаНачала И &ДатаОкончания И НЕ ДанныеТабельногоУчетаРабочегоВремениСотрудников.ВидУчетаВремени В (&ЯвкиИВыходные) И КадроваяИсторияСотрудниковСрезПоследних.ДатаОкончания > &ДатаНачала УПОРЯДОЧИТЬ ПО ДанныеТабельногоУчетаРабочегоВремениСотрудников.Сотрудник То же самое - не та должность. |
|||
8
Масянька
06.02.24
✎
08:56
|
+(7) В консоли - правильная должность.
|
|||
9
АгентБезопасной Нацио
06.02.24
✎
09:00
|
как вариант, перехвати ПриКомпоновкеРезультата, посмотри в подготовленный МакетКомпоновки.НаборыДанных соотвествующий НаборДанных и его запрос (т.е. тот текст запроса, в который СКД првратила твой начальный запрос).
|
|||
10
toypaul
гуру
06.02.24
✎
09:32
|
(0) когда в СКД результат другой, надо под рукой иметь другую консоль. не запросов, а консоль компоновки данных
|
|||
11
Буковка
06.02.24
✎
09:42
|
(0) попробуй переименовать параметры ДатаНачала и ДатаОкончания. Есть предположение, что в скд пересекается со стандартными параметрами РС.
|
|||
12
Масянька
06.02.24
✎
10:03
|
Ребята!
Спасибо за наводки - буду пробовать (только вечером). Отпишусь. |
|||
13
Web00001
06.02.24
✎
10:03
|
>Почему разные результаты в консоли и СКД?
Очень старый анекдот. СКД оптимизирует запрос. Может изменить условие или выкинуть поле, если не увидит. что оно тебе нужно(а у тебя по нему группировка). Нужна консоль которая покажет реальный запрос который СКД отправляет к БД. |
|||
14
Гена
гуру
06.02.24
✎
10:36
|
Коллеги, у меня два теоретических вопроса.
1. Это нормально в (3): ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&ДатаНачала, ) ? Не надо разве здесь ставить &ДатаОкончания ? 2. Это нормально в (7): ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный ? Разве не надо добавить .СрезПоследних(&ДатаОкончания, ) ? |
|||
15
VladZ
06.02.24
✎
15:00
|
(0) СКД - это некая "магическая шляпа", для которой текст запроса всего лишь "часть фокуса". Нужно смотреть остальные настройки. Это во-первых.
Во-вторых, СКД думает, что он умнее всех и пытается что-то там оптимизировать. Не всегда корректно. Попробуй разбить запрос. |
|||
16
gul_Sayan
06.02.24
✎
16:06
|
(0) Если ЗУП 3 то лучше пользоваться РС КадроваяИсторияСотрудниковИнтервальный. При наличии временного перемещения срез последних не верный результат выдаст.
|
|||
17
Web00001
06.02.24
✎
16:35
|
(15)>Во-вторых, СКД думает, что он умнее всех
И надо сказать, что в 99% случаев он прав |
|||
18
Масянька
06.02.24
✎
20:42
|
(14) 1. В данном случае, не принципиально.
2. Нету в КадроваяИсторияСотрудниковИнтервальный среза последних... Нету! |
|||
19
Волшебник
06.02.24
✎
20:54
|
(14) Не создавайте нам теорию сверх платформы.
|
|||
20
Волшебник
06.02.24
✎
21:08
|
Платформа предоставляет РегистрыСведений и СрезПоследних по измерениям с полем Период
Всё остальное гибкое и настраиваемое. специально делают дубли данных, чтобы быстрее доставать. |
|||
21
Гена
гуру
06.02.24
✎
21:34
|
(20) Возьмём обычный неинтервальный РС.
Пусть есть бессрочный Приём на работу: 01.01.2024 ... бухгалтер ... И есть временный кадровый перевод: 15.01.2024 ... программист ... действует до 01.02.2024 Срез последних на сегодня 06 февраля по какому периоду сработает? Не выдаст ли он по периоду регистрации записей ошибочно, что сегодня программист, а не правильное бухгалтер? |
|||
22
Гена
гуру
06.02.24
✎
21:39
|
Я к чему. Не есть ли разница между СКД и консолью, что в одном случае СрезПоследних работает по периоду регистрации, а в другом - по периоду действия?
|
|||
23
Волшебник
06.02.24
✎
21:40
|
(22) Если есть различия в параметрах, то возможна разница в результате. А к чему вопрос-то?
|
|||
24
Гена
гуру
06.02.24
✎
21:43
|
(23) Да это я для себя. Для понимания )
|
|||
25
Волшебник
06.02.24
✎
21:49
|
(24) 👍 Я вам больше скажу. Нормальная система иногда специально отвечает по-другому на один и тот же запрос, иначе кажется идиотом.
|
|||
26
Масянька
07.02.24
✎
15:05
|
Я продолжу...
Сделала новый отчет СКД с тем же (!!!!) запросом. Правильная должность выводиться! Где эти настройки и как их грохнуть?! |
|||
27
Буковка
07.02.24
✎
15:10
|
(26) а заменить отчет на новый нельзя? возможно, дело было в кэше
|
|||
28
kir-g
07.02.24
✎
15:24
|
(27) Скорее всего отчет есть в Дополнительных, а новый отчет открывают как внешний отчет и если названия совпадают такая дичь может творится
|
|||
29
gul_Sayan
07.02.24
✎
15:29
|
(26) Есть такая штука если внешний отчет уже подключен к базе то запрос берётся из него, нужно либо заменять подключенный на новый или называть его по новому.
|
|||
30
Масянька
07.02.24
✎
15:45
|
(28) (29) Непереводимая игра слов с использованием местных идиоматических выражений ©
Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |