УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников ошибка

1. talker 16.05.23 05:36 Сейчас в теме
Просто оставлю это здесь.

ЗУП 3.1.25.36 (возможно и другие)
Проблема :
Широко используется процедура

УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников(МенеджерВременныхТаблиц, ТолькоРазрешенные, ПараметрыПолученияДанных) Экспорт

Данные по месяцам не соответствуют данным за квартал. То есть данные за 01.01.2023 - 31.03.2023 больше суммы за 01,02,03
Место ошибки:
УчетРабочегоВремениРасширенный.ЗапросВТДанныеУчетаВремениИСостоянийСотрудников

|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	Сотрудники.Сотрудник,
	|	СостоянияСотрудников.Состояние,
	|	СостоянияСотрудников.Период,
	|	ВЫБОР
	|		КОГДА СостоянияСотрудников.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
	|				ИЛИ СостоянияСотрудников.ДействуетДо > &ДатаОкончания
	|			ТОГДА ВЫБОР
	|					КОГДА &ОтноситьПереходящуюЧастьСменыКДнюНачала
	|						ТОГДА ДОБАВИТЬКДАТЕ(&ДатаОкончания, ДЕНЬ, 1)
	|					ИНАЧЕ &ДатаОкончания
	|				КОНЕЦ
	|		ИНАЧЕ СостоянияСотрудников.ДействуетДо
	|	КОНЕЦ,
	|	СостоянияСотрудников.ВидВремени
	|ИЗ
	|	ВТСотрудникиМесяцы КАК Сотрудники  //ВТСотрудникиМесяцы содержит 3 записи по сотруднику
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудников
	|		ПО Сотрудники.ГоловнойСотрудник = СостоянияСотрудников.Сотрудник
//8123460++ при запросе за квартал задваиваются сотрудники с отклонениями 
//	|			И (СостоянияСотрудников.Период > &ДатаНачала) 
//нужно так
	|			И (СостоянияСотрудников.Период > Сотрудники.ДатаНачала)
//8123460--	
	|			И Сотрудники.ДатаНачала <= СостоянияСотрудников.Период
	|			И (ДОБАВИТЬКДАТЕ(Сотрудники.ДатаОкончания, ДЕНЬ, 1) >= СостоянияСотрудников.Период)
	|			И (СостоянияСотрудников.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение))
	|			И (СостоянияСотрудников.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Работа))
	|			И (СостоянияСотрудников.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком))

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. talker 17.05.23 09:31 Сейчас в теме
Вдогонку - еще одна ветка запроса
	ТекстЗапросаВТДанныеУчетаВремениПоСостояниям = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	СотрудникиМесяцы.Сотрудник КАК Сотрудник,
	|	СостоянияСотрудниковСрезПоследних.Состояние КАК Состояние,
	|	&ДатаНачала КАК НачалоПериода,
	|	ВЫБОР
	|		КОГДА СостоянияСотрудниковСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)
	|				ИЛИ СостоянияСотрудниковСрезПоследних.ДействуетДо > &ДатаОкончания
	|			ТОГДА ВЫБОР
	|					КОГДА &ОтноситьПереходящуюЧастьСменыКДнюНачала
	|						ТОГДА ДОБАВИТЬКДАТЕ(&ДатаОкончания, ДЕНЬ, 1)
	|					ИНАЧЕ &ДатаОкончания
	|				КОНЕЦ
	|		ИНАЧЕ СостоянияСотрудниковСрезПоследних.ДействуетДо
	|	КОНЕЦ КАК ОкончаниеПериода,
	|	СостоянияСотрудниковСрезПоследних.ВидВремени КАК ВидВремени
	|ПОМЕСТИТЬ ВТСостоянияСотрудников
	|ИЗ
	|	РегистрСведений.СостоянияСотрудников КАК СостоянияСотрудниковСрезПоследних
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудникиМесяцы КАК СотрудникиМесяцы
	|		ПО СостоянияСотрудниковСрезПоследних.Сотрудник = СотрудникиМесяцы.ГоловнойСотрудник
//8123460++	
//	|			И (СостоянияСотрудниковСрезПоследних.Период <= &ДатаНачала)
	|			И (СостоянияСотрудниковСрезПоследних.Период <= СотрудникиМесяцы.ДатаНачала)
//8123460--	
	|			И (СостоянияСотрудниковСрезПоследних.ДействуетДо = ДАТАВРЕМЯ(1, 1, 1)   
//8123460++	
//	|				ИЛИ СостоянияСотрудниковСрезПоследних.ДействуетДо >= &ДатаНачала)
	|				ИЛИ СостоянияСотрудниковСрезПоследних.ДействуетДо >= СотрудникиМесяцы.ДатаНачала)	
//8123460--	
	|			И (СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Увольнение))
	|			И (СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Работа))
	|			И (СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.РаботаВОтпускеПоУходуЗаРебенком))

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот