Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 09:06

Отбор в поле выбора с учетом ограничений

Автор dsd sdsdsd, 30 ноя 2022, 10:51

0 Пользователей и 1 гость просматривают эту тему.

dsd sdsdsd

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

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

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

Похожие темы (5)

Рейтинг@Mail.ru

Поиск