|
СрезПоследних замучал меня. Помогитев СКД | ☑ | ||
---|---|---|---|---|
0
temsa
21.01.14
✎
23:05
|
Отлично знаю что Срезпоследних это прежде всего срез различных.
Почему-то всегда я мучаюсь с выводом именно последних записей по конкретным измерениям. Например есть запрос: ВЫБРАТЬ ПитаниеСотрудниковСрезПоследних.Сотрудник, ПитаниеСотрудниковСрезПоследних.Организация, ПитаниеСотрудниковСрезПоследних.ДатаВремя, РаботникиОрганизацийСрезПоследних.Должность ИЗ РегистрСведений.ПитаниеСотрудников.СрезПоследних(&Период, ) КАК ПитаниеСотрудниковСрезПоследних Правое СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних ПО ПитаниеСотрудниковСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Физлицо ГДЕ ПитаниеСотрудниковСрезПоследних.ПериодПитания = &ПериодПитания Группирую по организациям. Но если сотрудник поменял должность то у меня данных сотрудник выходится дважды. Как можно избавится от этого? Обычно берут максимальный период. У меня иногда это не получается. Есть ли простой универсальный подход к этой проблеме? |
|||
1
sapphire
21.01.14
✎
23:08
|
(0)
1. Параметр обзови по-другому 2. подумай |
|||
2
mistеr
21.01.14
✎
23:11
|
Дважды выходит в каком срезе? :)
И вообще, поясни, что хочешь получить на выходе, и приведи структуру своего регистра. |
|||
3
temsa
21.01.14
✎
23:16
|
Делаю так не помогает
ВЫБРАТЬ ПитаниеСотрудниковСрезПоследних.Сотрудник, ПитаниеСотрудниковСрезПоследних.Организация, ПитаниеСотрудниковСрезПоследних.ДатаВремя, РаботникиОрганизацийСрезПоследних.Должность ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПитаниеСотрудников.СрезПоследних( &Период, Период В (ВЫБРАТЬ МАКСИМУМ(РаботникиОрганизацийСрезПоследних.Период) ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, ) КАК РаботникиОрганизацийСрезПоследних)) КАК ПитаниеСотрудниковСрезПоследних ПО (ПитаниеСотрудниковСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Физлицо) ГДЕ ПитаниеСотрудниковСрезПоследних.ПериодПитания = &ПериодПитания |
|||
4
temsa
21.01.14
✎
23:20
|
(2)
РС- "ПитаниеСотрудников" Измерения = Организация, ФизЛицо, ПериодПитания Ресурс = ДатаПитания РС- "РаботникиОрганизаций" Измерения = (как минимум 4-5) Ресурсы = (тоже 3-4 шт) Но "должность" как раз ресурс. Мне нужно вывести список физлиц по организациям всех питающихся но с их должностями на определенную дату и период питания. |
|||
5
sapphire
21.01.14
✎
23:23
|
(4) Ошибка в запросе к РаботникиОрганизаций для совместителей, вернее там вообще сложнее
|
|||
6
temsa
21.01.14
✎
23:28
|
Хотя я знаю что в запросах и в СКД я не гуру, считаю что для РС не хватает в запросах чего-то что позволяет вытаскивать последнюю запись по некотррому отбору а не все различные.
Я вот с нетерпением жду это в 1с8.5 :))) |
|||
7
m-serg74
21.01.14
✎
23:32
|
(6) не понятно
в (4) /РС- "ПитаниеСотрудников" Измерения = Организация, ФизЛицо, ПериодПитания/ а в (3) /ПитаниеСотрудниковСрезПоследних.Сотрудник/ |
|||
8
temsa
21.01.14
✎
23:37
|
(7) Пардон ФизЛицо = Сотрудник не верно описал измерение.
|
|||
9
mistеr
21.01.14
✎
23:46
|
(4) ПериодПитания это месяц, а ДатаПитания - день, или как?
Должность нужно взять на какую дату? |
|||
10
temsa
21.01.14
✎
23:48
|
(9)Период питание = (завтрак, обед ужин)
|
|||
11
temsa
21.01.14
✎
23:49
|
ДатаПитания = дата и время конкретно когда он провел карточку в картридере в столовой.
|
|||
12
temsa
21.01.14
✎
23:50
|
и должность на дату отчета ну это "Период"
|
|||
13
temsa
22.01.14
✎
00:12
|
есть варианты подскажите?
|
|||
14
mistеr
22.01.14
✎
00:15
|
(11) Все еще не въезжаю до конца в структуру, но думаю нужно так. Получить в ВТ список интересующих людей из ПитаниеСотрудников, и подставить в параметры РаботникиОрганизаций.СрезПоследних(&Период, Сотрудник В (...))
Потом РегистрСведений.ПитаниеСотрудников.СрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РаботникиОрганизаций.СрезПоследних |
|||
15
Dethmont
22.01.14
✎
00:23
|
(13) ВЫБРАТЬ Сотрудник, Должность ПОМЕСТИТЬ ВТ ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, )
; ВЫБРАТЬ ПС.Сотрудник, ПС.Организация, ПС.ДатаВремя, ВТ.Должность ИЗ РегистрСведений.ПитаниеСотрудников.СрезПоследних(&Период,) КАК ПС ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ ПО ПС.Сотрудник = ВТ.Сотрудник |
|||
16
temsa
22.01.14
✎
00:40
|
(15) Спасибо. Все проделал как тут. НО все равно двойные строки.
"ФИО" Системный диспетчер производства 20.01.2014 5:42:29 "ФИО" <> 20.01.2014 5:42:29 |
|||
17
Dethmont
22.01.14
✎
00:44
|
Совместители?
ВЫБРАТЬ Сотрудник.ФизЛицо КАК Сотрудник, Должность ПОМЕСТИТЬ ВТ ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, ) ; ВЫБРАТЬ ПС.Сотрудник.ФизЛицо КАК Сотрудник, ПС.Организация, ПС.ДатаВремя, ВТ.Должность ИЗ РегистрСведений.ПитаниеСотрудников.СрезПоследних(&Период,) КАК ПС ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ ПО ПС.Сотрудник.ФизЛицо = ВТ.Сотрудник |
|||
18
Dethmont
22.01.14
✎
00:45
|
Организация = &Организация
|
|||
19
temsa
22.01.14
✎
00:47
|
ДА нет просто один сотрудник поменял должность.
Или перешел из одной организации в другой. |
|||
20
temsa
22.01.14
✎
00:50
|
(18) Мне нужно по всем организациям.
|
|||
21
Dethmont
22.01.14
✎
00:50
|
Это вернет срез последних по сотруднику - т.е. его последнюю должность на дату &Период
А перевод в другую организацию это уже другой сотрудник! |
|||
22
temsa
22.01.14
✎
00:59
|
Всем спасибо.
Помогло такой вариант ВЫБРАТЬ РаботникиОрганизацийСрезПоследних.Организация, РаботникиОрганизацийСрезПоследних.Физлицо, РаботникиОрганизацийСрезПоследних.Должность ПОМЕСТИТЬ ВТ ИЗ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, ) КАК РаботникиОрганизацийСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПитаниеСотрудниковСрезПоследних.Сотрудник, ПитаниеСотрудниковСрезПоследних.Организация, ПитаниеСотрудниковСрезПоследних.ДатаВремя, ВТ.Должность ИЗ РегистрСведений.ПитаниеСотрудников.СрезПоследних( &Период, Период = &Дата И ПериодПитания = &ПериодПитания) КАК ПитаниеСотрудниковСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ ПО ПитаниеСотрудниковСрезПоследних.Сотрудник = ВТ.Физлицо И ПитаниеСотрудниковСрезПоследних.Организация = ВТ.Организация Хотя не могу понять почему если сотрудник в одной и той же организации если поменяет должность то в отчете не дублируется? |
|||
23
Dethmont
22.01.14
✎
01:11
|
ФизЛицо одно! Сотрудников может быть много!
|
|||
24
catena
22.01.14
✎
08:00
|
(22)Потому что Организация тоже измерение. СрезПоследних берет последние записи по ключевым полям - т.е. по измерениям. Если у регистра РаботникиОрганизации измерения физлицо, организация, приказ, то именно эти различные наборы и будут срезаться. Если необходим срез последних по неполному набору измерений, придется самостоятельно группировать таблицу по максимальному периоду.
|
|||
25
m-serg74
22.01.14
✎
08:30
|
(22)
/Помогло такой вариант/ / ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ ПО ПитаниеСотрудниковСрезПоследних.Сотрудник = ВТ.Физлицо/ гениально, и как это интересно помогло? :) |
|||
26
temsa
22.01.14
✎
09:19
|
(23) Это у меня самописка. Спр сотрудников вообще нет в конфе.
(24) Это все понятно. Но при увольнении и при перемещении Измерения Физлицо и организация не меняется. Что меня удивило то что при включении в условие организации несмотря на то что есть похожие записио строки не дублируются. (25) Просто перестало выходить дубли. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |