|
СрезПоследних в запросе выводит задвоения | ☑ | ||
---|---|---|---|---|
0
wladimir90
17.01.12
✎
12:44
|
Всем привет. Есть переодический (день) регистр сведений. Так получилось что в нем есть несколько записей на одну и ту же дату с одним и тем же сотрудником. И как результат в срезе последних вместо одного Иванова, выходит два Иванова, что вызывает понятные проблемы. Как можно в запросе настроить выборку так, что бы выбиралась последняя запись среза последних по сотруднику? Пока все что придумал - группировка, где все поля кроме сотрудника - Максимум. Но это мягко говоря неверно...
|
|||
1
vmv
17.01.12
✎
12:46
|
это фантастика или вы чего-то недоговариваете
|
|||
2
НЕА123
17.01.12
✎
12:46
|
(1)
измерения не только сотрудник. |
|||
3
wladimir90
17.01.12
✎
12:50
|
(2) Точно... Организация все спутала. Но тогда вообще все непонятно - в текущей задаче мне нужны данные без контекста организации, но последняя запись.
|
|||
4
Wobland
17.01.12
✎
12:51
|
(3) ВЫБРАТЬ ПЕРВЫЕ 1 УПОРЯДОЧИТЬ ПО Период Убыв?
|
|||
5
sergeev-ag-1977
17.01.12
✎
12:53
|
Условие на Активность ? Смотрели ?
|
|||
6
wladimir90
17.01.12
✎
12:56
|
(5) Хм. Не слышал о таком. Что за активность?
(4) тогда будет вообще 1 запись, а у меня идет выборка пары десятков записей, некоторые из которых задвоены по организации... Может так проще будет... ВЫБРАТЬ МАКСИМУМ(ЕСТЬNULL(ДанныеСотрудниковСрезПоследних.Подразделение, ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка))) КАК Подразделение, МАКСИМУМ(ЕСТЬNULL(ДанныеСотрудниковСрезПоследних.График, ЗНАЧЕНИЕ(Справочник.Графики.ПустаяСсылка))) КАК График, МАКСИМУМ(ЕСТЬNULL(ДанныеСотрудниковСрезПоследних.Оклад, 0)) КАК Оклад, ДанныеСотрудниковСрезПоследних.Сотрудник.Ссылка КАК Ссылка ИЗ РегистрСведений.ДанныеСотрудников.СрезПоследних КАК ДанныеСотрудниковСрезПоследних ГДЕ ДанныеСотрудниковСрезПоследних.Сотрудник.ПометкаУдаления = ЛОЖЬ И (ДанныеСотрудниковСрезПоследних.Сотрудник.ДатаУвольнения = &ПустаяДата ИЛИ ДанныеСотрудниковСрезПоследних.Сотрудник.ДатаУвольнения > &ОтборПоУвольнению) СГРУППИРОВАТЬ ПО ДанныеСотрудниковСрезПоследних.Сотрудник.Ссылка |
|||
7
ChAlex
17.01.12
✎
12:57
|
(4) Ну тогда вообще-то получите только одного сотрудника. В данном варианте без выбора Организации на все случаи решения нет. Однозначный варианты даст группировка как вы и делаете. Но данные можно получить не те которые ожидаете, если для одного и того же сотрудника по разным организациям разные данные
|
|||
8
vmv
17.01.12
✎
12:58
|
(6) у меня голова болит, сократи код на 80% - это реально
|
|||
9
ChAlex
17.01.12
✎
12:58
|
Другого не дано независимо даже на бумаге
|
|||
10
Anita_Rost
17.01.12
✎
13:04
|
(0) Тоже считаю, что не верно.
Можно в запросе - упорядочить дату по убыванию; - сделать группировку по сотруднику (Закладка "Итоги" в конструкторе запросов) После выполнения запроса: - сделать выборку по сотрудникам - Сделать выборку по детальным записям, через оператор "если" получить первую запись |
|||
11
Ardi
17.01.12
✎
13:05
|
Выбрать из этого регистра
Сотрудник; МАКСИМУМ(Период). Потом объединить с этой табличкой регистр МаксимумПериод = Период и Сотрудник = Сотрудник. Тогда задвоятся только те, кто два раза одной датой. После этого уже можно макс. оклад. |
|||
12
Anita_Rost
17.01.12
✎
13:07
|
(10) Т.е. будет:
ВыборкаСотрудники = Результат.Выбрать(СпособВыборки); Пока выборкаСотрудники.Следующий() Цикл ВыборкаДетали = ВыборкаСотрудники.Выбрать(СпособВыборки); Если ВыборкаДетали.Следующий Тогда <тело модуля> КонецЕсли; КонецЦикла |
|||
13
wladimir90
17.01.12
✎
13:14
|
Выбрать выборку. А это идея. Спасибо.
|
|||
14
НЕА123
17.01.12
✎
14:01
|
(11)
из (0) >несколько записей на одну и ту же дату с одним и тем же сотрудником |
|||
15
Shurjk
17.01.12
✎
14:11
|
хмм, какая оживленная дискуссия развернулась по поводу того как выбрать из нескольких записей одну. Но меня как бы немного другой вопрос бы на месте автора волновал бы - запись с какой организацией является наиболее правильной.
|
|||
16
Zaval
17.01.12
✎
14:22
|
(0) :) СрезПоследних здесь не подходит.
Не лениться. Клавиатуру в руки - и написать этакий "СрезПоследнихПоОдномуИзмерению". И чем скорее - тем лучше. В ЗУПе с этим связано изрядно ошибок и тонких мест. Нпр, после повторного приема на работу такое полезет :) |
|||
17
cw014
17.01.12
✎
14:24
|
(15) +1 - мы такое вообще бабахали на прямых запросах к скулю. Элементарщина для 1 класса
(16) +1 просто за "СрезПоследнихПоОдномуИзмерению". Я бы еще добавил "СрезПоследнихСамыйПравильныйПоОдномуИзмерению" |
|||
18
Buster007
17.01.12
✎
14:26
|
как вообще такие ситуации появляются?) неужели нельзя сказать заказчику о том, что это неправильно и не делать какие-то рандомные выборки.
|
|||
19
Shurjk
17.01.12
✎
14:28
|
(18) А это вопросы к тем кто базу проектировал.
|
|||
20
cw014
17.01.12
✎
14:31
|
ИМХО либо ТЗ не верное либо одно из двух, так как у каждой организации на этого сотрудника два различных вида данных (графики, подразделения и т.д.) Тебе какие именно нужны? Ведь не важно когда они сделаны - они для этих ресурсов различные
|
|||
21
cw014
17.01.12
✎
14:31
|
Если непонятно, могу разжевать
|
|||
22
Zaval
17.01.12
✎
16:10
|
(18) Работа по совместительству в двух Организациях. Что странного?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |