profile="http://gmpg.org/xfn/11"> Как выбрать только работающих сотрудников, без уволенных на определенную дату? | Разработчику о работе с 1С:Предприятие, Pascal, Паскаль

Как выбрать только работающих сотрудников, без уволенных на определенную дату?

Как выбрать только работающих сотрудников, без уволенных на определенную дату?
Используем регистр РегистрСведений.РаботникиОрганизаций. В этом регистре сведений фиксируется моменты приема на работу, кадровое перемещение с одно должности на другою. Так же фиксируется дата увольнения работника. Задача сводиться к двум запросам. Первый запрос выбирает все записи приема и перемещений на дату запроса. Второй запрос выбирает только сотрудников, которые на эту дату уже уволены.
Примеры запросов:
Выбираем только прием на работу и перемещение:

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

Выбираем только уволенных:

Процедура СформироватьЗапросСотрудникиУволенные()
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	РаботникиОрганизацийСрезПоследних.Сотрудник,
	|	РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
	|	РаботникиОрганизацийСрезПоследних.Должность,
	|	РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния,
	|	РаботникиОрганизацийСрезПоследних.Период
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния = &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних
	|
	|УПОРЯДОЧИТЬ ПО
	|	РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование";
	ПричинаИзмененияСостояния=Перечисления.ПричиныИзмененияСостояния.Увольнение;
	НаДату=КонецДня(ВыбДату);
	Запрос.УстановитьПараметр("НаДату", НаДату);
	Запрос.УстановитьПараметр("ПричинаИзмененияСостояния", ПричинаИзмененияСостояния);
	Результат = Запрос.Выполнить();
	ТЗО=Результат.Выгрузить();
	ТЗЕ=ТЗО.Скопировать();
	ЭлементыФормы.ТЗЕ.СоздатьКолонки();
КонецПроцедуры

Мы пишем один запрос, в котором участвуют запросы приведенные выше по тексту.
Пример:

Процедура СформироватьЗапросСотрудники()
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	РаботникиОрганизацийСрезПоследних.Сотрудник,
	|	РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния <> &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних
	|ГДЕ
	|	РаботникиОрганизацийСрезПоследних.Сотрудник НЕ В 
	|	(ВЫБРАТЬ
	|	РаботникиОрганизацийСрезПоследних.Сотрудник
	|ИЗ
	|	РегистрСведений.РаботникиОрганизаций.СрезПоследних(&НаДату, ПричинаИзмененияСостояния = &ПричинаИзмененияСостояния) КАК РаботникиОрганизацийСрезПоследних)
	|
	|УПОРЯДОЧИТЬ ПО
	|	РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование";
	ПричинаИзмененияСостояния=Перечисления.ПричиныИзмененияСостояния.Увольнение;
	НаДату=КонецДня(ВыбДату);
	Запрос.УстановитьПараметр("НаДату", НаДату);
	Запрос.УстановитьПараметр("ПричинаИзмененияСостояния", ПричинаИзмененияСостояния);
	Запрос.УстановитьПараметр("ПричинаИзмененияСостоянияУволенные", ПричинаИзмененияСостояния);

	Результат = Запрос.Выполнить();
	ТЗО=Результат.Выгрузить();
	ТЗЕ=ТЗО.Скопировать();
	ЭлементыФормы.ТЗЕ.СоздатьКолонки();
КонецПроцедуры

Возможно вам интересно:
Табличный документ в 1С:Предприятие 8.0, 8.1, 8.2 – самый простой код?
Режим записи документов в 1С
Результаты запроса в таблицу значений 1С
Как проверить тип значения в 1С, программно? Как определить тип объекта в 1С?
Функция СтрЧислоВхождений (ТекСтрока, ТекПодстрокаПоиска) в 1С
Функция СтрЧислоСтрок (ТекСтрока) в 1С
Оператор ВЫБОР в запросе 1С
Произвольный макет в СКД 1С

Комментарии запрещены.