Вход | Регистрация


1С:Предприятие ::

Метки: 

ЗУП 3.1 Получить кадровые данные сотрудника запросом

Я
   Dimon1C
 
15.11.17 - 12:56
Добрый день. Изучаю ЗУП 3.1.
Необходимо в запросе получить должность и подразделение сотрудника на заданную дату.
Насколько корректен такой запрос:
ВЫБРАТЬ
    КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
    КадроваяИсторияСотрудниковИнтервальный.Должность КАК Должность,
    КадроваяИсторияСотрудниковИнтервальный.Подразделение КАК Подразделение
ИЗ
    РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ГДЕ
    КадроваяИсторияСотрудниковИнтервальный.ДатаНачала <= КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
    И КадроваяИсторияСотрудниковИнтервальный.ДатаОкончания >= КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
    И КадроваяИсторияСотрудниковИнтервальный.Сотрудник = &Сотрудник
 
 
   Gucci76
 
1 - 15.11.17 - 12:59
Может еще знающие люди подскажут чем регистр сведений отличаается от регистра сведений "....интервальный"?

Кстати, была относительно недавно тема похожая.
   Gucci76
 
2 - 15.11.17 - 13:19
   Gucci76
 
3 - 15.11.17 - 13:20
   Dimon1C
 
4 - 15.11.17 - 13:36
(2) Да есть там программный интерфейс, пытался оттуда достать запрос, но что то не осилил. Если программно, то да использовать функцию КадровыйУчет.КадровыеДанныеСотрудников удобно.
   SleepyHead
 
5 - 15.11.17 - 13:38
(1) ЗУП 3.1, Интервальные регистры

Про интервальные регистры
   Gucci76
 
6 - 15.11.17 - 13:40
(5) Спасибо
   Gucci76
 
7 - 15.11.17 - 13:43
А в ветке (5) так и не ответили - можно ли удалять эти регистры )))
   Alexandr_U1982
 
8 - 15.11.17 - 13:51
(4)А вам нужно НЕ программно?
   Dimon1C
 
9 - 15.11.17 - 14:00
(8) Хочу запросом без всяких программных интерфейсов, просто запрос к регистрам. Да я понимаю, что 1С может в будущем изменить структуру.
   kumena
 
10 - 15.11.17 - 14:17
а это условие из пятого поста не правильно работает?

ДатаАктуальности >=ДатаНачала И ДатаАктуальности <=ДатаОкончания.
 
 Рекламное место пустует
   RomaH
 
11 - 15.11.17 - 14:18
странно конечно все это
как раз было мнение, что в ЗУП 2.5 регистр с "ПериодЗавершения" - это очень элегантное и удобное решение

и тут на тебе - вторая смена
получаем зоопарк регистров которые еще и не работают

ИМХО - добавить свой регистр из ЗУП 2.5 и писать подпиской туда кадровую историю сотров
единственная неприятность - надо этот регистр в движения документов прописывать ... хотя если повесить подписику на отмену проведения - то прокатит

из плюсов получим прозрачную систему + возможность использовать старые отчеты
   RomaH
 
12 - 15.11.17 - 14:19
(10) там в пятом посте есть 6 пост с примером когда сам регистр заполняется неверно
   kumena
 
13 - 15.11.17 - 14:19
+11  ия ия ия того же мнения! )))

вот разницы нифига не понял.
   kumena
 
14 - 15.11.17 - 14:21
ну там дело было летом, наверняка уже затычку-проверку вотнули насчет того, что старые перемещения нельзя трогать.
   RomaH
 
15 - 15.11.17 - 14:29
(11) хотя в ЗУП 2.5 это вызывало косяк в таком случае

01/01 - директор
20/02 - 30/03 - сторож
15/03/-20/03 - водитель

отмена проведения второго документа
   Alexandr_U1982
 
16 - 15.11.17 - 15:03
(9)А зачем так хочешь?
   kumena
 
17 - 22.11.17 - 12:36
> А зачем так хочешь?

а энтот новомодный программный интерфейс позволяет
1. все данные выбрать одним запросом?
2. сделать обход результата по группировкам?
   kumena
 
18 - 22.11.17 - 12:38
все данные одним запросом - это сведения о сотруднике ну и допустим, какие то настройки организации.
   AlexZZZ
 
19 - 22.11.17 - 12:43
(16) И как получить запросом данные в COM ?
   dft2014
 
20 - 22.11.17 - 12:49
(0) Ответ дан в ссылке в (3). В функцию КадровыйУчет.КадровыеДанныеСотрудников(Истина, СписокСотрудников, , , ТекущаяДата(), ) подставляй своих сотрудников и нужную дату.

Только мне не совсем понятно как работает функция, если я хочу сделать отбор еще и по подразделению?  Alexandr_U1982, не подскажите? Из комментария к параметру пять:

ПоляОтбораПериодическихДанных - Структура, в качестве ключа указывается имя таблицы, содержащей
//                                    периодические данные (например ФИОФизическихЛиц, ГражданствоФизическихЛиц).

//                                    В качестве значений коллекция условий отбора, 
//                                    соединяемых по "И" и применяемых к регистру сведений.

//                                    Коллекция строки которой имеют поля.
//                                        * ЛевоеЗначение - строка, имя поля регистра сведений.

//                                        * ВидСравнения - строка, вид сравнения, допустимый в языке запросов.
//                                        * ПравоеЗначение - значение для сравнения с полем ЛевоеЗначение.
   kumena
 
21 - 22.11.17 - 13:16
(20) девушка, учитесь писать запросы одним запросом, а Сашка вас плохому научит! )
   Alexandr_U1982
 
22 - 22.11.17 - 13:27
(17)
1. Может.
2. С помощью программного интерфейса можно создать временную таблицу с нужными вам данными в менеджере временных таблиц. Группировать и выводить данные из нее вы можете как угодно.
   Alexandr_U1982
 
23 - 22.11.17 - 13:28
(18)С помощью программного интерфейса создаете временные таблицы и затем соединяете их как вам будет угодно.
   Alexandr_U1982
 
24 - 22.11.17 - 13:31
(19) Не приходилось еще получать данные из тройки через COM, поэтому личным опытом поделиться не могу.
Думаю, что это возможно сделать с помощью процедур и функций программного интерфейса.
   supersonic
 
25 - 22.11.17 - 13:33
(20) Была такая нужда сегодня.
Поместил тз в запрос и там уже делал нужные мне отборы.
   AlexZZZ
 
26 - 22.11.17 - 15:06
(24) Требуется получить сотрудников, работающих на дату с видом занятости - внешнее совместительство через COM. Раньше делалось запросом.
Даже если делать через функции общего модуля и выполнять их через COM соединение - все равно там есть в параметрах - Список сотрудников - считывать весь справочник ?
   Alexandr_U1982
 
27 - 22.11.17 - 16:01
(20)(25)Сходу ответить не могу. Я подумаю над вашими вопросами, когда появится свободное время. Сейчас его как-то на текущие дела не хватает.
   Alexandr_U1982
 
28 - 28.11.17 - 18:31
(20)(26) Думаю, вам подойдет функция КадровыйУчет.СотрудникиОрганизации(ТолькоРазрешенные, Параметры)
// Возвращает таблицу значений, заполненную сотрудниками.

//
// Параметры:

//    ТолькоРазрешенные - Булево
//    Параметры - Структура, подготовленная с помощью методов

//                ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц,
//                ПараметрыПолученияСотрудниковОрганизацийПоВременнойТаблице

//
// Возвращаемое значение:

//   ТаблицаЗначений   - Таблица значений, содержащая поля
//                            * Период             - Дата, равен значению ключа ОкончаниеПериода параметра Параметры

//                             * Сотрудник            - СправочникСсылка.Сотрудники
//                            * ФизическоеЛицо    - СправочникСсылка.ФизическиеЛица

//                            <кадровые данные>    - указанные в ключе КадровыеДанные параметра Параметры

Функции для формирования параметра "Параметры": КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц()
// Возвращает структуру параметров для СоздатьВТСотрудникиОрганизаций.

//
// Возвращаемое значение:

//   Структура - Содержит ключи:
//                Организация         - СправочникСсылка.Организации, если параметр опустить в таблицу войдут все сотрудник

//                                        независимо от организации.
//                ОтбиратьПоГоловнойОрганизации - если Истина, то отбор по головной организации, иначе по текущей организации.

//                                                По умолчанию - ЛОЖЬ
//                Подразделение         - СправочникСсылка.ПодразделенияОрганизаций, в таблицу войдут сотрудники указанного подразделения

//                                        и всех подразделений, подчиненных указанному, если параметр опустить в таблицу войдут все сотрудники.
//                СписокФизическихЛиц - Массив ссылок на элементы справочника ФизическиеЛица, если параметр опустить,

//                                        в таблицу войдут сотрудники всех физических лиц когда либо работавших в Организации.
//                НачалоПериода         - Дата, значение по умолчанию '00010101'. Если параметр устанавливается, параметр ОкончаниеПериода

//                                        обязателен к заполнению.
//                ОкончаниеПериода    - Дата, значение по умолчанию '00010101'. При установке должно выполняться условие

//                                        ОкончаниеПериода >= НачалоПериода. Используется для выборки кадровых данных сотрудников, если
//                                        параметр не указан, выборка будет производиться на текущую дату сеанса.

//                КадровыеДанные        - Строка, содержит список полей кадровых данных, см. описание к функции КадровыеДанныеСотрудников.
//                Отборы                - Массив, структур описывающих отборы сотрудников

//                                        см. ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор,
//                                        допустимые отборы описаны см. КадровыйУчет.КритерииПоискаСотрудниковПоКоллекцииОтборов
   Alexandr_U1982
 
29 - 28.11.17 - 18:32
(20)(26)Либо функция КадровыйУчет.СоздатьВТСотрудникиОрганизации(МенеджерВременныхТаблиц, ТолькоРазрешенные, Параметры, ИмяВТСотрудникиОрганизации = "ВТСотрудникиОрганизации")
// Формирует временную таблицу ВТСотрудникиОрганизации, содержащую поля Сотрудник и ФизическоеЛицо.

// Если заданы параметры НачалоПериода и ОкончаниеПериода метод вернет список сотрудников, работавших
// в заданном периоде. Если НачалоПериода и ОкончаниеПериода заданы и равны сформирует таблицу.

// Сотрудников работавших на заданную дату.
//

// Параметры:
//                МенеджерВременныхТаблиц

//                ТолькоРазрешенные - Булево
//                Параметры - Структура, подготовленная с помощью метода ПараметрыПолученияСотрудниковОрганизаций.

//                ИмяВТСотрудникиОрганизации - Строка
//


Функция для формирования параметра "Параметры": КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц()
// Возвращает структуру параметров для СоздатьВТСотрудникиОрганизаций.

//
// Возвращаемое значение:

//   Структура - Содержит ключи:
//                Организация         - СправочникСсылка.Организации, если параметр опустить в таблицу войдут все сотрудник

//                                        независимо от организации.
//                ОтбиратьПоГоловнойОрганизации - если Истина, то отбор по головной организации, иначе по текущей организации.

//                                                По умолчанию - ЛОЖЬ
//                Подразделение         - СправочникСсылка.ПодразделенияОрганизаций, в таблицу войдут сотрудники указанного подразделения

//                                        и всех подразделений, подчиненных указанному, если параметр опустить в таблицу войдут все сотрудники.
//                СписокФизическихЛиц - Массив ссылок на элементы справочника ФизическиеЛица, если параметр опустить,

//                                        в таблицу войдут сотрудники всех физических лиц когда либо работавших в Организации.
//                НачалоПериода         - Дата, значение по умолчанию '00010101'. Если параметр устанавливается, параметр ОкончаниеПериода

//                                        обязателен к заполнению.
//                ОкончаниеПериода    - Дата, значение по умолчанию '00010101'. При установке должно выполняться условие

//                                        ОкончаниеПериода >= НачалоПериода. Используется для выборки кадровых данных сотрудников, если
//                                        параметр не указан, выборка будет производиться на текущую дату сеанса.

//                КадровыеДанные        - Строка, содержит список полей кадровых данных, см. описание к функции КадровыеДанныеСотрудников.
//                Отборы                - Массив, структур описывающих отборы сотрудников

//                                        см. ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор,
//                                        допустимые отборы описаны см. КадровыйУчет.КритерииПоискаСотрудниковПоКоллекцииОтборов
   Alexandr_U1982
 
30 - 28.11.17 - 18:33
(20) Пример получения сотрудников с отбором по подразделению:

ПараметрыПолученияСотрудников                  = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
ПараметрыПолученияСотрудников.Организация      = Организация;
ПараметрыПолученияСотрудников.Подразделение    = Подразделение;
ПараметрыПолученияСотрудников.ОкончаниеПериода = Период;
ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолученияСотрудников);
   Alexandr_U1982
 
31 - 28.11.17 - 18:37
(26)Пример получения сотрудников на указанную дату по выбранным графикам работы:

ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
ПараметрыПолученияСотрудников.НачалоПериода    = Период;
ПараметрыПолученияСотрудников.ОкончаниеПериода = Период;

Отборы = Новый Массив;
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(Отборы, "ГрафикРаботы", "В", МассивГрафиковРаботы);
ПараметрыПолученияСотрудников.Отборы = Отборы;

СотрудникОрганизаций = КадровыйУчет.СотрудникиОрганизации(Ложь, ПараметрыПолученияСотрудников);

Думаю, подобным образом можно сделать и отбор по виду занятости.
   Gucci76
 
32 - 28.11.17 - 18:52
(31) Спасибо.
Думаю и мне пригодится !! ))
   AlexZZZ
 
33 - 29.11.17 - 09:40
(31) Спасибо!
 
 



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует