Имя: Пароль:
1C
1C 7.7
v7: Группировка с учетом различий в разных полях - как?
0 sivsoft
 
06.08.13
11:37
Доброго времени суток!
Тупой вопрос, но просто никогда этого не возникало.
Есть Запрос, который формирует выборку из документов ПриходнаяНакладнаяЗапасы:
//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ПриходнаяНакладнаяЗапасы = Документ.ПриходнаяНакладнаяЗапасы.ТекущийДокумент;
|МестоХранения = Документ.ПриходнаяНакладнаяЗапасы.МестоХранения;
|ТМЦ = Документ.ПриходнаяНакладнаяЗапасы.ТМЦ;
|Кво = Документ.ПриходнаяНакладнаяЗапасы.Кво;
|СуммаСНДС = Документ.ПриходнаяНакладнаяЗапасы.СуммаСНДС;
|Заказ = Документ.ПриходнаяНакладнаяЗапасы.Заказ;
|Контрагент = Документ.ПриходнаяНакладнаяЗапасы.Контрагент;
|Функция КвоСумма = Сумма(Кво);
|Функция СуммаСНДССумма = Сумма(СуммаСНДС);
|Группировка Заказ;
|Группировка ТМЦ без групп;
|Условие(МестоХранения в ВыбМестоХранения);
|Условие(ТМЦ в ВыбТМЦ);
|Условие(Заказ в ВыбЗаказ);
|Условие(Контрагент в ВыбКонтрагент);
|
Все бы хорошо, но попались приходные накладные, в которых ТМЦ не различается и остальные поля тоже. Различается только номер приходной накладной, т.е. поле ПриходнаяНакладнаяЗапасы. Как тут сделать, чтобы при различии в любом поле он не группировал записи?
1 palpetrovich
 
06.08.13
11:38
добавить группировку ПриходнаяНакладнаяЗапасы
2 Ёпрст
 
06.08.13
11:39
очевидно, что |Группировка Документ;
Добавить в начало.
3 palpetrovich
 
06.08.13
11:43
(2) я-б внес между Заказ И ТМЦ
4 sivsoft
 
06.08.13
12:15
Не получается. Не выводит ТМЦ в этом случае - просто пустое поле.
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ПриходнаяНакладнаяЗапасы = Документ.ПриходнаяНакладнаяЗапасы.ТекущийДокумент;
    |МестоХранения = Документ.ПриходнаяНакладнаяЗапасы.МестоХранения;
    |ТМЦ = Документ.ПриходнаяНакладнаяЗапасы.ТМЦ;
    |Кво = Документ.ПриходнаяНакладнаяЗапасы.Кво;
    |СуммаСНДС = Документ.ПриходнаяНакладнаяЗапасы.СуммаСНДС;
    |Заказ = Документ.ПриходнаяНакладнаяЗапасы.Заказ;
    |Контрагент = Документ.ПриходнаяНакладнаяЗапасы.Контрагент;
    |Функция КвоСумма = Сумма(Кво);
    |Функция СуммаСНДССумма = Сумма(СуммаСНДС);
    |Группировка Заказ;
    |Группировка Документ;
    |Группировка ТМЦ без групп;
    |Условие(МестоХранения в ВыбМестоХранения);
    |Условие(ТМЦ в ВыбТМЦ);
    |Условие(Заказ в ВыбЗаказ);
    |Условие(Контрагент в ВыбКонтрагент);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;

    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        // Заполнение полей Заказ
        Таб.ВывестиСекцию("Заказ");
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей ТМЦ
            Таб.ВывестиСекцию("ТМЦ");
        КонецЦикла;
    КонецЦикла;
    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
5 ЧеловекДуши
 
06.08.13
12:22
(4) Пиши:

//Как нужно писать в цикле, когда нельзя это сделать в запросе
//Особенно в Черном запросе от фирмы 1С :)
ТЗ = Запрос.Выгрузить();

шш1 = 1;
Пока шш1 <= ТЗ.КоличествоСтрок() Цикл
   // Шаманство и волшебство по обработке Таблицы значения
   шш1 = шш1 + 1;
КонецЦикла;
6 ЧеловекДуши
 
06.08.13
12:25
+ (5) Сори, от 8-ки...

ТЗ = СозатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ ,1,0);
7 КапЛей
 
06.08.13
12:27
(4) тебе ж сказали. первая группировка Документ!
8 sivsoft
 
06.08.13
12:52
(7) Группировка Документ как первая, естественно не работает. На цикл гляньте! Мне нужно группировать по заказам и группировать по ТМЦ - т.е. отображать с разбивкой на заказы, а в заказах срез идет по ТМЦ. Все бы хорошо, если бы не было абсолютно идентичных документа.

Идиотские запросы 1С. Ну неужели нельзя было воспользоваться готовым и c 1974 года существующим СТАНДАРТНЫЙ языком запросов SQL, а не фигню какую-то выдумывать. 1С - одни костыли какие-то :(

Ладно, лирика это... :)
Буду ручками циклом перебирать.
9 Ёпрст
 
06.08.13
12:55
(8) пиши на sql - никто не запрещает.
10 Ёпрст
 
06.08.13
12:55
делать этого в 1с
11 Cube
 
06.08.13
13:05
(8) Если ты у шуруповерта кнопочку не нажимаешь, а заворачиваешь им шурупы, крутя его в руках и матерясь, что шуруповерты идиотские и почему нельзя было сделать как стандартные отвертки сделаны, то проблема на твоей стороне...
12 palpetrovich
 
06.08.13
14:27
поменяй
|Группировка Документ;
на
|Группировка ПриходнаяНакладнаяЗапасы;
13 sivsoft
 
06.08.13
15:57
(12) тоже самое
14 Dolly_EV
 
06.08.13
16:21
(0) Группировка СтрокаДокумента тебе поможет
2 + 2 = 3.9999999999999999999999999999999...