Имя: Пароль:
1C
1С v8
Структура подчиненности в не типовых документах
0 JuixyJes
 
23.08.19
14:06
Добрый день, о великий форум! До сих пор мучаю гостиницу. Остался отчет загруженности НФ, который я так долго откладывала.


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

&НаКлиенте
Процедура Посмотреть(Команда)
    ПосмотретьНаСервере(Отчет.ДГ);
КонецПроцедуры
1 JuixyJes
 
23.08.19
14:07
2 JuixyJes
 
23.08.19
14:07
Вот что выходит
3 JuixyJes
 
23.08.19
14:07
Хотя вроде бы цвет задаю отличный от того что на картинке выводится.
4 JuixyJes
 
23.08.19
14:11
Возможно заполнение не оптимально выполняется, заполняет правильно, но цвета не верно заполняются(
5 JuixyJes
 
23.08.19
14:17
Все видят код, пугаются и выходят?
6 JuixyJes
 
23.08.19
14:24
Видимо да
7 piter3
 
23.08.19
14:31
Да
8 AlvlSpb
 
23.08.19
14:49
(0) А критерии отбора Связанные документы не устраивает?
9 Cyberhawk
 
23.08.19
14:49
Все видят баклана на той стороне ветки и выходят)
10 hhhh
 
23.08.19
15:47
(3) почему? цвет вроде похож, бюрюзовый и цвета морской волны.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn