|
|
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) проблем нет. Сделал уже кстати, осталось группировку строк в Йокселе прикрутить.
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой