Имя: Пароль:
1C
1С v8
Итоги в запросе (запрос к ТЗ)
0 Mashinist
 
30.01.13
22:15
Начну сразу с кода. Код простой

   тзОстатки = Новый ТаблицаЗначений;
   тзОстатки.Колонки.Добавить("Склад", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(150)));
   тзОстатки.Колонки.Добавить("КодНоменклатуры", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
   тзОстатки.Колонки.Добавить("Остаток", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,3)));
   тзОстатки.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,2)));
   тзОстатки.Колонки.Добавить("КодПоставщика", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(7)));
   тзОстатки.Колонки.Добавить("КодЯчейки", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50)));
   
   сОстатки = тзОстатки.Добавить();
   сОстатки.Склад                = "Склад1";
   сОстатки.КодНоменклатуры    = "Товар1";
   сОстатки.Остаток            = 1;
   сОстатки.Сумма                = 10;
   сОстатки.КодПоставщика        = "П1";
   сОстатки.КодЯчейки            = "Ячейка1";
   
   сОстатки = тзОстатки.Добавить();
   сОстатки.Склад                = "Склад1";
   сОстатки.КодНоменклатуры    = "Товар1";
   сОстатки.Остаток            = 1;
   сОстатки.Сумма                = 10;
   сОстатки.КодПоставщика        = "П1";
   сОстатки.КодЯчейки            = "Ячейка1";
   
   
   
   тзОстатки.ВыбратьСтроку();
   
   
   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
   Запрос.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ТЗВрем ИЗ &ТЗДанные КАК ТЗ";
   Запрос.УстановитьПараметр("ТЗДанные", тзОстатки);
   Запрос.Выполнить();
   Запрос.Текст = "ВЫБРАТЬ
                  |    ТЗВрем.КодНоменклатуры КАК КодНоменклатуры,
                  |    ТЗВрем.Остаток КАК Остаток,
                  |    ТЗВрем.Сумма КАК Сумма,
                  |    ТЗВрем.КодПоставщика КАК КодПоставщика,
                  |    ТЗВрем.КодЯчейки КАК КодЯчейки
                  |ИЗ
                  |    ТЗВрем КАК ТЗВрем
                  |ГДЕ
                  |    ТЗВрем.Склад = &Склад
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ТЗВрем.КодПоставщика,
                  |    ТЗВрем.КодНоменклатуры,
                  |    ТЗВрем.Остаток,
                  |    ТЗВрем.Сумма,
                  |    ТЗВрем.КодЯчейки
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    КодПоставщика,
                  |    КодНоменклатуры,
                  |    КодЯчейки
                  |ИТОГИ
                  |    СУММА(Остаток),
                  |    СУММА(Сумма)
                  |ПО
                  |    ОБЩИЕ,
                  |    КодПоставщика,
                  |    КодНоменклатуры";
       
   Запрос.УстановитьПараметр("Склад", "Склад1");
   РезультатЗапроса = Запрос.Выполнить();
   тзОстататокПоСкладу = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);      
   тзОстататокПоСкладу.ВыбратьСтроку();


Итогов неправильные. Т.е. две одинаковые строки не суммирует. А вот если Сумма в строках разная, то итоги правильные
Что не так-то?
1 ChAlex
 
30.01.13
23:20
А нафиг "сгруппировать"  и нафиг ОбходРезультатаЗапроса.ПоГруппировкамСИерархией?
2 Classic
 
30.01.13
23:24
Убери сгруппировать
3 DrShad
 
31.01.13
00:12
СГРУППИРОВАТЬ ПО
...
ТЗВрем.Сумма,


это мощно задвинул
4 Mashinist
 
31.01.13
00:29
(3)(2) правы...
понял ошибку и посыпал голову пеплом
спасибо
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс