Вход | Регистрация
 
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 и той же задачей, тяжко будет.

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