Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отображение загрузки выбранного номера в календаре

Отображение загрузки выбранного номера в календаре
Я
   JuixyJes
 
15.10.19 - 12:38
Доброго дня! Пытаюсь вот вывести корректно загруженность номера в календарь, но столкнулась с проблемой неправильного отображения, подскажите пожалуйста, что я делаю не так?

&НаСервере
Функция ПолучитьСведенияОЗанятостиНомера()
     лТекст = "
        |ВЫБРАТЬ
        |    ПП_ЗагруженностьОстатки.Организация КАК Организация,
        |    ПП_ЗагруженностьОстатки.НомерПроживания КАК НомерПроживания,
        |    ПП_ЗагруженностьОстатки.КомнатаПроживания КАК КомнатаПроживания,
        |    ПП_ЗагруженностьОстатки.КойкаПроживания КАК КойкаПроживания,
        |    ПП_ЗагруженностьОстатки.День КАК День,
        |    ПП_ЗагруженностьОстатки.ВидЗанятостиНомера КАК ВидЗанятостиНомера,
        |    ПП_ЗагруженностьОстатки.СостояниеОстаток КАК СостояниеОстаток
        |ИЗ
        |    РегистрНакопления.ПП_Загруженность.Остатки(&ДТ, ) КАК ПП_ЗагруженностьОстатки
        |ГДЕ
        |    ПП_ЗагруженностьОстатки.НомерПроживания = &НомерПроживания
        |
        |УПОРЯДОЧИТЬ ПО
        |    Организация,
        |    НомерПроживания,
        |    КомнатаПроживания,
        |    КойкаПроживания,
        |    День,
        |    ВидЗанятостиНомера
        |";
    лЗапрос = Новый Запрос(лТекст);
    
    ДТ = Объект.Дата;
    НомерПроживания = Объект.НомерПроживания;
    лЗапрос.УстановитьПараметр("ДТ", ДТ);
    лЗапрос.УстановитьПараметр("НомерПроживания", НомерПроживания);
    
    ТЗ = лЗапрос.Выполнить().Выгрузить();
    ТЗ.Колонки.Добавить("ТекущееЗаселение");
    ТЗ.ЗаполнитьЗначения(ЛОЖЬ,"ТекущееЗаселение");
    
    КоличествоДней = (НачалоДня(Объект.ДатаОкончания) - НачалоДня(Объект.ДатаНачала)) / (60 * 60 * 24)+1;     
    
    ТекДата = НачалоДня(Объект.ДатаНачала);
    Для Сч = 1 по КоличествоДней Цикл        
        строкаТЗ = ТЗ.Найти(ТекДата,"День");
        Если строкаТЗ = Неопределено Тогда
            строкаТЗ = ТЗ.Добавить();
            строкаТЗ.Организация = Объект.Организация;
            строкаТЗ.номерПроживания = Объект.НомерПроживания;
            строкаТЗ.КомнатаПроживания = Объект.КомнатаПроживания;
            строкаТЗ.КойкаПроживания = Объект.КойкаПроживания;
            строкаТЗ.День    = ТекДата;
            строкаТЗ.ТекущееЗаселение = ИСТИНА;
        Иначе
            Если строкаТЗ.День>=Объект.ДатаНачала и строкаТЗ.День<=Объект.ДатаОкончания Тогда
                строкаТЗ.ТекущееЗаселение = ИСТИНА;
            КонецЕсли;    
        КонецЕсли;    
        ТекДата = ТекДата+60*60*24;
    КонецЦикла;
    ТЗ.ВыбратьСтроку("Посмотримс");    
    Возврат ТЗ;
КонецФункции    

&НаСервере
Процедура ПолучитьЗнвченияПеречислений(Бронь,Проживание)
    Бронь = Перечисления.ВидЗанятостиНомера.Бронь;
    Проживание = Перечисления.ВидЗанятостиНомера.Проживание;
Конецпроцедуры    

&НаКлиенте
Процедура КалендарьПриВыводеПериода(Элемент, ОформлениеПериода)
    Перем Бронь,Проживание;
     загруженность = ПолучитьСведенияОЗанятостиНомера();
     ПолучитьЗнвченияПеречислений(Бронь,Проживание);
     Для каждого ТекДата Из ОформлениеПериода.Даты Цикл    
         Для каждого стр из загруженность Цикл
             Если (ТекДата.Дата = стр.День) Тогда
                 Если стр.ТекущееЗаселение Тогда
                     ТекДата.ЦветФона = WebЦвета.ХакиТемный;
                 ИначеЕсли стр.ВидЗанятостиНомера = Проживание Тогда
                     ТекДата.ЦветФона = WebЦвета.НейтральноАквамариновый;
                 ИначеЕсли стр.ВидЗанятостиНомера = Бронь Тогда
                     ТекДата.ЦветФона = WebЦвета.Хаки;
                 КонецЕсли;        
             КонецЕсли;    
         КонецЦикла;
     КонецЦикла;
КонецПроцедуры
 
 
   JuixyJes
 
1 - 15.10.19 - 12:38
   JuixyJes
 
2 - 15.10.19 - 12:39
вот так отображается
   D_E_S_131
 
3 - 15.10.19 - 13:02
Я бы в условия по цветам еще приписал:
...
Иначе
   ТекДата.ЦветФона = Новый Цвет;
КонецЕсли;
   D_E_S_131
 
4 - 15.10.19 - 13:19
А вообще конечно "жесть" хранить состояния в регистре накопления. :(
   JuixyJes
 
5 - 15.10.19 - 15:18
(4) Это допил уже не мой, мне под него надо переписать алгоритм
   singlych
 
6 - 15.10.19 - 15:30
Как это вообще работает?

&НаСервере
Функция ПолучитьСведенияОЗанятостиНомера()
    ...
    ТЗ = лЗапрос.Выполнить().Выгрузить();
    ...
    Возврат ТЗ;
КонецФункции

&НаКлиенте
Процедура КалендарьПриВыводеПериода(Элемент, ОформлениеПериода)
    ...
    загруженность = ПолучитьСведенияОЗанятостиНомера();
   JuixyJes
 
7 - 15.10.19 - 15:31
(6) https://priscree.ru/img/94f49b13d58d65.jpg
возвращает вот такую картину
   Aleksandr N
 
8 - 15.10.19 - 15:38
(6) клиент то толстый небось.
   JuixyJes
 
9 - 15.10.19 - 15:40
(8) он самый
   Aleksandr N
 
10 - 15.10.19 - 15:52
(9) Не православно.
   singlych
 
11 - 15.10.19 - 16:06
(10) я бы сказал, неспортивно
(7) так у вас там в ТЗ на 10е число три строки, оно три раза и красится

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.