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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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