|
Запрос с регистра сведений выбрать Максимальное состояние | ☑ | ||
---|---|---|---|---|
0
Geroy
01.12.14
✎
15:27
|
Привет всем, есть запрос
"ВЫБРАТЬ | СостоянияСотрудниковСрезПоследних.Период, | СостоянияСотрудниковСрезПоследних.Сотрудник, | СостоянияСотрудниковСрезПоследних.Состояние, | СостоянияСотрудниковСрезПоследних.ДействуетДо |ИЗ | РегистрСведений.СостоянияСотрудников.СрезПоследних КАК СостоянияСотрудниковСрезПоследних |ГДЕ | СостоянияСотрудниковСрезПоследних.Сотрудник = &Сотрудник" ; Нужно выбрать Максимальное Состояние на текущую дату [URL=http://radikal.ru/fp/54516b4f6768420c868e212647fd06c4][IMG]http://i003.radikal.ru/1412/32/a702c13e793bt.jpg[/IMG][/URL] Не могу разобраться как правильно сделать запрос |
|||
1
Geroy
01.12.14
✎
15:28
|
||||
2
butterbean
01.12.14
✎
15:28
|
что значит "Максимальное Состояние на текущую дату" ??
|
|||
3
Chai Nic
01.12.14
✎
15:28
|
Как состояние может быть максимальным?
|
|||
4
Geroy
01.12.14
✎
15:33
|
ВЫБРАТЬ
| СостоянияСотрудниковСрезПоследних.Период, | СостоянияСотрудниковСрезПоследних.Сотрудник, | СостоянияСотрудниковСрезПоследних.Состояние, | СостоянияСотрудниковСрезПоследних.ДействуетДо |ИЗ | РегистрСведений.СостоянияСотрудников.СрезПоследних(&Дата, ) КАК СостоянияСотрудниковСрезПоследних |ГДЕ | СостоянияСотрудниковСрезПоследних.Сотрудник = &Сотрудник" ; Делал вот так сказали, что не правильно Нужно с регистра выбрать последнее значение Состояние у сотрудника |
|||
5
Geroy
01.12.14
✎
15:34
|
(4) Как вытащить только последнее одно значение из Регистра Сведений
|
|||
6
HEKPOH
01.12.14
✎
15:37
|
выбрать первые 1 с упорядочить по период убыв
|
|||
7
Господин ПЖ
01.12.14
✎
15:41
|
(4) сотрудника тоже в вирт. таблицу запихай
|
|||
8
Geroy
01.12.14
✎
15:43
|
(7) знаю что надо 2 таблицы и потом МАКСИМУМ выбрать
но не знаю как это написать |
|||
9
butterbean
01.12.14
✎
15:44
|
(8) нужно просто написать РегистрСведений.СостоянияСотрудников.СрезПоследних(&Дата, Сотрудник = &Сотрудник)
|
|||
10
Enders
01.12.14
✎
15:55
|
1.Я бы сначала выбрал все актуальные
Это у которых значение "период" меньше текущей даты и "действует до" больше текущей даты или равно пустой дате. 2.Потом это всё сгруппировал по сотруднику и получил максимальный период 3.И напоследок к 1, внутренним присоединил 2 по сотруднику и периоду. |
|||
11
Geroy
01.12.14
✎
15:56
|
(9) и что измениться? тоже самое что я выше написал
но это все не то |
|||
12
butterbean
01.12.14
✎
15:58
|
(11) >> и что измениться?
перестанут говорить что это неправильно |
|||
13
Kamas
01.12.14
✎
15:58
|
(11) не нужно в запросе писать то что 1с могет и сама сделать, если не нужно нечего сверхъестественного то срез последних самое оно
|
|||
14
Enders
01.12.14
✎
16:02
|
(12),(13) Особенно весело если статус - это измерение)
|
|||
15
Geroy
01.12.14
✎
16:04
|
(10)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СостоянияСотрудниковСрезПоследних.Период, | СостоянияСотрудниковСрезПоследних.Сотрудник, | СостоянияСотрудниковСрезПоследних.Состояние, | СостоянияСотрудниковСрезПоследних.ДействуетДо |ИЗ | РегистрСведений.СостоянияСотрудников.СрезПоследних КАК СостоянияСотрудниковСрезПоследних |ГДЕ | СостоянияСотрудниковСрезПоследних.Сотрудник = &Сотрудник" | И СостоянияСотрудниковСрезПоследних.Период < &Период | И СостоянияСотрудниковСрезПоследних.ДействуетДо > &ДействуетДо" ; Запрос.УстановитьПараметр("Сотрудник",ВыборкаДетальныеЗаписи.Сотрудник); Запрос.УстановитьПараметр("Период",ТекущаяДата()); Запрос.УстановитьПараметр("ДействуетДо",ТекущаяДата()); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Сначала сделал вот так Но мне сказали что нужно сделать через 2 таблицы и выбрать МАКСИМУМ, если не трудно подскажи как именно |
|||
16
Geroy
01.12.14
✎
16:05
|
(14) Состояние это ресурс
|
|||
17
dk
01.12.14
✎
16:07
|
нарисуй пример
исходные строки ... нужно получить таблицу вида ... |
|||
18
singlych
01.12.14
✎
16:08
|
(15) "ВыборкаДетальныеЗаписи.Сотрудник" - Запрос в цикле по выборке предыдущего запроса?
|
|||
19
HEKPOH
01.12.14
✎
16:08
|
(15) "Но мне сказали что нужно сделать через 2 таблицы и выбрать МАКСИМУМ..."
кто сказал? |
|||
20
Enders
01.12.14
✎
16:08
|
(16) Хоть что-то радует) А кто говорит то?
(15) А зачем две переменных с одним и тем же значением? Почему нельзя использовать 1 параметр "Период" Ну а так я уже описал В (15) твою выборку помещаешь в ВТ1 Дальше в этом же запросе выбираешь сотрудника и период из ВТ1, группируешь по сотруднику и период в максимум. Помещаешь в ВТ2 Соединяешь ВТ1 и ВТ2 внутренним по сотруднику и периоду. Усё |
|||
21
Geroy
01.12.14
✎
16:10
|
(18) Да
(20) Всё верно вы описали , но я не знаю как сделать Можно пример какой нибудь , чтоб близко был приближен к моему |
|||
22
Enders
01.12.14
✎
16:13
|
(21) За запрос в цикле, обычно расстреливают)
Вы лучше пишите, что у вас не получается, а то как-то лениво делать за вас работу) |
|||
23
Geroy
01.12.14
✎
16:19
|
(22)не получается Конструктором запроса все это реализовать
|
|||
24
Enders
01.12.14
✎
16:51
|
(23) Не получается конструктором - пиши руками.
Что конкретно не получается? Поместить первую выборку в ВТ Выбрать из Вт, Сгруппировать? |
|||
25
vhl
01.12.14
✎
17:01
|
зависит от того что есть измерения, а что - ресурсы
|
|||
26
Enders
01.12.14
✎
17:17
|
(25) Судя по (16)
Период, Сотрудник - измерения; Статус - ресурс; ДатаДо - или реквизит, или ресурс. |
|||
27
Geroy
02.12.14
✎
08:11
|
(26) ДействуетДо ресурс
|
|||
28
Geroy
02.12.14
✎
09:23
|
(26) вроде бы разобрался
ВЫБРАТЬ СостоянияСотрудниковСрезПоследних.Период, СостоянияСотрудниковСрезПоследних.Сотрудник, СостоянияСотрудниковСрезПоследних.Состояние, СостоянияСотрудниковСрезПоследних.ДействуетДо ПОМЕСТИТЬ BT1 ИЗ РегистрСведений.СостоянияСотрудников.СрезПоследних КАК СостоянияСотрудниковСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СостоянияСотрудников.Сотрудник, МАКСИМУМ(СостоянияСотрудников.Период) КАК Период ПОМЕСТИТЬ BT2 ИЗ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников СГРУППИРОВАТЬ ПО СостоянияСотрудников.Сотрудник ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ BT2.Период, BT1.Сотрудник, BT1.Состояние, BT1.ДействуетДо ИЗ BT1 КАК BT1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ BT2 КАК BT2 ПО BT1.Период = BT2.Период И BT1.Сотрудник = BT2.Сотрудник Выбирает последнее состояние Сотрудника |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |