Имя: Пароль:
1C
1С v8
Дублируются строки при выполнении запроса
0 JuixyJes
 
01.08.19
16:39
Добрый вечер! Помогите, написала процедуру для заполнения диаграммы Ганта, нооооо записи вложенного запроса дублируются.

    ДиаграммаГанта = ДГ;
    ДиаграммаГанта.АвтоОпределениеПолногоИнтервала = Ложь;
    ДиаграммаГанта.УстановитьПолныйИнтервал(Отчет.Период.ДатаНачала,Отчет.Период.ДатаОкончания);
    Серия = ДиаграммаГанта.УстановитьСерию("Серия");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номера.Ссылка КАК Ссылка,
    |    ЗагруженностьНФ.ДатаЗаселения КАК ДатаЗаселения,
    |    ЗагруженностьНФ.ДатаВыезда КАК ДатаВыезда
    |ИЗ
    |    Справочник.Номера КАК Номера
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗагруженностьНФ КАК ЗагруженностьНФ
    |        ПО Номера.Ссылка = ЗагруженностьНФ.НомерПроживания";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.Ссылка);
        ТочкаНомер = ДиаграммаГанта.УстановитьТочку(ВыборкаДетальныеЗаписи.Ссылка);
        Значение = ДиаграммаГанта.ПолучитьЗначение(ТочкаНомер,Серия);
        Если ВыборкаДетальныеЗаписи.ДатаЗаселения <> NULL и ВыборкаДетальныеЗаписи.ДатаВыезда <> NULL  Тогда
            Интервал = Значение.Добавить();
            Интервал.Начало = ВыборкаДетальныеЗаписи.ДатаЗаселения;
            Интервал.Конец = ВыборкаДетальныеЗаписи.ДатаВыезда;
            Интервал.Цвет = WebЦвета.НейтральноАквамариновый;
        КонецЕсли;
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Комнаты.Ссылка КАК Ссылка,
        |    ЗагруженностьНФ.ДатаЗаселения КАК ДатаЗаселения,
        |    ЗагруженностьНФ.ДатаВыезда КАК ДатаВыезда
        |ИЗ
        |    Справочник.Комнаты КАК Комнаты
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗагруженностьНФ КАК ЗагруженностьНФ
        |        ПО Комнаты.Ссылка = ЗагруженностьНФ.КомнатаПроживания
        |ГДЕ
        |    Комнаты.Владелец = &Владелец
        |ИТОГИ ПО
        |    Ссылка";
        
        Запрос.УстановитьПараметр("Владелец", ВыборкаДетальныеЗаписи.Ссылка);
        
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаСсылкаКомнаты = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Пока ВыборкаСсылкаКомнаты.Следующий() Цикл
            Сообщить(ВыборкаСсылкаКомнаты.Ссылка);
            
            ТочкаКомната = ТочкаНомер.Точки.Добавить();
            ТочкаКомната.Значение = ВыборкаСсылкаКомнаты.Ссылка;
            ТочкаКомната.Текст = ВыборкаСсылкаКомнаты.Ссылка;
            Значение = ДиаграммаГанта.ПолучитьЗначение(ТочкаКомната,Серия);
            Выб = ВыборкаСсылкаКомнаты.Выбрать();
            
            
            Пока Выб.Следующий() Цикл
                
                Если Выб.ДатаЗаселения <> NULL и Выб.ДатаВыезда <> NULL  Тогда
                    //Интервал = Значение.Добавить();
                    //Интервал.Начало = Выб.ДатаЗаселения;
                    //Интервал.Конец = Выб.ДатаВыезда;
                    //Интервал.Цвет = WebЦвета.НейтральноАквамариновый;
                КонецЕсли;
                
                
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
1 JuixyJes
 
01.08.19
16:40
И вот там, где есть записи в регистре сведений из второго запроса - дублируются
2 JuixyJes
 
01.08.19
16:46
3 JuixyJes
 
01.08.19
17:12
И никто не поможет? Ни разу не видела еще тем связанных с диаграммой Ганта. Видимо почти никто с ней не работает.
4 vicof
 
01.08.19
17:14
Когда сама начнешь разбираться?
5 JuixyJes
 
01.08.19
17:17
(4) Вот и пытаюсь разбираться, только не всегда все получается, не могла найти информации в интернете, собственных знаний пока не хватает.
6 dka80
 
01.08.19
17:18
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗагруженностьНФ КАК ЗагруженностьНФ
        |        ПО Комнаты.Ссылка = ЗагруженностьНФ.КомнатаПроживания

Сколько записей в регистре по конкретной комнате? Две/три... Вот и дублируются
7 JuixyJes
 
01.08.19
17:19
(6) по конкретной комнате 2 записи есть. НО, выборку и делаю поэтому по итогам. Там 2 записи. а уже в 1 записи из этих двух еще 2 записи.
8 Йохохо
 
01.08.19
17:22
(7) ИТОГИ добавляют строки же
9 Йохохо
 
01.08.19
17:23
10 JuixyJes
 
01.08.19
17:31
А вот эта строка для чего? Разве не она выбирает строки, в которые входят уже записи по каждой комнате?

ВыборкаСсылкаКомнаты = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
11 dka80
 
01.08.19
17:36
(10) сделай так РезультатЗапроса.Выгрузить() и погляди. Сильно удивишься
12 dka80
 
01.08.19
17:39
Вот твой набор данных в результате запроса
Комната1 Загруженность 1
Комната1 Загруженность 2

А вот твой набор с ИТОГом

Комната1 Null
Комната1 Загруженность 1
Комната1 Загруженность 2
13 JuixyJes
 
01.08.19
17:40
(12) Ну, да. Есть такое. Ну а что мне еще то сделать?
14 JuixyJes
 
01.08.19
17:55
(12) ну Тогда вопрос, раз уж с итогом выводит 3 строки, у меня там же 2 комната тоже отображается 2жды. (2) тут скрин отображения.
15 dka80
 
01.08.19
17:56
Номера - точки диаграммы
Серии - комнаты

Итогов не нужно
16 JuixyJes
 
01.08.19
18:00
ВыборкаСсылкаКомнаты = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Пока ВыборкаСсылкаКомнаты.Следующий() Цикл
            Сообщить(ВыборкаСсылкаКомнаты.Ссылка);


Сообщение : Комната №1, Комната №2

  Выб = ВыборкаСсылкаКомнаты.Выбрать();
            
            Пока Выб.Следующий() Цикл
              Сообщить(Выб.Ссылка);

Сообщение : Комната №1, Комната №1, Комната №1, Комната №2, Комната №2
17 JuixyJes
 
01.08.19
18:00
(16) Только что проверила.
18 JuixyJes
 
02.08.19
10:21
Так, все проблему решила. В параметрах второго запроса не правильный владелец и не закрыт цикл 1
19 dka80
 
02.08.19
10:23
Молодец, наверное?
20 JuixyJes
 
02.08.19
10:37
(19) Ну не додумалась вчера, сами поймите, если 17 часов смотреть в монитор занимаясь примерно 1 и той же задачей, тяжко будет.
2 + 2 = 3.9999999999999999999999999999999...