|
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) проблем нет. Сделал уже кстати, осталось группировку строк в Йокселе прикрутить.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |