По теме из базы знаний
- Неоптимальная работа запроса
- Партионный учет ФИФО ЛИФО. Остатки поступлений, пример получения данных партионного учета, если его нет. Вернуть остатки партий. Списать по срокам годности ФИФО ЛИФО
- Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 1
- Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 2
- Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)запрос работает верно, не верная логика обработки результата запроса.
Зачем вы запросом получаете занятые аудиторию и преподавателя и потом сообщаете об этом пользователю?
Если уж вы получаете занятые аудиторию и преподавателя, то проверяйте запрос на пустоту, если условие выполняется, то записываем новые занятости аудитории и преподавателя, если не выполняется, то сообщаем пользователю о том, что указанные аудитория и преподаватель заняты.
Зачем вы запросом получаете занятые аудиторию и преподавателя и потом сообщаете об этом пользователю?
Если уж вы получаете занятые аудиторию и преподавателя, то проверяйте запрос на пустоту, если условие выполняется, то записываем новые занятости аудитории и преподавателя, если не выполняется, то сообщаем пользователю о том, что указанные аудитория и преподаватель заняты.
(4)
на пустоту сделал, что-то все равно так же работает
на пустоту сделал, что-то все равно так же работает
Процедура ОбработкаПроведения(Отказ, Режим)
Для Каждого СтрокаПредметы Из Предметы Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасписаниеЗанятий.Аудитория КАК Аудитория,
| РасписаниеЗанятий.Преподаватель КАК Преподаватель,
| РасписаниеЗанятий.Час КАК Час
|ИЗ
| РегистрСведений.РасписаниеЗанятий.СрезПоследних(&День, ) КАК РасписаниеЗанятий
|ГДЕ
| (РасписаниеЗанятий.Аудитория = &Аудитория
| И РасписаниеЗанятий.Час = &Час
| ИЛИ РасписаниеЗанятий.Преподаватель = &Преподаватель
| И РасписаниеЗанятий.Час = &Час)";
Запрос.УстановитьПараметр("День", День);
Запрос.УстановитьПараметр("Час", СтрокаПредметы.Час);
Запрос.УстановитьПараметр("Аудитория", СтрокаПредметы.Аудитория);
Запрос.УстановитьПараметр("Преподаватель", СтрокаПредметы.Преподаватель);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаЗанятости = РезультатЗапроса.Выбрать();
Пока ВыборкаЗанятости.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(СтрокаПредметы.Аудитория) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Вы не указали аудиторию.";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗанятости.Аудитория = СтрокаПредметы.Аудитория Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Аудитория " + СтрокаПредметы.Аудитория.Наименование + " уже занята в этот день и время.";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
Если ВыборкаЗанятости.Преподаватель = СтрокаПредметы.Преподаватель Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Преподаватель " + СтрокаПредметы.Преподаватель.Наименование + " уже занят в это время.";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если Не Отказ Тогда
Движения.РасписаниеЗанятий.Записывать = Истина;
Для Каждого ТекСтрокаПредметы Из Предметы Цикл
Движение = Движения.РасписаниеЗанятий.Добавить();
Движение.Период = Дата;
Движение.Аудитория = ТекСтрокаПредметы.Аудитория;
Движение.День = День;
Движение.Час = ТекСтрокаПредметы.Час;
Движение.Преподаватель = ТекСтрокаПредметы.Преподаватель;
Движение.Группа = Группа;
Движение.Предмет = ТекСтрокаПредметы.Предмет;
Движение.ТипЗанятия = ТекСтрокаПредметы.ТипЗанятия;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Показать
(9) Обычно пляшут от аудиторий. Это место встречи преподавателя и группы. Более нигде они встретится не могут.
Поэтому измерения это время и место, всё остальное ресурсы.
Расписание может утверждаться и изменяться в течении времени. С 01 сентября одно, далее с 01 января во втором семестре другое. В течении семестра в аудитории потекла крыша и нужен срочный ремонт на месяц. Расписание перекраивают. Причин изменения расписания множество.
Откройте дневник.ру или элжур - посмотрите как это там реализовано.
Время это тоже расчетная величина - понедельная или четная не четная неделя и т.д.
Поэтому измерения это время и место, всё остальное ресурсы.
Расписание может утверждаться и изменяться в течении времени. С 01 сентября одно, далее с 01 января во втором семестре другое. В течении семестра в аудитории потекла крыша и нужен срочный ремонт на месяц. Расписание перекраивают. Причин изменения расписания множество.
Откройте дневник.ру или элжур - посмотрите как это там реализовано.
Время это тоже расчетная величина - понедельная или четная не четная неделя и т.д.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот