|
ЗУП 3. Получить сотрудников по подразделнию | ☑ | ||
---|---|---|---|---|
0
егаис
03.12.18
✎
20:50
|
На входе имеем организацию, подразделение, датаначала, датаокончания
нужно вернуть сотрудников, работавших в организации и подразделение за указанный период, период работы надо тоже вернуть 1. Вариант 1 ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияСотрудников.НачалоПериода = ПериодНачало; ПараметрыПолученияСотрудников.ОкончаниеПериода = ПериодОкончание; ПараметрыПолученияСотрудников.Организация = Организация; ПараметрыПолученияСотрудников.Подразделение = Подразделение; СотрудникОрганизаций = КадровыйУчет.СотрудникиОрганизации(Ложь, ПараметрыПолученияСотрудников); не канает, нет данных по периоду работы 2. Вариант 2 с выборкой из регистра КадроваяИсторияСотрудниковИнтервальный работает некорректно. |
|||
1
егаис
03.12.18
✎
21:00
|
вариант 3
ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияСотрудников.НачалоПериода = ПериодНачало; ПараметрыПолученияСотрудников.ОкончаниеПериода = ПериодОкончание; ПараметрыПолученияСотрудников.Организация = Организация; ПараметрыПолученияСотрудников.Подразделение = Подразделение; Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц, Истина, ПараметрыПолученияСотрудников); Запрос.Текст = "ВЫБРАТЬ ВТСотрудникиОрганизации.* ИЗ ВТСотрудникиОрганизации КАК ВТСотрудникиОрганизации"; ВТСотрудникиОрганизации = Запрос.Выполнить().Выгрузить(); вроде бы должен отработать, но вижу, что попадают не все сотрудники. Например, сотрудник переведен с 01.08.18 в нужное подразделение.Но он не попадает в результат запроса |
|||
2
егаис
03.12.18
✎
21:13
|
закрываем, глаза замылены, варинат в (1) рабочий
|
|||
3
егаис
06.12.18
✎
09:51
|
подниму тему
столкнулся с неприятным моментом, на примере сотрудник работает в подразделении с 02.09 по 12.09 Если сюда передать датуначала = 12.08.18 и дату окончания 23.09.18 ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияСотрудников.НачалоПериода = ПериодНачало; ПараметрыПолученияСотрудников.ОкончаниеПериода = ПериодОкончание; ПараметрыПолученияСотрудников.Организация = Организация; ПараметрыПолученияСотрудников.Подразделение = Подразделение; то после Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц, Истина, ПараметрыПолученияСотрудников); Запрос.Текст = "ВЫБРАТЬ ВТСотрудникиОрганизации.* ИЗ ВТСотрудникиОрганизации КАК ВТСотрудникиОрганизации"; ВТСотрудникиОрганизации = Запрос.Выполнить().Выгрузить(); данные по сотруднику возвращаются с 02.09.18 по 23.09.18 Т.е. дату начала работы в подразделении определена верно, а вот дату окончания возвращает дату переданного параметра, а не дату окончания работы в подразделении. Кто подскажет? |
|||
4
егаис
06.12.18
✎
10:03
|
может есть другой алгоритм получения периода работы сотрудника в подразделении за указанный диапазон?
|
|||
5
mmmarat
06.12.18
✎
10:30
|
(4) Первая часть у Вас сформирована правильно. Т.е. получили список сотрудников работавших в нужном подразделении в указанный период.
Далее необходимо получить периоды работы сотрудника в этом подразделении. Формируем ВТСотрудникиПериоды с периодами и передаем в процедуру: ОписаниеФильтра = ЗарплатаКадрыПериодическиеРегистры.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиПериоды", "Сотрудник"); ПараметрыПостроения = ЗарплатаКадрыПериодическиеРегистры.ПараметрыПостроенияДляСоздатьВТИмяРегистра(); ЗарплатаКадрыПериодическиеРегистры.СоздатьВТИмяРегистраПериоды("КадроваяИсторияСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ОписаниеФильтра, ПараметрыПостроения, "ВТСотрудникиИнтервалы"); |
|||
6
егаис
06.12.18
✎
10:41
|
не понятно
это должно выглядеть так? ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияСотрудников.НачалоПериода = ПериодНачало; ПараметрыПолученияСотрудников.ОкончаниеПериода = ПериодОкончание; ПараметрыПолученияСотрудников.Организация = Организация; ПараметрыПолученияСотрудников.Подразделение = Подразделение; ОписаниеФильтра = ЗарплатаКадрыПериодическиеРегистры.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиПериоды", "Сотрудник"); ПараметрыПостроения = ЗарплатаКадрыПериодическиеРегистры.ПараметрыПостроенияДляСоздатьВТИмяРегистра(); ЗарплатаКадрыПериодическиеРегистры.СоздатьВТИмяРегистраПериоды("КадроваяИсторияСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ОписаниеФильтра, ПараметрыПостроения, "ВТСотрудникиИнтервалы"); ошибки возникают |
|||
7
егаис
06.12.18
✎
10:42
|
пропустил
ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияСотрудников.НачалоПериода = ПериодНачало; ПараметрыПолученияСотрудников.ОкончаниеПериода = ПериодОкончание; ПараметрыПолученияСотрудников.Организация = Организация; ПараметрыПолученияСотрудников.Подразделение = Подразделение; Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц, Истина, ПараметрыПолученияСотрудников); ОписаниеФильтра = ЗарплатаКадрыПериодическиеРегистры.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиПериоды", "Сотрудник"); ПараметрыПостроения = ЗарплатаКадрыПериодическиеРегистры.ПараметрыПостроенияДляСоздатьВТИмяРегистра(); ЗарплатаКадрыПериодическиеРегистры.СоздатьВТИмяРегистраПериоды("КадроваяИсторияСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ОписаниеФильтра, ПараметрыПостроения, "ВТСотрудникиИнтервалы"); |
|||
8
mmmarat
06.12.18
✎
11:01
|
(7) Создайте ВТ "ВЫБРАТЬ ВТСотрудникиОрганизации.Сотрудник, &ПериодНачало КАК ДатаНачала, &ПериодОкончание КАК ДатаОкончания ПОМЕСТИТЬ ВТСотрудникиПериоды ИЗ ВТСотрудникиОрганизации".
|
|||
9
егаис
06.12.18
✎
14:06
|
(8) спасибо, но выходит ошибка
ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияСотрудников.НачалоПериода = ПериодНачало; ПараметрыПолученияСотрудников.ОкончаниеПериода = ПериодОкончание; ПараметрыПолученияСотрудников.Организация = Организация; ПараметрыПолученияСотрудников.Подразделение = Подразделение; Запрос = Новый Запрос(); Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц, Истина, ПараметрыПолученияСотрудников); Запрос.Текст = "ВЫБРАТЬ ВТСотрудникиОрганизации.Сотрудник КАК Сотрудник, | &ПериодНачало КАК ДатаНачала, | &ПериодОкончание КАК ДатаОкончания |ПОМЕСТИТЬ ВТСотрудникиПериоды | ИЗ ВТСотрудникиОрганизации КАК ВТСотрудникиОрганизации"; // УПОРЯДОЧИТЬ По ВТСотрудникиОрганизации.Сотрудник.Наименование Запрос.УстановитьПараметр("ПериодНачало", ПериодНачало); Запрос.УстановитьПараметр("ПериодОкончание", ПериодОкончание); //ВТСотрудникиОрганизации = Запрос.Выполнить().Выгрузить(); ОписаниеФильтра = ЗарплатаКадрыПериодическиеРегистры.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиПериоды", "Сотрудник"); ПараметрыПостроения = ЗарплатаКадрыПериодическиеРегистры.ПараметрыПостроенияДляСоздатьВТИмяРегистра(); ЗарплатаКадрыПериодическиеРегистры.СоздатьВТИмяРегистраПериоды("КадроваяИсторияСотрудников", Запрос.МенеджерВременныхТаблиц, Истина, ОписаниеФильтра, ПараметрыПостроения, "ВТСотрудникиИнтервалы"); {ОбщийМодуль.ЗарплатаКадрыПериодическиеРегистры.Модуль(217)}: Ошибка при вызове метода контекста (Выполнить) Запрос.Выполнить(); по причине: {(49, 2)}: Таблица не найдена "ВТСотрудникиПериоды" <<?>>ВТСотрудникиПериоды КАК ИзмеренияДаты |
|||
10
егаис
06.12.18
✎
14:33
|
(8) Марат, выручай, воде бы все верно сделал
|
|||
11
mmmarat
06.12.18
✎
15:03
|
(10) Забыл выполнить запрос где ВТ ВТСотрудникиПериоды формируется.
|
|||
12
kumena
06.12.18
✎
15:11
|
а на 2.5 надо час грамотного программиста, чтобы запрос нужный написать.
а тут человек уже третьи сутки, и похоже без перерыва, бьётся! |
|||
13
mmmarat
06.12.18
✎
15:16
|
(12) в ЗУП 3.1 все достаточно просто при знании методов.
|
|||
14
Akela has missed
06.12.18
✎
15:18
|
(12) так грамотного и тут на час :D
|
|||
15
kumena
06.12.18
✎
15:49
|
> так грамотного и тут на час :D
в моем понимании, то что выше - это совсем не программирование. программист должен знать что откуда берется. а перенесут куда-нибудь эти костыли/функции или даже переназовут, и будет плач по всей стране стоять. |
|||
16
KrasnSergey
06.12.18
✎
16:06
|
(15)+100500
|
|||
17
Akela has missed
06.12.18
✎
16:16
|
(15) если это не совсем программирование, кто мешает сделать так как в твоем понимании?)
Если в 2.5 на запрос вам надо час, то тут на запрос уйдет не больше 5 минут. |
|||
18
Alexandr_U1982
06.12.18
✎
16:30
|
(17)+100500
|
|||
19
mmmarat
06.12.18
✎
16:41
|
(15)
Возьмем пример. В 3.1.4 в РС кадровой истории сотрудников был такой ресурс как "ВидЗанятости". Программисты брали в запросе срезпоследних и радовались жизни. А в 3.1.5 этот ресурс переехал в РС "ВидыЗанятостиСотрудников". А событие для получения кадровых данных как было так и осталось "ВидЗанятости". Так кто в этом случае плакать будет. Я не утверждаю, что от запросов нужно отказываться, но некоторые банально в регистре забывают учитывать такие ресурсы как "ДействуетДо". |
|||
20
2S
06.12.18
✎
16:44
|
(19) стукнись в личку
|
|||
21
kumena
10.12.18
✎
16:23
|
> Если в 2.5 на запрос вам надо час, то тут на запрос уйдет не больше 5 минут.
а вот наш коллега mmmarat утверждает что на час. в данном случае я не себя имел ввиду, а человека, который будет это делать впервые. лично мне на это дело хватит и пары минут, я уже сто раз это писал, и могу скопировать из предыдущих отчетов/обработок. > Программисты брали в запросе срезпоследних и радовались жизни. А в 3.1.5 этот ресурс переехал в РС "ВидыЗанятостиСотрудников". А вы считаете это нормально, когда программе столько лет, и разработчики никак не могут определиться со структурой? Про то что из этого следует я пожалуй промолчу. За разработку "ПериодаЗавершения" я бы пожал руку 1совсцам, а за то, что они навертели в третьей версии настучал бы линейкой по рукам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |