Имя: Пароль:
1C
1С v8
Выборка из результата запроса. Что влияет на количество выборок?
0 Vyacheslav 777
 
15.04.15
13:26
Здравствуйте. Подскажите. Когда делаю запрос Бывает две выборки бывает одна. С чем это связано. Не могу понять. Готовлюсь к спецу. Как пример : 1я выборка делаю по группировкам по контроля остатков, а вторую ручками пишу для цикла движения не записываются.Постоянно приходится что то изменять или добавлять в выборке. Нужно понять саму суть, что влияет на количество выборок?
1 DrShad
 
15.04.15
13:27
а конкретней, ибо ни фига не понятно
2 Лефмихалыч
 
15.04.15
13:28
(0) покажи запросы - в которой одна, а в котором две
3 DrShad
 
15.04.15
13:28
вот теперь понятно - выборка всегда одна - обход ее разный
4 DrShad
 
15.04.15
13:28
прямой или по группировкам
5 Vyacheslav 777
 
15.04.15
13:39
Делаю запрос с обработкой. В первый запрос добавляю таб часть. Во второй регистр связываю устанавливаю группировки и если что то в упорядочить то и в итоги закидываю. Кол-сумм из таб части максимум кол и сумм из регистра сумма.
6 DrShad
 
15.04.15
13:40
(5) продолжайте в том же духе - спец из вас выйдет отменный
7 Vyacheslav 777
 
15.04.15
13:41
Я так понял это сарказм.
8 Vyacheslav 777
 
15.04.15
13:45
http://infostart.ru/public/125988/ Вот все про выборки.Если вдруг кто столкнется и не найдет понимание в лице некоторых умников, которые кроме как в 1с себя не где не реализовали.
9 ДенисЧ
 
15.04.15
13:46
мда...
Пациент не может внятно выразить свои мысли, но всё-таки жалуется, что его обижают...
10 1976vas
 
15.04.15
13:46
(8) Ты изъясняешься не ясно, тебе хотели помочь.
11 fisher
 
15.04.15
13:54
(8) Если не научишься формулировать свои мысли, сложности с реализацией тоже будут не только в 1С. По ссылке я понял всё. Из (0) - ничего.
12 fisher
 
15.04.15
13:57
(5) Проблемы с обходом результата пакетного запроса, что ли?
13 Vyacheslav 777
 
15.04.15
14:16
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
        |ПОМЕСТИТЬ Вт
        |ИЗ
        |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
        |ГДЕ
        |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Вт.Номенклатура КАК Номенклатура,
        |    Вт.Количество КАК Количество,
        |    Вт.Сумма КАК Сумма,
        |    ОстаткиНоменклатурыОстатки.Склад,
        |    ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |    Вт КАК Вт
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки
        |        ПО Вт.Номенклатура = ОстаткиНоменклатурыОстатки.Номенклатура
        |ИТОГИ
        |    СУММА(Количество),
        |    СУММА(Сумма),
        |    СУММА(КоличествоОстаток)
        |ПО
        |    Номенклатура";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаНоменклатура.Следующий() Цикл
        // Вставить обработку выборки ВыборкаНоменклатура
    
        ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
    
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            // Вставить обработку выборки ВыборкаДетальныеЗаписи
        КонецЦикла;
    КонецЦикла;
14 Vyacheslav 777
 
15.04.15
14:17
Быстренько для примера сделал. Вот например если не закидывать в группировки, а в итоги закинуть то получим выборку по номенклатуре и детальные. Например в билете  сказано что остатки по всей номенклатуре, а себестоимость по складам.
15 Vyacheslav 777
 
15.04.15
14:21
Тогда как получить выборку по всей номенклатуре и как по складам?    
    ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Склад");
    
    Пока ВыборкаСклад.Следующий() ЦикЕсли применить метод из инфостарта то можноли просто сгруппировав записи получить детальные, а приминив этот метод только по склада?
16 Vyacheslav 777
 
15.04.15
14:24
Попробую сформировать вопрос. Что влияет на конечные выборки запроса? ИТОГИ? или Группировка тоже или есть еще что и какая разница?
17 scanduta
 
15.04.15
14:34
Когда делаешь 2 выборка - это первая выборка по итогам, а вторая по детальным записям
18 barrgand
 
15.04.15
14:50
(16) Консоль запросов поможет разобраться в языке запросов, чтобы не возникали вопросы - чем отличаются СГРУППИРОВАТЬ и ИТОГИ.
19 fisher
 
15.04.15
15:35
(16) Только ИТОГИ. Новички всегда путаются. Именно ИТОГИ формируют группировки. СГРУППИРОВАТЬ - это банальная свёртка (аналог свертки в таблице значений). Запрос без итогов - формирует плоскую таблицу результата (будущие детальные записи). СГРУППИРОВАТЬ - просто делает свертку этой плоской таблицы. Если рассматривать в рамках иерархического обхода результата по группировкам, то СГРУППИРОВАТЬ влияет только на количество детальных записей.
20 Зеленый пень
 
15.04.15
15:38
Кстати, переведи 1С "GROUP BY" как "СВЕРНУТЬ ПО" - вопросов было бы меньше. Но привыкаешь и так быстро.
21 fisher
 
15.04.15
15:41
(20) Ну, из-за дословного перевода путаница и возникла. Иерархические группировки в MSSQL появились позже и как производная от GROUP BY - GROUP BY WITH ROLLUP и иже с ними.