|
1c 8.3 ЗУП получить список актуальных сотрудников в запрос | ☑ | ||
---|---|---|---|---|
0
adamst
19.11.18
✎
10:53
|
Добрый день подскажите пожалуйста как правильно получить список сотрудников функцией
КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,"Организация,Должность",,); нужно получить действующих сотрудников через менеджер временных таблиц (наверное)... вроде рабочий код, но такой кривой получился, я думаю есть нормальное решение, прошу подсказать. мой вариант весь текст внешней обработки: &НаСервере Функция СформироватьСписокНаСервере() //формируем список сотрудников всех МассивСотрудников = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Ссылка КАК Сотрудник |ИЗ | Справочник.Сотрудники КАК Сотрудники"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ном=0; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МассивСотрудников.Добавить(ВыборкаДетальныеЗаписи.Сотрудник); КонецЦикла; //ключевой момент, используем функцию формирования списка сведений сотрудников ТЗСведения = КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,"Организация,Должность",,); //ном=1; //Для Каждого Стр Из ТЗСведения Цикл // ном=ном+1; // Сообщить("№"+ном+" / "+Стр.Организация + " / " + Стр.Должность + " / "+Стр.Сотрудник ); //КонецЦикла; //формируем табличный документ и передаем данные в запрос для последующей его обработки ТабДок = Новый ТабличныйДокумент; Макет = Объект.РеквизитМакет; //на форме есть реквизит с типом данных неопределенный, с именем "РеквизитМакет" в него записываем ссылку на печатный макет обработки Запрос = Новый Запрос; //приходится поместить ТЗ сначала во временную таблицу, а потом только с ней работать!!! Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ВнешняяТЗ.Сотрудник КАК Сотрудник, | ВнешняяТЗ.Должность КАК Должность, | ВнешняяТЗ.Организация.Наименование КАК ОрганизацияНаименование |ПОМЕСТИТЬ втзСотрудники |ИЗ | &ВнешняяТЗ КАК ВнешняяТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | втзСотрудники.Сотрудник КАК Сотрудник, | втзСотрудники.Должность КАК Должность, | втзСотрудники.ОрганизацияНаименование КАК Организация |ИЗ | втзСотрудники КАК втзСотрудники"; Запрос.УстановитьПараметр("ВнешняяТЗ",ТЗСведения); //передаю ТЗ в запрос и формирую временную таблицу с которой дальше и работаю РезультатЗапроса = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); Возврат ТабДок; КонецФункции &НаКлиенте Процедура СформироватьСписок(Команда) ТабДок = СформироватьСписокНаСервере(); ТабДок.Показать(); КонецПроцедуры |
|||
1
adamst
19.11.18
✎
10:57
|
нужно еще пожалуй уточнить, что использую модуль КадровыйУчет и функцию КадровыеДанныеСотрудников т.к. разработчики постоянно чтото меняют в регистрах и я натыкался на утверждение, что нужно использовать именно эти функции т.к. иначе придется постоянно переписывать внешние обработки после каждого релиза если обращаться в запросе напрямую к данным регистрам.
|
|||
2
Один С
19.11.18
✎
10:59
|
Это чо теперь только так в 3.1 живых сотрудников получить?
А просто тупо выбрать сотрудников где дата увольнения = пусто не прокатит? Ну или через РС.кадроваяИстория как в 2.5 не? |
|||
3
adamst
19.11.18
✎
10:59
|
и еще одно уточнение: получить функцией модуля "КадровыйУчет" и эти данные потом использовать в запросе!
|
|||
4
adamst
19.11.18
✎
11:02
|
(2) я так понял что нет, к регистрам вообще не вариант,
а дата увольнения пусто, чтото не подумал, сейчас попробую... |
|||
5
adamst
19.11.18
✎
11:12
|
(2) нету такого реквизита "дата увольнения" в справочнике сотурдники, а в регистры лезть нельзя по описанной причине выше... (меняются часто разработчиками)
|
|||
6
supersonic
19.11.18
✎
11:16
|
(5) ДатаЗавершенияРаботы
|
|||
7
иубиповец
19.11.18
✎
11:17
|
(2) Можно, но при следующем обновлении разработчикам 1С может возжа попасть и они переделают регистры, а программном интерфейсе они когда то обещали совместимыми со старыми конфигами делать.
И действующих сотрудников можно получить функцией кадровыйучет.СотрудникиОрганизации как не странно:) а потом уже кадровыеданные получать |
|||
8
иубиповец
19.11.18
✎
11:18
|
(5) Есть вАрхиве - если пользуются, можно и на этот реквизит опереться.
|
|||
9
supersonic
19.11.18
✎
11:28
|
Можно. После вдумчивого чтения форума и инфостарта и изучения конфы, я делал так (по памяти):
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Ссылка КАК Ссылка, | &Период КАК Период |ПОМЕСТИТЬ ВТ_Сотрудники |ИЗ | Справочник.Сотрудники КАК Сотрудники" Запрос.УстановитьПараметр("Период", НаДату ); //на дату которую нужно. КоллекцияПолей = "Сотрудник, ДатаУвольнения, Подразделение"; //попробуйте или ДатаУвольнения или ДатаЗавершенияРаботы - точно не помню. ОписательТаблицыОтборов = КадровыйУчет.ОписаниеВременнойТаблицыОтборовСотрудников("ВТ_Сотрудники", "Сотрудник","Период"); ЗапросКадровыеДанные = КадровыйУчет.ЗапросВТКадровыеДанныеСотрудников(Истина, ОписательТаблицыОтборов, КоллекцияПолей); ЗарплатаКадрыОбщиеНаборыДанных.ОбъединитьЗапросы(Запрос, ЗапросКадровыеДанные); Запрос.Выполнить(); Запрос = Новый запрос; Запрос.МенеджерВТ = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Сотрудник, | Сотрудники.Период | ИЗ ВТ_Сотрудники КАК Сотрудники |ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК |КадровыеДанныеСотрудников |ПО Сотрудники.Сотрудник = |КадровыеДанныеСотрудников.Сотрудник |И Сотрудники.Период = КадровыеДанныеСотрудников.Сотрудник |
|||
10
Один С
19.11.18
✎
11:34
|
Вы меня пугаете. Неужели в 3.1 все так через жопу?
Есть же РС.ТекущиеКадровыеДанныеСотрудников. Запрос из 6 строк показывает всех живых. Что я делаю не так? Зачем вот это вот всё? |
|||
11
adamst
19.11.18
✎
11:35
|
(8) нет это все не то, это не по феншую...
(7) это да, просто потом как с этим списком работать в запросе? я этот момент хотел прояснить |
|||
12
Amra
19.11.18
✎
11:36
|
(10) Перечитай (1), там по делу написано
|
|||
13
Amra
19.11.18
✎
11:36
|
И да, от ТекущиеКАдровыеДанные сотрудников уже отказываются в последних релизах
|
|||
14
adamst
19.11.18
✎
11:37
|
(10) не надо столько вопросов, покажи как?
вот мой запрос примерный: ВЫБРАТЬ РАЗРЕШЕННЫЕ СостоянияСотрудников.Период КАК Период, СостоянияСотрудников.ДействуетДо КАК ДействуетДо, СостоянияСотрудников.Сотрудник КАК Сотрудник, СостоянияСотрудников.Состояние КАК Состояние, ВЫБОР КОГДА СостоянияСотрудников.Период > &НачалоПериода ТОГДА СостоянияСотрудников.Период ИНАЧЕ &НачалоПериода КОНЕЦ КАК НачалоПодсчета, ВЫБОР КОГДА СостоянияСотрудников.ДействуетДо < &ОкончаниеПериода И СостоянияСотрудников.ДействуетДо <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА СостоянияСотрудников.ДействуетДо ИНАЧЕ &ОкончаниеПериода КОНЕЦ КАК ОкончаниеПодсчета, СостоянияСотрудников.ОкончаниеПредположительно КАК ОкончаниеПредположительно, СостоянияСотрудников.Сотрудник.ФизическоеЛицо.ДатаРождения КАК СотрудникФизическоеЛицоДатаРождения, ГОД(&ЗаданнаяДата) - ГОД(СостоянияСотрудников.Сотрудник.ФизическоеЛицо.ДатаРождения) - ВЫБОР КОГДА МЕСЯЦ(&ЗаданнаяДата) < МЕСЯЦ(СостоянияСотрудников.Сотрудник.ФизическоеЛицо.ДатаРождения) ТОГДА 1 ИНАЧЕ ВЫБОР КОГДА МЕСЯЦ(&ЗаданнаяДата) = МЕСЯЦ(СостоянияСотрудников.Сотрудник.ФизическоеЛицо.ДатаРождения) И ДЕНЬ(&ЗаданнаяДата) < ДЕНЬ(СостоянияСотрудников.Сотрудник.ФизическоеЛицо.ДатаРождения) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК ВозрастВГодах, ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность КАК ТекущаяДолжность, ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник1 ИЗ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников ПО СостоянияСотрудников.Сотрудник = ТекущиеКадровыеДанныеСотрудников.Сотрудник ГДЕ СостоянияСотрудников.Период < &ОкончаниеПериода И (СостоянияСотрудников.ДействуетДо >= &НачалоПериода ИЛИ СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)) И СостоянияСотрудников.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение) |
|||
15
Amra
19.11.18
✎
11:38
|
(14) Не используй ТекущиеКадровые. Совсем не используй
|
|||
16
adamst
19.11.18
✎
11:39
|
(10) проблемы получить список действующих сотрудников в принципе нету, в модулях есть функции разработчиков, вопрос то больше в том что получив эту Таблицу Значений как правильно с ней работать в запросе, желательно понять как правильно ее передать в СхемуКомпоновкиДанных чтобы потом удобным способом выводить и обрабатывать результат!
|
|||
17
иубиповец
19.11.18
✎
11:42
|
(10) Ну если получить тз проблемы нет, то в чем проблема. запросом к ней же можно обратиться и работать как с врем таблицей
|
|||
18
adamst
19.11.18
✎
11:42
|
(14) я это уже понял, так просто показал, что этот вопрос в действительности прорабатывал, с запросами, но понимаю что нужно действовать так как говорят разработчики, т.е. использовать функции модуля КадровыйУчет, но вопрос все тот же потом как результат работы этой функции передать в СКД?
|
|||
19
adamst
19.11.18
✎
11:45
|
(17) у меня не получилось, посмотри в сообщении код (1) там через жопу все получается,
1. Получаю ТЗ функцией КадровыйУчет.КадровыеДанныеСотрудников() 2. Передаю через параметр в запрос 3. В запросе формирую временную таблицу 4. и уже потом работаю с ней другим запросом... может описал не очень хорошо, но код глянешь там не много поймешь. Я подвожу может кто обработкой, примером, поделится как в СКД передать список действующих сотрудников (т.е. результат работы функции КадровыеДанныеСотрудников передать в СКД) , а то вопросов уж больно много! |
|||
20
adamst
19.11.18
✎
13:59
|
вообщем если комуто нужен будет получить список сотрудников в системе компановке данных, для гибкой настройки пользователем в дальнейшем, рекомендую видео: https://www.youtube.com/watch?v=vYbbh1axSzg только что наткнулся. Там не про зуп, но идея ясна из первых 15 минут видео.
1. создал обработку внешнюю 2. создал компоновку данных и добавил источник данных "объект" 3. описал структуру получаемых данных (поля Сотрудник, Организация и тп) ее можно подсмотреть в отладчике то что возвращает функция КадровыйУчет.КадровыеДанныеСотрудников() 4. и в модуле объект (по кнопке действия, внешней обработки "открыть модуль объекта") добавил код Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; НастройкиКомпоновки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки); //формируем список сотрудников всех МассивСотрудников = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Ссылка КАК Сотрудник |ИЗ | Справочник.Сотрудники КАК Сотрудники"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ном=0; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МассивСотрудников.Добавить(ВыборкаДетальныеЗаписи.Сотрудник); КонецЦикла; //ключевой момент, используем функцию формирования списка сведений сотрудников втзСотрудники = КадровыйУчет.КадровыеДанныеСотрудников(Истина,МассивСотрудников,"Организация,Должность",,); ВнешниеНаборы = Новый Структура("втзСотрудники",втзСотрудники); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры надеюсь данная цепочка рассуждений поможет, если кто наткнется на такую же задачу. |
|||
21
mmmarat
19.11.18
✎
14:12
|
(0)
ПараметрыПолучения = КадровыйУчет.ПараметрыПолученияОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолучения.Организация = Организация; //ПараметрыПолучения.Подразделение = Подразделение; ПараметрыПолучения.НачалоПериода = ДатаНачала; ПараметрыПолучения.ОкончаниеПериода = ДатаОкончания; //ПараметрыПолучения.СписокФизическихЛиц = ФизическиеЛица; //ПараметрыПолучения.КадровыеДанные = "ГрафикРаботы"; КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц,Истина,ПараметрыПолучения, "ВТСотрудникиОрганизации"); Это просто получить ВТ с сотрудниками организации, Но если Вам нужно использовать далее СКД в ЗУП 3 есть функционал, заменяющий представления на запросы в СКД. Смотрите примеры в любом кадровом отчете. |
|||
22
adamst
19.11.18
✎
14:38
|
(21) спасибо, полезно, еще бы конкретнее какой отчет бы рассмотреть из стандартной конфигурации.
может есть методические указания по программировании в ЗУП, обучающие видео по этой тематике? |
|||
23
mmmarat
19.11.18
✎
14:59
|
0) Отчет КадроваяИсторияСотрудников
В модуле ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета( Методические материалы не искал. Нужно статью на инфостарте оформить :) |
|||
24
adamst
19.11.18
✎
15:02
|
(23) вот это правильно, статью в студию!
стати поглядел, в модуле КдаровыйУчет нету такой функции ПараметрыПолученияОрганизацийПоСпискуФизическихЛиц но есть ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц |
|||
25
KnightAlone
19.11.18
✎
17:23
|
(15) плюсую, переписывал тут недавно код. Человек слабо знаком с ЗУПом видимо, брал данные оттуда. я его могу понять - РС ТекущиеКАдровыеДанныеСотрудников есть, данные в нем есть, все логично, завязался на регистр. но вот тех кто ЗУП 3.1 пишет понять сложнее, в этот регистр сейчас пишутся только поля дата приема, физ. лицо, сотрудник, головная организация, остальные поля тупо не заполняются (должность и подразделение, например)
поэтому (10) да, в ЗУП 3.1 все через нее самую, как раньше нельзя |
|||
26
KnightAlone
19.11.18
✎
17:27
|
(10) судя по данным в регистре, примерно в январе-феврале был релиз, после которого перестали заполнятся Организация, подразделение, датаувольнения, текущая должность, текущий вид занятости. Скорее всего в том обновлении, в котором вид занятости вынесли в отдельный РС. а так в целом шикарный регистр чо, пользуйтесь наздоровье :)
|
|||
27
KnightAlone
19.11.18
✎
17:28
|
наврал, дату увольнения пока еще пишут
|
|||
28
timurhv
19.11.18
✎
17:41
|
(0) Я так получаю, стянуто с формы списка сотрудников:
Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Сотрудники.Ссылка КАК Сотрудник, | Сотрудники.Код КАК ТабельныйНомер, | Сотрудники.ФизическоеЛицо КАК ФизическоеЛицо, | Представление(Сотрудники.ФизическоеЛицо) КАК ФизическоеЛицоПредставление, | Сотрудники.ГоловнаяОрганизация КАК Организация, | ДанныеДляПодбора.Подразделение КАК Подразделение, | Представление(ДанныеДляПодбора.Подразделение) КАК ПодразделениеПредставление, | Представление(ДанныеДляПодбора.Подразделение.Родитель) КАК ВышестоящееПодразделение, | ДанныеДляПодбора.Должность КАК Должность, | СостоянияСотрудников.Состояние КАК Состояние |ИЗ | РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбора | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники | ПО (ДанныеДляПодбора.Сотрудник = Сотрудники.Ссылка) | И (ДанныеДляПодбора.Наименование = Сотрудники.Наименование) | И (ДанныеДляПодбора.ИдентификаторЗаписи В | (ВЫБРАТЬ ПЕРВЫЕ 1 | ДанныеДляПодбораСотрудниковОтбор.ИдентификаторЗаписи | ИЗ | РегистрСведений.ДанныеДляПодбораСотрудников КАК ДанныеДляПодбораСотрудниковОтбор | ГДЕ | ДанныеДляПодбораСотрудниковОтбор.Сотрудник = ДанныеДляПодбора.Сотрудник | И ДанныеДляПодбораСотрудниковОтбор.Наименование = ДанныеДляПодбора.Наименование | И ДанныеДляПодбораСотрудниковОтбор.Начало <= &ДатаОкончания | И (ДанныеДляПодбораСотрудниковОтбор.Окончание = ДАТАВРЕМЯ(1, 1, 1) | ИЛИ ДанныеДляПодбораСотрудниковОтбор.Окончание >= &ПустаяДата) | УПОРЯДОЧИТЬ ПО | ДанныеДляПодбораСотрудниковОтбор.ПоДоговоруГПХ, | ДанныеДляПодбораСотрудниковОтбор.Начало УБЫВ, | ДанныеДляПодбораСотрудниковОтбор.Организация, | ДанныеДляПодбораСотрудниковОтбор.Филиал, | ДанныеДляПодбораСотрудниковОтбор.Подразделение)) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников | ПО (ДанныеДляПодбора.Сотрудник = СостоянияСотрудников.Сотрудник) | И (СостоянияСотрудников.Период <= &ДатаОкончания) | И (СостоянияСотрудников.ДействуетДо >= &ДатаНачалаСведений | ИЛИ СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)) |ГДЕ | ДанныеДляПодбора.ЭтоГоловнойСотрудник | И НЕ СостоянияСотрудников.Состояние ЕСТЬ NULL | И СостоянияСотрудников.Состояние <> Значение(Перечисление.СостоянияСотрудника.Увольнение) | И ДанныеДляПодбора.Организация = &Организация | И &УсловиеОтборПодразделение | |УПОРЯДОЧИТЬ ПО | ДанныеДляПодбора.Наименование"; Запрос.УстановитьПараметр("ДатаНачалаСведений", НачалоДня(Объект.ДатаСведений)); Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(Объект.ДатаСведений)); Запрос.УстановитьПараметр("ПустаяДата", Дата('00010101')); Запрос.УстановитьПараметр("Организация", Объект.Организация); Если ЗначениеЗаполнено(Объект.Подразделение) Тогда Запрос.УстановитьПараметр("Подразеделение", Объект.Подразделение); Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтборПодразделение", "ДанныеДляПодбора.Подразделение = &Подразделение"); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтборПодразделение", "Истина"); КонецЕсли; Результат = Запрос.Выполнить().Выгрузить(); |
|||
29
Alexandr_U1982
19.11.18
✎
19:04
|
(28) Садись. Двойка.
|
|||
30
Borteg
19.11.18
✎
21:01
|
(0) кадровыйучет.СотрудникиОрганизации(
|
|||
31
Borteg
19.11.18
✎
21:01
|
все остальное ппц просто
|
|||
32
DrZombi
гуру
20.11.18
✎
10:55
|
(0) Работающие сотрудники:
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ИтоговыеСотрудники.Ссылка КАК Сотрудник, | &ДатаОтчета КАК Период |ПОМЕСТИТЬ ВТСотрудники |ИЗ | Справочник.Сотрудники КАК ИтоговыеСотрудники |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ТаблицаОтборов.Период КАК Период, | ТаблицаОтборов.Сотрудник КАК Сотрудник, | СправочникСотрудники.ФизическоеЛицо КАК ФизическоеЛицо, | ВЫРАЗИТЬ(ТаблицаОтборов.Сотрудник КАК Справочник.Сотрудники).ГоловнойСотрудник КАК ГоловнойСотрудникТаблицыРазличных, | СправочникСотрудники.Код КАК ТабельныйНомер, | СправочникСотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация |ПОМЕСТИТЬ ВТОтборовРазличныхСотрудников |ИЗ | ВТСотрудники КАК ТаблицаОтборов | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК СправочникСотрудники | ПО ТаблицаОтборов.Сотрудник = СправочникСотрудники.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИзмеренияДаты.Сотрудник КАК Сотрудник, | ИзмеренияДаты.Период КАК Период, | СостоянияСотрудников.Период КАК ПериодЗаписи, | СостоянияСотрудников.Состояние КАК Состояние, | СостоянияСотрудников.ВидВремени КАК ВидВремени, | СостоянияСотрудников.ДействуетДо КАК ДействуетДо, | СостоянияСотрудников.ОкончаниеПредположительно КАК ОкончаниеПредположительно |ПОМЕСТИТЬ ВТСведенияОСостоянииСотрудников |ИЗ | ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников | ПО ИзмеренияДаты.Сотрудник = СостоянияСотрудников.Сотрудник | И (СостоянияСотрудников.Период <= ИзмеренияДаты.Период) | И (СостоянияСотрудников.ДействуетДо >= ИзмеренияДаты.Период | ИЛИ СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИзмеренияДаты.Период КАК Период, | РегистрСведений.ДействуетДо КАК ПериодВозвратногоСобытия, | ВЫБОР | КОГДА РегистрСведений.ПериодЗаписи = РегистрСведений.ДатаНачала | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ЭтоВозвратноеСобытие, | РегистрСведений.РегистраторСобытия КАК Регистратор, | ИзмеренияДаты.Сотрудник КАК Сотрудник, | РегистрСведений.ДатаОкончания КАК ДатаОкончания, | РегистрСведений.ДатаНачала КАК ДатаНачала, | РегистрСведений.ГоловнаяОрганизация КАК ГоловнаяОрганизация, | РегистрСведений.ФизическоеЛицо КАК ФизическоеЛицо, | РегистрСведений.ПериодЗаписи КАК ПериодЗаписи, | РегистрСведений.Год КАК Год, | РегистрСведений.ПериодПредыдущейЗаписи КАК ПериодПредыдущейЗаписи, | РегистрСведений.ВидЗанятости КАК ВидЗанятости, | РегистрСведений.РегистраторЗаписи КАК РегистраторЗаписи, | РегистрСведений.РегистраторСобытия КАК РегистраторСобытия, | РегистрСведений.ПустойИнтервал КАК ПустойИнтервал |ПОМЕСТИТЬ ВТСведенияОВидахЗанятостиСотрудников |{ВЫБРАТЬ | Период, | ПериодВозвратногоСобытия, | Регистратор, | Сотрудник, | ДатаОкончания, | ДатаНачала, | ГоловнаяОрганизация, | ФизическоеЛицо, | ПериодЗаписи, | Год, | ПериодПредыдущейЗаписи, | ВидЗанятости, | РегистраторЗаписи, | РегистраторСобытия, | ПустойИнтервал} |ИЗ | ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты | {ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудниковИнтервальный КАК РегистрСведений | ПО (РегистрСведений.ДатаНачала <= КОНЕЦПЕРИОДА(ВЫБОР | КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1) | ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59) | ИНАЧЕ ИзмеренияДаты.Период | КОНЕЦ, ДЕНЬ)) | И (РегистрСведений.ДатаОкончания >= КОНЕЦПЕРИОДА(ВЫБОР | КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1) | ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59) | ИНАЧЕ ИзмеренияДаты.Период | КОНЕЦ, ДЕНЬ)) | И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник)} |ГДЕ | ИСТИНА |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ИзмеренияДаты.Период КАК Период, | РегистрСведений.ДействуетДо КАК ПериодВозвратногоСобытия, | ВЫБОР | КОГДА РегистрСведений.ПериодЗаписи = РегистрСведений.ДатаНачала | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ЭтоВозвратноеСобытие, | РегистрСведений.РегистраторСобытия КАК Регистратор, | ИзмеренияДаты.Сотрудник КАК Сотрудник, | РегистрСведений.ДатаОкончания КАК ДатаОкончания, | РегистрСведений.ДатаНачала КАК ДатаНачала, | РегистрСведений.ГоловнаяОрганизация КАК ГоловнаяОрганизация, | ИзмеренияДаты.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо, | РегистрСведений.ПериодЗаписи КАК ПериодЗаписи, | РегистрСведений.Год КАК Год, | РегистрСведений.ПериодПредыдущейЗаписи КАК ПериодПредыдущейЗаписи, | РегистрСведений.ВидСобытия КАК ВидСобытия, | РегистрСведений.Организация КАК Организация, | РегистрСведений.Должность КАК Должность, | РегистрСведений.ГоловнойСотрудник КАК ГоловнойСотрудник, | РегистрСведений.ЭтоГоловнойСотрудник КАК ЭтоГоловнойСотрудник, | РегистрСведений.Подразделение КАК Подразделение, | РегистрСведений.ДолжностьПоШтатномуРасписанию КАК ДолжностьПоШтатномуРасписанию, | РегистрСведений.КоличествоСтавок КАК КоличествоСтавок, | РегистрСведений.ВидДоговора КАК ВидДоговора, | РегистрСведений.РегистраторЗаписи КАК РегистраторЗаписи, | РегистрСведений.РегистраторСобытия КАК РегистраторСобытия, | РегистрСведений.ПустойИнтервал КАК ПустойИнтервал |ПОМЕСТИТЬ ВТСведенияКадровойИсторииСотрудников |{ВЫБРАТЬ | Период, | ПериодВозвратногоСобытия, | Регистратор, | Сотрудник, | ДатаОкончания, | ДатаНачала, | ГоловнаяОрганизация, | ФизическоеЛицо, | ПериодЗаписи, | Год, | ПериодПредыдущейЗаписи, | ВидСобытия, | Организация, | Должность, | ГоловнойСотрудник, | ЭтоГоловнойСотрудник, | Подразделение, | ДолжностьПоШтатномуРасписанию, | КоличествоСтавок, | ВидДоговора, | РегистраторЗаписи, | РегистраторСобытия, | ПустойИнтервал} |ИЗ | ВТОтборовРазличныхСотрудников КАК ИзмеренияДаты | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК РегистрСведений | ПО (РегистрСведений.ДатаНачала <= КОНЕЦПЕРИОДА(ВЫБОР | КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1) | ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59) | ИНАЧЕ ИзмеренияДаты.Период | КОНЕЦ, ДЕНЬ)) | И (РегистрСведений.ДатаОкончания >= КОНЕЦПЕРИОДА(ВЫБОР | КОГДА ИзмеренияДаты.Период = ДАТАВРЕМЯ(1, 1, 1) | ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59) | ИНАЧЕ ИзмеренияДаты.Период | КОНЕЦ, ДЕНЬ)) | И (РегистрСведений.Сотрудник = ИзмеренияДаты.Сотрудник) | И (РегистрСведений.ФизическоеЛицо = ИзмеренияДаты.Сотрудник.ФизическоеЛицо)} |ГДЕ | ИСТИНА |{ГДЕ | РегистрСведений.Сотрудник.*, | РегистрСведений.ФизическоеЛицо.*} |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаОтборов.Период КАК Период, | ТаблицаОтборов.Сотрудник КАК Сотрудник, | ТаблицаОтборов.ФизическоеЛицо КАК ФизическоеЛицо, | КадроваяИсторияСотрудников.Организация КАК Организация, | КадроваяИсторияСотрудников.Подразделение КАК Подразделение, | КадроваяИсторияСотрудников.Должность КАК Должность, | СведенияОВидахЗанятостиСотрудников.ВидЗанятости КАК ВидЗанятости, | ТаблицаОтборов.ТабельныйНомер КАК ТабельныйНомер, | ТаблицаОтборов.ГоловнаяОрганизация КАК ГоловнаяОрганизация, | ЕСТЬNULL(ТекущиеКадровыеДанныеСотрудников.ДатаПриема, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаПриема, | ЕСТЬNULL(ТекущиеКадровыеДанныеГоловныхСотрудников.ДатаУвольнения, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаУвольнения, | СведенияОСостоянииСотрудников.Состояние КАК Состояние, | СведенияОСостоянииСотрудников.ДействуетДо КАК ДействуетДо, | КадроваяИсторияСотрудников.КоличествоСтавок КАК КоличествоСтавок, | КадроваяИсторияСотрудников.ДатаНачала КАК ДатаНачала, | КадроваяИсторияСотрудников.ДатаОкончания КАК ДатаОкончания, | КадроваяИсторияСотрудников.ВидСобытия КАК ВидСобытия |ПОМЕСТИТЬ ПредставленияКадровыеДанныеСотрудников |ИЗ | ВТОтборовРазличныхСотрудников КАК ТаблицаОтборов | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников | ПО ТаблицаОтборов.Сотрудник = ТекущиеКадровыеДанныеСотрудников.Сотрудник | {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеГоловныхСотрудников | ПО ТаблицаОтборов.ГоловнойСотрудникТаблицыРазличных = ТекущиеКадровыеДанныеГоловныхСотрудников.Сотрудник} | {ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияКадровойИсторииСотрудников КАК КадроваяИсторияСотрудников | ПО ТаблицаОтборов.Сотрудник = КадроваяИсторияСотрудников.Сотрудник | И ТаблицаОтборов.Период = КадроваяИсторияСотрудников.Период} | {ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОВидахЗанятостиСотрудников КАК СведенияОВидахЗанятостиСотрудников | ПО ТаблицаОтборов.Сотрудник = СведенияОВидахЗанятостиСотрудников.Сотрудник | И ТаблицаОтборов.Период = СведенияОВидахЗанятостиСотрудников.Период} | {ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияОСостоянииСотрудников КАК СведенияОСостоянииСотрудников | ПО ТаблицаОтборов.Сотрудник = СведенияОСостоянииСотрудников.Сотрудник | И ТаблицаОтборов.Период = СведенияОСостоянииСотрудников.Период} |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ВТСведенияКадровойИсторииСотрудников |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ВТСведенияОВидахЗанятостиСотрудников |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ВТОтборовРазличныхСотрудников |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ВТСведенияОСостоянииСотрудников |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ПредставленияКадровыеДанныеСотрудников.Период КАК Период, | ПредставленияКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник, | ПредставленияКадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо, | ПредставленияКадровыеДанныеСотрудников.Организация КАК Организация, | ПредставленияКадровыеДанныеСотрудников.Подразделение КАК Подразделение, | ПредставленияКадровыеДанныеСотрудников.Должность КАК Должность, | ПредставленияКадровыеДанныеСотрудников.ВидЗанятости КАК ВидЗанятости, | ПредставленияКадровыеДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер, | ПредставленияКадровыеДанныеСотрудников.ГоловнаяОрганизация КАК ГоловнаяОрганизация, | ПредставленияКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема, | ПредставленияКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения, | ПредставленияКадровыеДанныеСотрудников.Состояние КАК Состояние, | ПредставленияКадровыеДанныеСотрудников.ДействуетДо КАК ДействуетДо, | ПредставленияКадровыеДанныеСотрудников.Сотрудник.Наименование КАК Сотрудник_Наименование, | ПредставленияКадровыеДанныеСотрудников.ФизическоеЛицо.Код КАК ФизическоеЛицо_Код, | ПредставленияКадровыеДанныеСотрудников.ФизическоеЛицо.Наименование КАК ФизическоеЛицо_Наименование, | ПредставленияКадровыеДанныеСотрудников.ФизическоеЛицо.ДатаРождения КАК ФизическоеЛицо_ДатаРождения, | ПредставленияКадровыеДанныеСотрудников.Организация.ИНН КАК Организация_ИНН, | ПредставленияКадровыеДанныеСотрудников.Организация.Наименование КАК Организация_Наименование, | ПредставленияКадровыеДанныеСотрудников.Подразделение.Код КАК Подразделение_Код, | ПредставленияКадровыеДанныеСотрудников.Подразделение.Наименование КАК Подразделение_Наименование, | ПредставленияКадровыеДанныеСотрудников.Должность.Наименование КАК Должность_Наименование, | ПредставленияКадровыеДанныеСотрудников.ГоловнаяОрганизация.Наименование КАК ГоловнаяОрганизация_Наименование, | ПредставленияКадровыеДанныеСотрудников.КоличествоСтавок КАК Должность_КоличествоСтавок, | ПредставленияКадровыеДанныеСотрудников.ДатаНачала КАК Должность_ДатаНачала, | ПредставленияКадровыеДанныеСотрудников.ДатаОкончания КАК Должность_ДатаОкончания, | ПредставленияКадровыеДанныеСотрудников.ВидСобытия КАК Должность_ВидСобытия |ИЗ | ПредставленияКадровыеДанныеСотрудников КАК ПредставленияКадровыеДанныеСотрудников |ГДЕ | ЕСТЬNULL(ПредставленияКадровыеДанныеСотрудников.Сотрудник, ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) | И ((ПредставленияКадровыеДанныеСотрудников.ДатаУвольнения >= &ДатаОтчета | ИЛИ ЕстьNull(ПредставленияКадровыеДанныеСотрудников.ДатаУвольнения, ДатаВремя(1,1,1)) = ДАТАВРЕМЯ(1,1,1)) | И (ПредставленияКадровыеДанныеСотрудников.ДатаПриема <= &ДатаОтчета | И ЕстьNull(ПредставленияКадровыеДанныеСотрудников.ДатаПриема, ДатаВремя(1,1,1)) <> ДАТАВРЕМЯ(1,1,1) | ИЛИ ЕСТЬNULL(ПредставленияКадровыеДанныеСотрудников.ВидЗанятости, ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ПустаяСсылка) | И ЕстьNull(ПредставленияКадровыеДанныеСотрудников.ДатаПриема,ДатаВремя(1,1,1)) = ДАТАВРЕМЯ(1,1,1))) "; |
|||
33
dft2014
20.11.18
✎
11:46
|
(0) Ниже - пример функции для получения актуальных работающих сотрудников за период. Возвращается таблица значений:
Функция ПроверитьНаличиеПодработки(Сотрудник, ДатаНазначения) СтруктураДанных = Новый Структура(); СтруктураДанных.Вставить("ДатаНачала",); СтруктураДанных.Вставить("ДатаОкончания",); СтруктураДанных.Вставить("РазмерОклада",); ПараметрыПолучения = ПолучитьПараметры(); ПараметрыПолучения.Организация = ЭтотОбъект.Организация; //Если ЗначениеЗаполнено(Подразделение) Тогда // ПараметрыПолучения.Подразделение = Подразделение; //КонецЕсли; //Если ВключаяУволенныхНаНачалоПериода Тогда // ПараметрыПолучения.ВключаяУволенныхНаНачалоПериода = Истина; //КонецЕсли; ПараметрыПолучения.НачалоПериода = НачалоМесяца(ДатаНазначения); ПараметрыПолучения.ОкончаниеПериода = КонецМесяца(ДатаНазначения); ПараметрыПолучения.ПодработкиРаботниковПоТрудовымДоговорам = Истина; ПараметрыПолучения.РаботникиПоДоговорамГПХ = Ложь; // ОТБОР ПО ВИДУ ЗАНЯТОСТИ РАБОТАЕТ ТОЛЬКО НАЧИНАЯ С РЕДАКЦИИ 3.1.7 //ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор( // ПараметрыПолучения.Отборы, "ВидЗанятости", "=", Перечисления.ВидыЗанятости.Подработка); ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор( ПараметрыПолучения.Отборы, "ФизическоеЛицо", "=", Сотрудник.ФизическоеЛицо); ПараметрыПолучения.КадровыеДанные = "Сотрудник,ФизическоеЛицо,Подразделение,Должность,ДолжностьПоШтатномуРасписанию,КоличествоСтавок,ВидЗанятости,ДатаПриема,ДатаУвольнения,ГрафикРаботы"; ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолучения); Возврат ТаблицаСотрудников; КонецФункции &НаСервере Функция ПолучитьПараметры() Возврат КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); КонецФункции |
|||
34
Akela has missed
20.11.18
✎
12:03
|
(32) Почему первая ВТ без разрешенных, и неужели там запрос по справочнику может выдать дубли?
|
|||
35
dnab
20.11.18
✎
12:57
|
(32) из отладчика после замены представлений чтоли стянул?
|
|||
36
Serg_1960
20.11.18
✎
13:14
|
+ эпитафия: и в один прекрасный момент, после очередного обновления, честно стянутое из отладчика перестанет работать из-за изменения структуры регистров КадроваяИсторияСотрудников и КадроваяИсторияСотрудниковИнтервальный.
|
|||
37
Serg_1960
20.11.18
✎
13:21
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |