Отбор в поле выбора с учетом ограничений
Есть справочники Врач,Кабинет. Врач включает в себя Табличную часть с графиком работы, поле с выбором недели заполнения, поле с выбором кабинета. При проведении записи в справочнике Врач, в регистр сведений ДоступностьКабинета добавляются записи для выбранного кабинета и врача, с начала недели в каждый рабочий день врача добавляется две записи
- время первой записи = начало рабочего дня врача, где кабинета указывается как истина
- время второй записи = конец рабочего дня врача + 1 секунда, доступность - ложь
То есть, условно, с 9:00 до 18:01 врач занимает кабинет.
Вопрос следующий: как в форме справочника врач, в зависимости от выборанной недели получать только те кабинеты, которые свободны на этой недели?
P.S Регистр сведений ДоступностьКабинета должен называться ДоступностьВрача, просто не успел переименовать!
- время первой записи = начало рабочего дня врача, где кабинета указывается как истина
- время второй записи = конец рабочего дня врача + 1 секунда, доступность - ложь
То есть, условно, с 9:00 до 18:01 врач занимает кабинет.
Вопрос следующий: как в форме справочника врач, в зависимости от выборанной недели получать только те кабинеты, которые свободны на этой недели?
P.S Регистр сведений ДоступностьКабинета должен называться ДоступностьВрача, просто не успел переименовать!
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
лкНаборЗаписей= РегистрыСведений.ДоступностьКабинета.СоздатьНаборЗаписей();
лкНаборЗаписей.Отбор["Кабинет"].ВидСравнения=ВидСравнения.Равно;
лкНаборЗаписей.Отбор["Кабинет"].Значение= Объект.КабинетПриема;
лкНаборЗаписей.Отбор["Кабинет"].Использование=Истина;
лкНаборЗаписей.Прочитать();
лкНаборЗаписей.Очистить();
Для каждого лкТекСТрока Из Объект.ГрафикРаботы Цикл
Если (лкТекСтрока.РабочийДень) Тогда
лкНовЗапись= лкНаборЗаписей.Добавить();
лкНовЗапись.Врач= Объект.Ссылка;
лкНовЗапись.Доступность= Истина;
лкНовЗапись.Кабинет= Объект.КабинетПриема;
лкНовЗапись.Период= Объект.НеделяЗаполнения+ (86400*(лкТекСтрока.НомерСтроки-1))+Час(лкТекСтрока.ВремяНачала)*3600+Минута(лкТекСтрока.ВремяНачала)*60;
лкНовЗапись= лкНаборЗаписей.Добавить();
лкНовЗапись.Врач= Объект.Ссылка;
лкНовЗапись.Доступность= Ложь;
лкНовЗапись.Кабинет= Объект.КабинетПриема;
лкНовЗапись.Период= Объект.НеделяЗаполнения+ (86400*(лкТекСтрока.НомерСтроки-1))+Час(лкТекСтрока.ВремяОкончания)*3600+Минута(лкТекСтрока.ВремяНачала)*60+1;
КонецЕсли;
КонецЦикла;
лкНаборЗаписей.Записать(Истина);
КонецПроцедуры
ПоказатьПрикрепленные файлы:
По теме из базы знаний
Найденные решения
(1) может пересмотреть схему регистра, отказавшись от двух записей
ВремяНачалаРаботы и ВремяОкончанияРаботы писать в одной записи для Доступность
тогда сразу можно будет оперировать одним условием в запросе - Доступность = Ложь
т.е. две ваши записи превращаются в одну и выбор по условию уже не выглядит таким сложным, т.к. условие значительно проще получается
передали период между С ПО для ВремяНачалаРаботы и ВремяОкончанияРаботы и отобрали Доступность
ВремяНачалаРаботы и ВремяОкончанияРаботы писать в одной записи для Доступность
тогда сразу можно будет оперировать одним условием в запросе - Доступность = Ложь
т.е. две ваши записи превращаются в одну и выбор по условию уже не выглядит таким сложным, т.к. условие значительно проще получается
передали период между С ПО для ВремяНачалаРаботы и ВремяОкончанияРаботы и отобрали Доступность
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) может пересмотреть схему регистра, отказавшись от двух записей
ВремяНачалаРаботы и ВремяОкончанияРаботы писать в одной записи для Доступность
тогда сразу можно будет оперировать одним условием в запросе - Доступность = Ложь
т.е. две ваши записи превращаются в одну и выбор по условию уже не выглядит таким сложным, т.к. условие значительно проще получается
передали период между С ПО для ВремяНачалаРаботы и ВремяОкончанияРаботы и отобрали Доступность
ВремяНачалаРаботы и ВремяОкончанияРаботы писать в одной записи для Доступность
тогда сразу можно будет оперировать одним условием в запросе - Доступность = Ложь
т.е. две ваши записи превращаются в одну и выбор по условию уже не выглядит таким сложным, т.к. условие значительно проще получается
передали период между С ПО для ВремяНачалаРаботы и ВремяОкончанияРаботы и отобрали Доступность
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот