Имя: Пароль:
1C
1C 7.7
v7: Туплю с индексированной таблицей на ночь глядя
0 Duke1C
 
27.02.15
22:49
Есть ИТЗ со структурой:
Фирма,Контрагент,ДатаД,ТекущийДокумент,СтавкаНДС,Сумма,СуммаНДС
Я группирую её по: "Фирма:Фирма;Контрагент:Контрагент;ТекущийДокумент:ТекущийДокумент;СтавкаНДС:СтавкаНДС";
При обходе ИТЗ методом ВыбратьСтроки() (допустим по первой группировке Фирма) - Получаю общую Сумму и СуммуНДС по Фирме.
А хочется еще получить эти же суммы по Фирме, но в разрезе ставок НДС. Итак в рекурсии по каждому уровню группировки.
С ИТЗ работаю мало, поэтому знаний почти никаких. В Яндексе не забанен, но наглядного для себя примера не нашел. Описание методов ИТЗ в доке к 1С++ читал - не догоняю я все-равно чего то в этих индексах.
Т.е код примерно такой:

Процедура ЗаполнитьУзелПоИТЗ(ТЗ,СписокГруппировок,Уровень);
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Если Уровень<=СписокГруппировок.РазмерСписка() Тогда
            ИмяГруппировки=СписокГруппировок.ПолучитьЗначение(Уровень);
            ЗначГруппировки=ТЗ.ПолучитьЗначение(НомПП,ИмяГруппировки);
            Для Л=1 по СписСтавок.РазмерСписка() Цикл
            ...вот тут хочу поиметь еще суммы в разрезе ставок НДС для ЗначГруппировки...
            КонецЦикла;
            Уровень1=Уровень+1;
            ЗаполнитьУзелПоИТЗ(ТЗ.ПолучитьЗначение(НомПП,"тзПотомки"),СписокГруппировок,Уровень1);
        КонецЕсли;
    КонецЦикла;
    Возврат;
КонецПроцедуры //

ЗаполнитьУзелПоИТЗ(МояИТЗ,СписокГруппировок,1);

В СписокГруппировок - 3 значения: Фирма,Контрагент,ДатаД
В СписСтавок - значения нужных мне Ставок НДС
1 Duke1C
 
27.02.15
23:01
+ (0) Пардон, закралась очепятка в строке группировок
Я группирую её по: "Фирма:Фирма;Контрагент:Контрагент;ДатаД:ДатаД;ТекущийДокумент:ТекущийДокумент;СтавкаНДС:СтавкаНДС";" конечно же
2 Pers0naGrata
 
27.02.15
23:34
ТЗ.ВыбратьСтроки(--здесь указать имя индекса--);
Пока ТЗ.ПолучитьСтроку(--здесь указать имя индекса--) = 1 Цикл
3 Pers0naGrata
 
28.02.15
00:01
Тебе лучше привести индексированную таблицу к виду: группируемые колонки "Фирма,Контрагент,ДатаД,ТекущийДокумент" и суммируемые колонки "Сумма,СуммаНДС,СуммаНДС_БезНДС,СуммаНДС_10,СуммаНДС_18".
4 Duke1C
 
28.02.15
13:28
(3) Я уже тоже пришел к такому выводу. В этом случае все без проблем получается.
(2) ТЗ.ВыбратьСтроки(--здесь указать имя индекса--); , дык у меня уже открыта выборка строк ТЗ, при этом она собъется? К тому же мне нужно получить не список сумм в разрезе ставок, а наоборот, по нужной мне ставке получить сумму.
5 Pers0naGrata
 
28.02.15
14:31
(4) "по нужной мне ставке получить сумму"
Ставка известна, значит, известно имя колонки в которой хранится сумма по этой ставке:

Если СтавкаНДС = Перечисления.СтавкиНДС.БезНДС Тогда
    ...получаем из колонки "СуммаНДС_БезНДС";
ИначеЕсли СтавкаНДС = Перечисления.СтавкиНДС.НДС_10 Тогда
    ...получаем из колонки "СуммаНДС_10";
...
КонецЕслм;
6 Duke1C
 
28.02.15
16:36
(5) "по нужной мне ставке получить сумму" - это я говорил всё про вариант указанный сабже. А с вариантом из (3) проблем нет. Сделал уже кстати, осталось группировку строк в Йокселе прикрутить.