|
Помогите: слепить один с запрос из двух запросов | ☑ | ||
---|---|---|---|---|
0
dft2014
19.03.17
✎
00:33
|
Подскажите, как два запроса соединить правильно в один. В одном запросе я получаю кадровую историю сотрудника, а в другом - его состояние. Как мне получить эти данные одним запросом?
Запрос1: ВЫБРАТЬ КадроваяИсторияСотрудниковСрезПоследних.Сотрудник, КадроваяИсторияСотрудниковСрезПоследних.Регистратор, КадроваяИсторияСотрудниковСрезПоследних.Должность, ЕСТЬNULL(КадроваяИсторияСотрудниковСрезПоследних.Подразделение, """") КАК Подразделение, КадроваяИсторияСотрудниковСрезПоследних.Период, КадроваяИсторияСотрудниковСрезПоследних.КоличествоСтавок, КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости, КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.Код КАК ТабельныйНомер, КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.Наименование КАК ФИО ИЗ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ), ) КАК КадроваяИсторияСотрудниковСрезПоследних ГДЕ ТИПЗНАЧЕНИЯ(КадроваяИсторияСотрудниковСрезПоследних.Регистратор) <> ТИП(Документ.Увольнение) И КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = &Сотрудник Запрос2: ВЫБРАТЬ СостоянияСотрудников.Сотрудник КАК Сотрудник, СостоянияСотрудников.Состояние КАК Состояние, СостоянияСотрудников.Период КАК Период ИЗ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников ГДЕ СостоянияСотрудников.Период В (ВЫБРАТЬ МАКСИМУМ(СредСост.Период) ИЗ РегистрСведений.СостоянияСотрудников КАК СредСост ГДЕ СредСост.Период <= &НачалоПериода И СостоянияСотрудников.Сотрудник = СредСост.Сотрудник) |
|||
1
dft2014
19.03.17
✎
00:34
|
Т.е. из Запроса2 мне надо получить только поле "Состояние".
|
|||
2
dft2014
19.03.17
✎
00:50
|
Ап!
|
|||
3
Dmitry77
19.03.17
✎
00:58
|
можно Объеъденить (это если лень запросы переписывать) потом сгрупировать.
можно левое соединение сделать Можно посмотреть как в типовых запросах сделано. |
|||
4
dft2014
19.03.17
✎
01:08
|
(3) Типовые смотреть в ЗУП8, в качестве примера, это утопия ((
|
|||
5
ВРедная
19.03.17
✎
01:28
|
(4) И первые предложенные два варианта тебе тоже не подошли?
|
|||
6
dft2014
19.03.17
✎
01:35
|
(5) Если бы я смогла, то я бы не написала на форум...
|
|||
7
alexoren
19.03.17
✎
01:36
|
Пакет запроса никак?
|
|||
8
alexoren
19.03.17
✎
01:39
|
Вероятно самым оптимальным в данном случае будет пакет запрос. МенеджерВременныхТаблиц в руки и вперёд )
|
|||
9
dft2014
19.03.17
✎
01:44
|
(7) Как?
|
|||
10
alexoren
19.03.17
✎
01:44
|
Но можно просто соединение по Сотруднику сделать, и ненапрягайтесь
|
|||
11
alexoren
19.03.17
✎
01:45
|
Какая конфигурация? ЗИП?
|
|||
12
dft2014
19.03.17
✎
01:48
|
(11) ЗУП 3.1.2.121. Там поменялась структура регистра "Состояние сотрудников", добавлено измерение Год.
|
|||
13
Da D
19.03.17
✎
01:49
|
без фото не взлетит, а ты там кем, вызовите специалист - вы где ?
|
|||
14
alexoren
19.03.17
✎
01:54
|
Щас гляну
|
|||
15
dft2014
19.03.17
✎
01:56
|
Вот я что-то состряпала, но что-то некрасиво как-то получается, на мой взгляд. Подскажите, как правильно сделать:
ВЫБРАТЬ КадроваяИсторияСотрудниковСрезПоследних.Сотрудник, КадроваяИсторияСотрудниковСрезПоследних.Регистратор, КадроваяИсторияСотрудниковСрезПоследних.Должность, ЕСТЬNULL(КадроваяИсторияСотрудниковСрезПоследних.Подразделение, """") КАК Подразделение, КадроваяИсторияСотрудниковСрезПоследних.Период, КадроваяИсторияСотрудниковСрезПоследних.КоличествоСтавок, КадроваяИсторияСотрудниковСрезПоследних.ВидЗанятости, КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.Код КАК ТабельныйНомер, КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо.Наименование КАК ФИО, КадроваяИсторияСотрудниковСрезПоследних.Подразделение.РайонныйКоэффициент ПОМЕСТИТЬ ВТКадрИстория ИЗ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ), ) КАК КадроваяИсторияСотрудниковСрезПоследних ГДЕ ТИПЗНАЧЕНИЯ(КадроваяИсторияСотрудниковСрезПоследних.Регистратор) <> ТИП(Документ.Увольнение) И КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = &Сотрудник ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СостоянияСотрудников.Состояние, ВТКадрИстория.Сотрудник, ВТКадрИстория.Регистратор, ВТКадрИстория.Должность, ВТКадрИстория.Подразделение, ВТКадрИстория.Период, ВТКадрИстория.КоличествоСтавок, ВТКадрИстория.ВидЗанятости, ВТКадрИстория.ТабельныйНомер, ВТКадрИстория.ФИО, ВТКадрИстория.ПодразделениеРайонныйКоэффициент ПОМЕСТИТЬ ВТСостояния ИЗ ВТКадрИстория КАК ВТКадрИстория ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников ПО ВТКадрИстория.Сотрудник = СостоянияСотрудников.Сотрудник ГДЕ СостоянияСотрудников.Период В (ВЫБРАТЬ МАКСИМУМ(СредСост.Период) ИЗ РегистрСведений.СостоянияСотрудников КАК СредСост ГДЕ СредСост.Период <= &НачалоПериода И СостоянияСотрудников.Сотрудник = СредСост.Сотрудник) |
|||
16
alexoren
19.03.17
✎
01:58
|
ВЫБРАТЬ
КадроваяИсторияСотрудниковСрезПоследних.Должность ИЗ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников.СрезПоследних КАК СостоянияСотрудниковСрезПоследних ПО КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = СостоянияСотрудниковСрезПоследних.Сотрудник Вот так соедините. Или тот пакет запроса выполняйте, и выбираете результат из массивов. |
|||
17
alexoren
19.03.17
✎
01:59
|
Этот код в конструктор запроса, там поля необходимые и условия уже по ходу и всё. Либо выполнить пакет запросов. Который вы состряпали. На правильность не смотрел.
|
|||
18
alexoren
19.03.17
✎
02:00
|
Хотя что-то там не так
|
|||
19
dft2014
19.03.17
✎
02:06
|
(16) Спасибо, но у меня ключевым является в запросе именно это условие ниже:
ВЫБРАТЬ СостоянияСотрудников.Сотрудник КАК Сотрудник, СостоянияСотрудников.Состояние КАК Состояние, СостоянияСотрудников.Период КАК Период ИЗ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников ГДЕ СостоянияСотрудников.Период В (ВЫБРАТЬ МАКСИМУМ (СредСост.Период) ИЗ РегистрСведений.СостоянияСотрудников КАК СредСост ГДЕ СредСост.Период <= &НачалоПериода и СостоянияСотрудников.Сотрудник = СредСост.Сотрудник) |
|||
20
alexoren
19.03.17
✎
02:10
|
(19) так я вам только соединение таблиц скинул, вы условия и поля добавьте в него и все
|
|||
21
alexoren
19.03.17
✎
02:18
|
ВЫБРАТЬ
КадроваяИсторияСотрудниковСрезПоследних.Сотрудник, СостоянияСотрудников.Состояние, СостоянияСотрудников.Период ИЗ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников ПО КадроваяИсторияСотрудниковСрезПоследних.Период = СостоянияСотрудников.Период И КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = СостоянияСотрудников.Сотрудник ГДЕ ТИПЗНАЧЕНИЯ(КадроваяИсторияСотрудниковСрезПоследних.Регистратор) <> ТИП(Документ.Увольнение) И КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = &Сотрудник И СостоянияСотрудников.Период В (ВЫБРАТЬ МАКСИМУМ(СредСост.Период) ИЗ РегистрСведений.СостоянияСотрудников КАК СредСост ГДЕ СредСост.Период <= &НачалоПериода И СостоянияСотрудников.Сотрудник = СредСост.Сотрудник) Поля укажите, вроде то что вам нужно |
|||
22
alexoren
19.03.17
✎
02:20
|
Но вообще лучше пакетом )
|
|||
23
dft2014
19.03.17
✎
02:28
|
(21) Вроде результат получается нужный (в консоли по одному сотруднику проверила)! Спасибо!!! Буду тестировать!
|
|||
24
Da D
19.03.17
✎
02:29
|
(23) протестируйте.
|
|||
25
alexoren
19.03.17
✎
02:31
|
(23) не за что )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |