Как выбрать только работающих сотрудников, без уволенных на определенную дату?
Как выбрать только работающих сотрудников, без уволенных на определенную дату?
Используем регистр РегистрСведений.РаботникиОрганизаций. В этом регистре сведений фиксируется моменты приема на работу, кадровое перемещение с одно должности на другою. Так же фиксируется дата увольнения работника. Задача сводиться к двум запросам. Первый запрос выбирает все записи приема и перемещений на дату запроса. Второй запрос выбирает только сотрудников, которые на эту дату уже уволены.
Примеры запросов:
Выбираем только прием на работу и перемещение:
Процедура СформироватьЗапросСотрудники() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник, | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации, | РаботникиОрганизацийСрезПоследних.Должность, | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния, | РаботникиОрганизацийСрезПоследних.Период |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния <> &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование"; ПричинаИзмененияСостояния=Перечисления.ПричиныИзмененияСостояния.Увольнение; НаДату=КонецДня(ВыбДату); Запрос.УстановитьПараметр("НаДату", НаДату); Запрос.УстановитьПараметр("ПричинаИзмененияСостояния", ПричинаИзмененияСостояния); Результат = Запрос.Выполнить(); ТЗО=Результат.Выгрузить(); ТЗЕ=ТЗО.Скопировать(); ЭлементыФормы.ТЗЕ.СоздатьКолонки(); КонецПроцедуры
Выбираем только уволенных:
Процедура СформироватьЗапросСотрудникиУволенные() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник, | РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации, | РаботникиОрганизацийСрезПоследних.Должность, | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния, | РаботникиОрганизацийСрезПоследних.Период |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния = &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование"; ПричинаИзмененияСостояния=Перечисления.ПричиныИзмененияСостояния.Увольнение; НаДату=КонецДня(ВыбДату); Запрос.УстановитьПараметр("НаДату", НаДату); Запрос.УстановитьПараметр("ПричинаИзмененияСостояния", ПричинаИзмененияСостояния); Результат = Запрос.Выполнить(); ТЗО=Результат.Выгрузить(); ТЗЕ=ТЗО.Скопировать(); ЭлементыФормы.ТЗЕ.СоздатьКолонки(); КонецПроцедуры
Мы пишем один запрос, в котором участвуют запросы приведенные выше по тексту.
Пример:
Процедура СформироватьЗапросСотрудники() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник, | РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния <> &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних |ГДЕ | РаботникиОрганизацийСрезПоследних.Сотрудник НЕ В | (ВЫБРАТЬ | РаботникиОрганизацийСрезПоследних.Сотрудник |ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния = &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних) | |УПОРЯДОЧИТЬ ПО | РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование"; ПричинаИзмененияСостояния=Перечисления.ПричиныИзмененияСостояния.Увольнение; НаДату=КонецДня(ВыбДату); Запрос.УстановитьПараметр("НаДату", НаДату); Запрос.УстановитьПараметр("ПричинаИзмененияСостояния", ПричинаИзмененияСостояния); Запрос.УстановитьПараметр("ПричинаИзмененияСостоянияУволенные", ПричинаИзмененияСостояния); Результат = Запрос.Выполнить(); ТЗО=Результат.Выгрузить(); ТЗЕ=ТЗО.Скопировать(); ЭлементыФормы.ТЗЕ.СоздатьКолонки(); КонецПроцедуры
Возможно вам интересно:
Табличный документ в 1С:Предприятие 8.0, 8.1, 8.2 – самый простой код?
Режим записи документов в 1С
Результаты запроса в таблицу значений 1С
Как проверить тип значения в 1С, программно? Как определить тип объекта в 1С?
Функция СтрЧислоВхождений (ТекСтрока, ТекПодстрокаПоиска) в 1С
Функция СтрЧислоСтрок (ТекСтрока) в 1С
Оператор ВЫБОР в запросе 1С
Произвольный макет в СКД 1С