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

Дублируются строки при выполнении запроса

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

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

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

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

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

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

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


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

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

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

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