Имя: Пароль:
1C
 
Задваивается результат в запросе по регистру в ЗУП
, ,
0 Mary01
 
04.03.19
14:52
Привет всем!

Пишу такой запрос в ЗУП 3.1:

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

Получаю результат из двух одинаковых строк. ФизическоеЛицо - Иванова А.А., ВидСобытия - Увольнение.
Почему так? Человек действительно был принят и уволен два раза. Но в срезе последних должно отображаться только последнее событие... или нет?
1 2S
 
04.03.19
14:54
(0) В топку такой запрос и метод получения.
Вас ждет неприятный сюрпрайз.

Тему не раз мусолили, в поиск
2 Alexandr_U1982
 
04.03.19
14:55
(0)Потому что по физлицу "Иванова А.А" у вас два сотрудника.
Она два раза принималась на работу и два раза увольнялась.
3 Mary01
 
04.03.19
14:56
(2) так и есть, но это же одно физлицо, и я выбираю именно физлицо. если бы я выбирала сотрудника, тогда понятно
4 Mary01
 
04.03.19
14:57
(1) вот я и получила этот сюрпрайз. спасибо за наводку, действительно поиском нашла способы решения.
но все же интересно почему так
5 Alexandr_U1982
 
04.03.19
15:03
(3) Вместо "ВЫБРАТЬ" надо "ВЫБРАТЬ РАЗЛИЧНЫЕ"
6 Mary01
 
04.03.19
15:09
(5) получилось. но, теперь если изменить дату, то запрос выдает опять две строки с этим физлицом, а ВидСобытия - в одной строке Перемещение, в другой Увольнение.
7 Alexandr_U1982
 
04.03.19
15:18
(6)Что хотите получить-то в итоге?
Запрос все верно выдает)
8 Mary01
 
04.03.19
15:19
(7) Написала по-другому

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

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

ИМЕЮЩИЕ
    КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
9 Mary01
 
04.03.19
15:20
(7) почему верно-то?
10 Alexandr_U1982
 
04.03.19
15:21
(8) В ЗУП 3.1 для получения кадровых данных по сотрудникам (или физлицам) нужно использовать процедуры/функции командного интерфейса.
Зачем вам такой запрос?
11 Alexandr_U1982
 
04.03.19
15:22
(9) Ну как почему? Что вы запросили, то он вам и вернул...
12 Mary01
 
04.03.19
15:24
(10) надо написать отчет по уволенным сотрудникам с датами увольнения, но при этом надо, чтобы в отчет не попадали сотрудники, которые были уволены, но приняты снова. этот запрос нужен для того, чтобы выбрать не уволенных физлиц, чтобы далее выводить отчет, исключая их.
13 Mary01
 
04.03.19
15:25
(11) если бы я запросила вывести сотрудников, тогда было бы понятно, что строк две, т.к. сотрудника 2. но это одно физлицо, и поэтому мне непонятно, почему запрос выдает две строки, а не одну
14 Mary01
 
04.03.19
15:26
(10) как эти процедуры использовать в запросе?
15 sqr4
 
04.03.19
15:27
(8) Кадровое перемещение которое на определенный срок, не отобразится помоему. Надо Интервальный регистр использовать
16 Alexandr_U1982
 
04.03.19
15:28
17 sqr4
 
04.03.19
15:28
+ (15) ХОтя нахрен оно тут)
18 Mary01
 
04.03.19
15:36
(16) спасибо, про представления стало понятнее, только непонятно как в консоли отладить такой запрос (например если взять запрос из типового отчета Кадровая история сотрудников). он пустой
19 Alexandr_U1982
 
04.03.19
15:40
(18)В консоли никак, нужно делать внешний отчет и отлаживать в нем.
20 sqr4
 
04.03.19
15:56
(18) Там запросы как у Льва Николаевича)
21 Mary01
 
04.03.19
15:58
(20) понятнее стало пока лишь то, что есть такой механизм и что надо учиться его использовать, вместо обычных запросов)
22 hhhh
 
04.03.19
16:20
(13) срез последних выдает срез по каждому измерению.

поэтому проверьте, действительно у вас там одно измерение в РегистрСведений.КадроваяИсторияСотрудников. Может в нем несколько измерений.
23 Mary01
 
04.03.19
20:05
(22) "срез последних выдает срез по каждому измерению" - раньше каким-то образом получала запросом только по нужному измерению и все работало как надо...
в регистре 3 измерения - физлицо, сотрудник и еще одно
24 palsergeich
 
04.03.19
23:16
(23) ну если делать не по науке и получить ожидаемый результат, то это не значить что через месяц все будет работать так как надо.
Большая беда - отладка разработок на пустой или почти пустой базе, потом при реальном учете вылезает очень много сёпрайзов.
25 hhhh
 
05.03.19
00:22
(23) ну если Сотрудник, то чего вы ждете? У вас 2 сотрудника, должны быть 2 записи.
26 Бертыш
 
05.03.19
04:38
(0) Последнее для уникальной комбинации измерений.
27 catena
 
05.03.19
05:09
(23)Этого не может быть, потому что быть этого не может. Такая клевета на платформу должна подтверждаться скринами и указанием релиза. Всегда штатный срез последних выдавал срез по всем наборам измерений.
28 SleepyHead
 
гуру
05.03.19
05:20
(0) Человек был уволен два раза - значит, одному физлицу соответствует два сотрудника (это другой справочник). А вы в запросе выбираете только физлицо.

Выбирайте сотрудника и не путайте справочник ФизическиеЛица и Сотрудники.

Сотрудник = физическое лицо +  договор (трудовой или ГПХ), одно физлицо может относится к одному, двум и более сотрудникам, каждому из которых соответствует свой уникальный табельный номер.
29 Mary01
 
05.03.19
07:18
(28) выбираю именно физлицо, т.к. по ТЗ надо отобрать именно по уволенным физлицам. если человека уволили и приняли снова как другого сотрудника, то его выводить в отчет не надо (специально уточнила у бухгалтера)
30 Мимохожий Однако
 
05.03.19
07:24
Добавь дату регистратора и выбери с максимальной датой. Пакетный запрос никто не отменял
31 Йохохо
 
05.03.19
08:00
(29) Вы выбираете !строки! основной таблицы и из них физлицо
32 Mary01
 
05.03.19
08:18
(30) так и сделала (8)
33 Мимохожий Однако
 
05.03.19
08:27
(32) Там Период и не дата регистратора
34 Mary01
 
05.03.19
08:34
(33) да, потому что нужно дату увольнения вывести (а она может отличаться от даты документа-регистратора)
35 Мимохожий Однако
 
05.03.19
08:47
(34) Если дата увольнения есть в регистраторе, то можно привязаться в последней таблице и вытащить.
А  если в параметрах идёт отбор только по одному физическому лицу, то достаточно отсортировать по убыванию и взять только первую запись. Это как запасной вариант.