Не верно работает запрос

1. justmuve 18.01.24 11:15 Сейчас в теме
Имеется запрос, выбираю день занятия на другой день а мне все равно пишет что аудитория занята, или преподаватель
регистр сведений переодичность в пределах дня
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 18.01.24 11:17 Сейчас в теме
(1) структура регистра сведений при этом какая?
3. justmuve 18.01.24 11:18 Сейчас в теме
(2)
Прикрепленные файлы:
5. nomad_irk 76 18.01.24 11:29 Сейчас в теме
(3)запрос работает верно, не верная логика обработки результата запроса.

Зачем вы запросом получаете занятые аудиторию и преподавателя и потом сообщаете об этом пользователю?

Если уж вы получаете занятые аудиторию и преподавателя, то проверяйте запрос на пустоту, если условие выполняется, то записываем новые занятости аудитории и преподавателя, если не выполняется, то сообщаем пользователю о том, что указанные аудитория и преподаватель заняты.
7. justmuve 18.01.24 11:45 Сейчас в теме
(4)
на пустоту сделал, что-то все равно так же работает


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

        РезультатЗапроса = Запрос.Выполнить();
        ВыборкаЗанятости = РезультатЗапроса.Выбрать();

Пока ВыборкаЗанятости.Следующий() Цикл
    Если НЕ ЗначениеЗаполнено(СтрокаПредметы.Аудитория) Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Вы не указали аудиторию.";
        Сообщение.Сообщить();
        Отказ = Истина;
        Возврат;
    КонецЕсли;
    
    Если ВыборкаЗанятости.Аудитория = СтрокаПредметы.Аудитория Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Аудитория " + СтрокаПредметы.Аудитория.Наименование + " уже занята в этот день и время.";
        Сообщение.Сообщить();
        Отказ = Истина;
        Возврат;
    КонецЕсли;

    Если ВыборкаЗанятости.Преподаватель = СтрокаПредметы.Преподаватель Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Преподаватель " + СтрокаПредметы.Преподаватель.Наименование + " уже занят в это время.";
        Сообщение.Сообщить();
        Отказ = Истина;
        Возврат;
    КонецЕсли;
    
КонецЦикла;
    КонецЦикла;
    Если Не Отказ Тогда
        Движения.РасписаниеЗанятий.Записывать = Истина;
        Для Каждого ТекСтрокаПредметы Из Предметы Цикл
            Движение = Движения.РасписаниеЗанятий.Добавить();
            Движение.Период = Дата;
            Движение.Аудитория = ТекСтрокаПредметы.Аудитория;
            Движение.День = День;
            Движение.Час = ТекСтрокаПредметы.Час;
            Движение.Преподаватель = ТекСтрокаПредметы.Преподаватель;
            Движение.Группа = Группа;
            Движение.Предмет = ТекСтрокаПредметы.Предмет; 
            Движение.ТипЗанятия = ТекСтрокаПредметы.ТипЗанятия;

        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
Показать
4. Said-We 18.01.24 11:26 Сейчас в теме
(3) Судя по структуре преподаватель может находится в разных аудиториях одновременно? Клонироваться.
Я не ошибаюсь?

(6) Не стал уже сложно спрашивать :-)
6. nomad_irk 76 18.01.24 11:30 Сейчас в теме
(4)там не только в разных аудиториях, но и на разных предметах, в разных группах и разных типах занятий......
8. Said-We 18.01.24 11:53 Сейчас в теме
(7) Структуру регистра сами делали? Не думали её переделать?
9. justmuve 18.01.24 11:55 Сейчас в теме
(8)сам, опыт у меня около 3 месяцев может что то и не так делаю на ошибках учатся как говорится)
10. Said-We 18.01.24 12:04 Сейчас в теме
(9) Обычно пляшут от аудиторий. Это место встречи преподавателя и группы. Более нигде они встретится не могут.
Поэтому измерения это время и место, всё остальное ресурсы.
Расписание может утверждаться и изменяться в течении времени. С 01 сентября одно, далее с 01 января во втором семестре другое. В течении семестра в аудитории потекла крыша и нужен срочный ремонт на месяц. Расписание перекраивают. Причин изменения расписания множество.

Откройте дневник.ру или элжур - посмотрите как это там реализовано.
Время это тоже расчетная величина - понедельная или четная не четная неделя и т.д.
11. G_113542465906431490351 18.01.24 16:39 Сейчас в теме
Я думаю, что если убрать день из параметров запроса. Затем после завершения запроса вы можете проверить, равен ли день или нет.
Оставьте свое сообщение

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