Есть справочники Врач,Кабинет. Врач включает в себя Табличную часть с графиком работы, поле с выбором недели заполнения, поле с выбором кабинета. При проведении записи в справочнике Врач, в регистр сведений ДоступностьКабинета добавляются записи для выбранного кабинета и врача, с начала недели в каждый рабочий день врача добавляется две записи
                    - время первой записи = начало рабочего дня врача, где кабинета указывается как истина
                    - время второй записи = конец рабочего дня врача + 1 секунда, доступность - ложь
То есть, условно, с 9:00 до 18:01 врач занимает кабинет.

Вопрос следующий: как в форме справочника врач, в зависимости от выборанной недели получать только те кабинеты, которые свободны на этой недели?

P.S Регистр сведений ДоступностьКабинета должен называться ДоступностьВрача, просто не успел переименовать!

```1c
    Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

т.е. две ваши записи превращаются в одну и выбор по условию уже не выглядит таким сложным, т.к. условие значительно проще получается
передали период между С ПО для ВремяНачалаРаботы и ВремяОкончанияРаботы и отобрали Доступность
---
А что если делать выборку кабинетов, записи о которых есть в регистре с начала недели по конец недели, а затем добавлять в поле выбора кабинета только те, которые не находятся в регистре за данный промежуток времени? Мне кажется должно работать.
---
лкНаборЗаписей.Прочитать();
    лкНаборЗаписей.Очистить();
Гениально.
---
может пересмотреть схему регистра, отказавшись от двух записей
ВремяНачалаРаботы и ВремяОкончанияРаботы писать в одной записи для Доступность
тогда сразу можно будет оперировать одним условием в запросе - Доступность = Ложь

т.е. две ваши записи превращаются в одну и выбор по условию уже не выглядит таким сложным, т.к. условие значительно проще получается
передали период между С ПО для ВремяНачалаРаботы и ВремяОкончанияРаботы и отобрали Доступность
---
А что если делать выборку кабинетов, записи о которых есть в регистре с начала недели по конец недели, а затем добавлять в поле выбора кабинета только те, которые не находятся в регистре за данный промежуток времени? Мне кажется должно работать.
---
от обратного... в принципе тоже возможно
если так удобнее именно вам, то кто ж против что скажет )

можно даже одним запросом все запилить