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

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 не было, добавила в попытке найти ошибку.
Прикрепленные файлы:
По теме из базы знаний
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
Оставьте свое сообщение

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