Нужна помощь - найти ошибку в запросе

1. SheremetevaValentina 26.09.24 14:31 Сейчас в теме
Коллеги! Вопрос, возможно странные, но тк программирую редко, прошу тапки не кидать

Конфигурация Управление ПроизводственнымПредприятием.
Задача стояла следующая: контролировать кто когда получал спецодежду и когда необходимо выдать в следующий раз.

Ниже приведен запрос. Он последовательно выбирает следующую информацию:
1. Кто вообще работает (не уволен, не в декрете)
2. Кто должен получать спецодежду (собственный регистр, к нему вопросов нет, работает)
3. Когда последний раз получал спецодежду, при этом по сроку полезного использования вычисляется ОриентировочнаяДатаСдачи (она же дата, когда нужно одеть в следующий раз). Если человек вновь прибывший, то в качестве ОриентировочнаяДатаСдачи ставится дата формирования отчета.

Формально отчет выдает нужные мне данные (см первый рисунок), но как только указывается отбор по периоду (при этом дата формирования отчета попадает в указанный период), люди, которые ранее не были одеты (т.е. кому Ориентировочную дату сдачи поставили принудительно как дату формирования отчета) пропадают (см рис 2)

Помогите найти ошибку

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СписокРаботников.Сотрудник,
	СписокРаботников.СотрудникФизлицо,
	СписокРаботников.СотрудникТекущаяДолжностьКомпании,
	СписокРаботников.Состояние,
	СписокРаботников.СотрудникТекущееПодразделениеКомпании,
	СписокРаботников.Должность,
	СписокРаботников.ПодразделениеОрганизации
ПОМЕСТИТЬ ОниРаботают
ИЗ
	СписокРаботников КАК СписокРаботников
ГДЕ
	СписокРаботников.Состояние В(&Состояние)
;

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПотребностиИРазмеры.РазмерОбуви,
	ПотребностиИРазмеры.РазмерОдежды,
	ПотребностиИРазмеры.Рост,
	ПотребностиИРазмеры.Номенклатура,
	ПотребностиИРазмеры.НазначениеИспользования,
	ПотребностиИРазмеры.ФизЛицо,
	ПотребностиИРазмеры.Действие,
	ОниРаботают.СотрудникТекущаяДолжностьКомпании КАК Должность,
	ОниРаботают.СотрудникТекущееПодразделениеКомпании КАК Подразделение
ПОМЕСТИТЬ КогоВоЧтоОдеть
ИЗ
	ПотребностиИРазмеры КАК ПотребностиИРазмеры
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОниРаботают КАК ОниРаботают
		ПО ПотребностиИРазмеры.ФизЛицо = ОниРаботают.СотрудникФизлицо
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПередачаМатериаловВЭксплуатациюМатериалы.Ссылка,
	ПередачаМатериаловВЭксплуатациюМатериалы.НомерСтроки,
	ПередачаМатериаловВЭксплуатациюМатериалы.ЕдиницаИзмерения,
	ПередачаМатериаловВЭксплуатациюМатериалы.Количество,
	ПередачаМатериаловВЭксплуатациюМатериалы.Коэффициент,
	ПередачаМатериаловВЭксплуатациюМатериалы.НазначениеИспользования,
	ПередачаМатериаловВЭксплуатациюМатериалы.Номенклатура,
	ПередачаМатериаловВЭксплуатациюМатериалы.СерияНоменклатуры,
	ПередачаМатериаловВЭксплуатациюМатериалы.ФизЛицо,
	ПередачаМатериаловВЭксплуатациюМатериалы.ХарактеристикаНоменклатуры,
	ПередачаМатериаловВЭксплуатациюМатериалы.НазначениеИспользования.СрокПолезногоИспользования,
	ПередачаМатериаловВЭксплуатациюМатериалы.Ссылка.Дата,
	ДОБАВИТЬКДАТЕ(ПередачаМатериаловВЭксплуатациюМатериалы.Ссылка.Дата, МЕСЯЦ, ПередачаМатериаловВЭксплуатациюМатериалы.НазначениеИспользования.СрокПолезногоИспользования) КАК ОриентировочнаяДатаСдачи
ПОМЕСТИТЬ ЭксплуатацияСНазначениемИспользованияИСроком
ИЗ
	Документ.ПередачаМатериаловВЭксплуатацию.Материалы КАК ПередачаМатериаловВЭксплуатациюМатериалы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.Ссылка,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.НомерСтроки,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.ЕдиницаИзмерения,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.Количество,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.Коэффициент,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.НазначениеИспользования,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.Номенклатура,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.СерияНоменклатуры,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.ФизЛицо,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.ХарактеристикаНоменклатуры,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.НазначениеИспользования.СрокПолезногоИспользования,
	ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.ДатаПередачиВЭксплуатацию,
	ДОБАВИТЬКДАТЕ(ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.ДатаПередачиВЭксплуатацию, МЕСЯЦ, ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы.НазначениеИспользования.СрокПолезногоИспользования)
ИЗ
	Документ.ВводНачальныхОстатковМатериаловВЭксплуатации.Материалы КАК ВводНачальныхОстатковМатериаловВЭксплуатацииМатериалы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	СписаниеМатериаловИзЭксплуатацииМатериалы.Ссылка,
	СписаниеМатериаловИзЭксплуатацииМатериалы.НомерСтроки,
	СписаниеМатериаловИзЭксплуатацииМатериалы.ЕдиницаИзмерения,
	СписаниеМатериаловИзЭксплуатацииМатериалы.Количество,
	СписаниеМатериаловИзЭксплуатацииМатериалы.Коэффициент,
	СписаниеМатериаловИзЭксплуатацииМатериалы.НазначениеИспользования,
	СписаниеМатериаловИзЭксплуатацииМатериалы.Номенклатура,
	СписаниеМатериаловИзЭксплуатацииМатериалы.СерияНоменклатуры,
	СписаниеМатериаловИзЭксплуатацииМатериалы.ФизЛицо,
	СписаниеМатериаловИзЭксплуатацииМатериалы.ХарактеристикаНоменклатуры,
	СписаниеМатериаловИзЭксплуатацииМатериалы.НазначениеИспользования.СрокПолезногоИспользования,
	СписаниеМатериаловИзЭксплуатацииМатериалы.Ссылка.Дата,
	ДОБАВИТЬКДАТЕ(СписаниеМатериаловИзЭксплуатацииМатериалы.Ссылка.Дата, МЕСЯЦ, СписаниеМатериаловИзЭксплуатацииМатериалы.НазначениеИспользования.СрокПолезногоИспользования)
ИЗ
	Документ.СписаниеМатериаловИзЭксплуатации.Материалы КАК СписаниеМатериаловИзЭксплуатацииМатериалы
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МатериалыВЭксплуатацииОстатки.Подразделение,
	МатериалыВЭксплуатацииОстатки.Номенклатура,
	МатериалыВЭксплуатацииОстатки.ХарактеристикаНоменклатуры,
	МатериалыВЭксплуатацииОстатки.СерияНоменклатуры,
	МатериалыВЭксплуатацииОстатки.КоличествоОстаток,
	ОниРаботают.СотрудникТекущаяДолжностьКомпании,
	ОниРаботают.СотрудникТекущееПодразделениеКомпании,
	ОниРаботают.Сотрудник,
	ОниРаботают.СотрудникФизлицо,
	ОниРаботают.Должность
ПОМЕСТИТЬ ОстаткиМатериаловВЭксплуатации
ИЗ
	ОниРаботают КАК ОниРаботают
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.МатериалыВЭксплуатации.Остатки КАК МатериалыВЭксплуатацииОстатки
		ПО ОниРаботают.СотрудникФизлицо = МатериалыВЭксплуатацииОстатки.ФизЛицо
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	МатериалыВЭксплуатацииОстаткиИОбороты.Номенклатура КАК Номенклатура,
	МатериалыВЭксплуатацииОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
	МатериалыВЭксплуатацииОстаткиИОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
	ОстаткиМатериаловВЭксплуатации.СотрудникТекущаяДолжностьКомпании КАК СотрудникТекущаяДолжностьКомпании,
	ЭксплуатацияСНазначениемИспользованияИСроком.НазначениеИспользования,
	ЭксплуатацияСНазначениемИспользованияИСроком.НазначениеИспользованияСрокПолезногоИспользования КАК СрокПолезногоИспользования,
	ЭксплуатацияСНазначениемИспользованияИСроком.Дата КАК Дата,
	ЭксплуатацияСНазначениемИспользованияИСроком.ОриентировочнаяДатаСдачи КАК ОриентировочнаяДатаСдачи,
	ОстаткиМатериаловВЭксплуатации.СотрудникТекущееПодразделениеКомпании КАК СотрудникТекущееПодразделениеКомпании,
	NULL КАК РазмерОбуви,
	NULL КАК РазмерОдежды,
	NULL КАК Рост,
	ОстаткиМатериаловВЭксплуатации.Сотрудник,
	ОстаткиМатериаловВЭксплуатации.СотрудникФизлицо,
	МатериалыВЭксплуатацииОстаткиИОбороты.Регистратор
ПОМЕСТИТЬ ОстаткиНазначениеИДатаСдачи
ИЗ
	ОстаткиМатериаловВЭксплуатации КАК ОстаткиМатериаловВЭксплуатации
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.МатериалыВЭксплуатации.ОстаткиИОбороты(, &Период, Регистратор, , ) КАК МатериалыВЭксплуатацииОстаткиИОбороты
			ЛЕВОЕ СОЕДИНЕНИЕ ЭксплуатацияСНазначениемИспользованияИСроком КАК ЭксплуатацияСНазначениемИспользованияИСроком
			ПО МатериалыВЭксплуатацииОстаткиИОбороты.Регистратор = ЭксплуатацияСНазначениемИспользованияИСроком.Ссылка
				И МатериалыВЭксплуатацииОстаткиИОбороты.Номенклатура = ЭксплуатацияСНазначениемИспользованияИСроком.Номенклатура
				И МатериалыВЭксплуатацииОстаткиИОбороты.СерияНоменклатуры = ЭксплуатацияСНазначениемИспользованияИСроком.СерияНоменклатуры
				И МатериалыВЭксплуатацииОстаткиИОбороты.ХарактеристикаНоменклатуры = ЭксплуатацияСНазначениемИспользованияИСроком.ХарактеристикаНоменклатуры
				И МатериалыВЭксплуатацииОстаткиИОбороты.ФизЛицо = ЭксплуатацияСНазначениемИспользованияИСроком.ФизЛицо
		ПО ОстаткиМатериаловВЭксплуатации.Номенклатура = МатериалыВЭксплуатацииОстаткиИОбороты.Номенклатура
			И ОстаткиМатериаловВЭксплуатации.ХарактеристикаНоменклатуры = МатериалыВЭксплуатацииОстаткиИОбороты.ХарактеристикаНоменклатуры
			И ОстаткиМатериаловВЭксплуатации.СерияНоменклатуры = МатериалыВЭксплуатацииОстаткиИОбороты.СерияНоменклатуры
			И ОстаткиМатериаловВЭксплуатации.СотрудникФизлицо = МатериалыВЭксплуатацииОстаткиИОбороты.ФизЛицо
ГДЕ
	МатериалыВЭксплуатацииОстаткиИОбороты.КоличествоПриход > 0
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ОстаткиНазначениеИДатаСдачи.Номенклатура КАК ФактическиВыданнаяСпецовка,
	ОстаткиНазначениеИДатаСдачи.ХарактеристикаНоменклатуры,
	ОстаткиНазначениеИДатаСдачи.НазначениеИспользования,
	ОстаткиНазначениеИДатаСдачи.СрокПолезногоИспользования,
	ОстаткиНазначениеИДатаСдачи.Дата КАК ДатаВыдачи,
	ОстаткиНазначениеИДатаСдачи.ОриентировочнаяДатаСдачи КАК ОриентировочнаяДатаСдачи,
	КогоВоЧтоОдеть.НазначениеИспользования КАК ДолжноеНазначениеИспользования,
	КогоВоЧтоОдеть.Номенклатура КАК НеобходимаяСпецовка,
	КогоВоЧтоОдеть.ФизЛицо КАК ФизЛицо,
	КогоВоЧтоОдеть.Должность КАК Должность,
	КогоВоЧтоОдеть.РазмерОбуви КАК РазмерОбуви,
	КогоВоЧтоОдеть.РазмерОдежды КАК РазмерОдежды,
	КогоВоЧтоОдеть.Рост КАК Рост,
	ОстаткиНазначениеИДатаСдачи.СотрудникТекущееПодразделениеКомпании
ПОМЕСТИТЬ Предитог1
ИЗ
	КогоВоЧтоОдеть КАК КогоВоЧтоОдеть
		ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиНазначениеИДатаСдачи КАК ОстаткиНазначениеИДатаСдачи
		ПО КогоВоЧтоОдеть.ФизЛицо = ОстаткиНазначениеИДатаСдачи.СотрудникФизлицо
			И КогоВоЧтоОдеть.Номенклатура = ОстаткиНазначениеИДатаСдачи.Номенклатура
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Предитог1.ФактическиВыданнаяСпецовка,
	Предитог1.ХарактеристикаНоменклатуры,
	Предитог1.НазначениеИспользования,
	Предитог1.СрокПолезногоИспользования,
	МАКСИМУМ(Предитог1.ДатаВыдачи) КАК ДатаВыдачи,
	Предитог1.ДолжноеНазначениеИспользования,
	Предитог1.НеобходимаяСпецовка,
	Предитог1.ФизЛицо,
	Предитог1.Должность,
	Предитог1.РазмерОбуви,
	Предитог1.РазмерОдежды,
	Предитог1.Рост,
	Предитог1.СотрудникТекущееПодразделениеКомпании,
	МАКСИМУМ(ВЫБОР
			КОГДА Предитог1.ОриентировочнаяДатаСдачи ЕСТЬ NULL
				ТОГДА &Период
			ИНАЧЕ Предитог1.ОриентировочнаяДатаСдачи
		КОНЕЦ) КАК ОриентировочнаяДатаСдачи
ПОМЕСТИТЬ Предытог
ИЗ
	Предитог1 КАК Предитог1

СГРУППИРОВАТЬ ПО
	Предитог1.ФактическиВыданнаяСпецовка,
	Предитог1.СотрудникТекущееПодразделениеКомпании,
	Предитог1.НеобходимаяСпецовка,
	Предитог1.Должность,
	Предитог1.НазначениеИспользования,
	Предитог1.ДолжноеНазначениеИспользования,
	Предитог1.ФизЛицо,
	Предитог1.ХарактеристикаНоменклатуры,
	Предитог1.СрокПолезногоИспользования,
	Предитог1.РазмерОбуви,
	Предитог1.РазмерОдежды,
	Предитог1.Рост
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Предытог.ФактическиВыданнаяСпецовка,
	Предытог.ХарактеристикаНоменклатуры,
	Предытог.НазначениеИспользования,
	Предытог.СрокПолезногоИспользования,
	Предытог.ДатаВыдачи КАК ДатаВыдачи,
	Предытог.ДолжноеНазначениеИспользования,
	Предытог.НеобходимаяСпецовка,
	Предытог.ФизЛицо КАК ФизЛицо,
	Предытог.Должность,
	Предытог.РазмерОбуви,
	Предытог.РазмерОдежды,
	Предытог.Рост,
	Предытог.СотрудникТекущееПодразделениеКомпании,
	Предытог.ОриентировочнаяДатаСдачи КАК ОриентировочнаяДатаСдачи
ИЗ
	Предытог КАК Предытог
Показать


В предыдущей версии таблица Предытог1 не было, добавила в попытке найти ошибку.
Прикрепленные файлы:
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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