|
v7: Бухгалтерские Итоги и Таблица Значений и Таблица Отчета | ☑ | ||
---|---|---|---|---|
0
tuno4er
21.09.12
✎
15:56
|
тз.ВыбратьСтроки();
Таб.ВывестиСекцию("Шапк|Цел_Назн"); ДатаД = НачДата; Пока ДатаД <= КонДата Цикл Таб.ПрисоединитьСекцию("Шапк|Дата"); ДатаД = ДатаД+1; КонецЦикла; Пока тз.ПолучитьСтроку() = 1 Цикл ДатаД = НачДата; Таб.ВывестиСекцию("Секция_1|Цел_Назн"); Строчка = тз.НомерСтроки; Пока ДатаД <= КонДата Цикл Ит1=СоздатьОбъект("БухгалтерскиеИтоги"); Ит1.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия); Ит1.ИспользоватьСубконто(ВидыСубконто.ЦелевоеНазначение, Статьи,1); Ит1.ВыполнитьЗапрос( ДатаД, ДатаД, Константа._311,,,1,"Операция"); Ит1.ВыбратьСубконто(1); Пока Ит1.ПолучитьСубконто(1) = 1 Цикл текЦелНазн = Ит1.Субконто(1); Если тз.ЦелНазн = текЦелНазн Тогда тз.УстановитьЗначение(Строчка,"ДО", ит1.ДО("С")); тз.УстановитьЗначение(Строчка,"КО", ит1.КО("С")); Таб.ПрисоединитьСекцию("Секция_1|Дата"); Иначе Продолжить; КонецЕсли; КонецЦикла; ДатаД = ДатаД+1; КонецЦикла; КонецЦикла; |
|||
1
tuno4er
21.09.12
✎
16:00
|
Имеется такой код.
Есть Целевые назначения, он должен расскидывать сумму оборота за день на каждое целевое назначение. Но в тех местах где у меня не было оборота либо за день либо за текущее целевое назначение, он мне ничего не ставит, но когда в следующей дате есть оборототы по этому целевому назначению, он мне их клеит влево, на предыдущую дату. Подскажите что мне сделать чо бы он в случае, если не было оборот ставил просто 0 или просто вставлял пустую ячейку. |
|||
2
BlackSeaCat
21.09.12
✎
18:33
|
За ВыполнитьЗапрос() внутри двойного цикла - расстреливать из реактивного г...вномета.
|
|||
3
vladko
21.09.12
✎
18:42
|
код конечно ужастный по алгоритмике, но в этом случае просто вставь как вариант признак, что был или нет вывод значения по статье:
Ит1.ВыбратьСубконто(1); БылВывод = 0; Пока Ит1.ПолучитьСубконто(1) = 1 Цикл текЦелНазн = Ит1.Субконто(1); Если тз.ЦелНазн = текЦелНазн Тогда тз.УстановитьЗначение(Строчка,"ДО", ит1.ДО("С")); тз.УстановитьЗначение(Строчка,"КО", ит1.КО("С")); Таб.ПрисоединитьСекцию("Секция_1|Дата"); БылВывод = 1; Иначе Продолжить; КонецЕсли; КонецЦикла; Если БылВывод = 0 тогда Таб.ПрисоединитьСекцию("Секция_1|Дата"); КонецЕсли; ДатаД = ДатаД+1; |
|||
4
Zhuravlik
21.09.12
✎
21:13
|
А еще лучше перепиши)
спЦелНазн = СоздатьОбъект("СписокЗначений"); тз.Выгрузить(спЦелНазн,,, "тз.ЦелНазн"); Ит1=СоздатьОбъект("БухгалтерскиеИтоги"); Ит1.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия); Ит1.ИспользоватьСубконто(ВидыСубконто.ЦелевоеНазначение, спЦелНазн, 2); Ит1.ВыполнитьЗапрос( НачДата, КонДата, Константа._311,,,1,"Операция"); Ит1.ВыбратьСубконто(1); Пока ИТ1.ПолучитьСубконто(1) = 1 Цикл текЦелНазн = Ит1.Субконто(1); нс = 0; Если тз.НайтиЗначение(текЦелНазн, нс, "ЦелНазн") = 1 Тогда тз.ПолучитьСтрокуПоНомеру(нс); тз.ДО = ИТ1.ДО(); Иначе Продолжить; КонецЕсли; Таб.ВывестиСекцию("Секция_1|Цел_Назн"); ИТ1.ВыбратьПериоды(); Пока ИТ1.ПолучитьПериод() = 1 Цикл ДатаД = ИТ1.Документ.ДатаДок; Таб.ПрисоединитьСекцию("Секция_1|Дата"); КонецЦикла; КонецЦикла; Как-то так, если я правильно понял задачу. |
|||
5
Zhuravlik
21.09.12
✎
21:14
|
тз.НайтиЗначение(текЦелНазн, нс, "ЦелНазн") - можно и без если, он его по-любому найдет)) Писал наспех.
|
|||
6
BlackSeaCat
21.09.12
✎
21:53
|
(4) Тоже мне, переписывальщик... становись рядом с автором!
1. Нафейхоа делать запрос с периодичностью "Операция", если явно нужны общие цифры за день? О существовании периодичности "День" вообще в курсе? 2. Зачем перебирать все субконто для каждой строки ТЗ, если можно одной строкой просто обратиться к нужному: Если Ит1.ПолучитьСубконто(1,,тз.ЦелНазн)=1 Тогда // выводим горизонтальную секцию КонецЕсли; Код принципиально писать не буду, нафиг не нужно. |
|||
7
Zhuravlik
21.09.12
✎
22:13
|
(7) Да я и не стремился ничего переписывать, это задача для ТС. Просто показал как можно обойтись без вложенных циклов.
|
|||
8
tuno4er
24.09.12
✎
12:16
|
В ТЗ берутся данные со справочника, получается в строковом виде.
Если делать вот так - Ит1.ПолучитьСубконто(1,,тз.ЦелНазн)=1, то вообще ничего не выбирается. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |