|
1С 8.2 Итоги в Таблице значений | ☑ | ||
---|---|---|---|---|
0
poet
21.11.11
✎
12:30
|
Создаю ТЗ с заранее неизвестным количествои колонок (товаров). Как получить итоги начиная с первой строки товаров(пропуская колонки Дата, Номер, Контрагент)?
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Дата",,,7); ТЗ.Колонки.Добавить("Номер",,,10); ТЗ.Колонки.Добавить("Контрагент",,,15); Номер = "0"; Пока Выборка.Следующий() Цикл Если Выборка.Номер <> Номер Тогда НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Дата = Формат(Дата(СокрЛП(Выборка.Дата)), "ДЛФ=Д"); НоваяСтрока.Номер = СокрЛП(Выборка.Номер); НоваяСтрока.Контрагент = СокрЛП(Выборка.Контрагент); КонецЕсли; НазваниеКолонки = Строка("н"+СокрЛП(Выборка.Номенклатура.Код)); ОтображениеНазванияКолонки = СокрЛП(Выборка.Номенклатура); Если ТЗ.Колонки.Найти(НазваниеКолонки) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонки,,ОтображениеНазванияКолонки, 15); НоваяСтрока[НазваниеКолонки] = Выборка.Количество; Иначе НоваяСтрока[НазваниеКолонки] = Выборка.Количество; КонецЕсли; Номер = Выборка.Номер; КонецЦикла; ТабличноеПоле.Очистить(); ЭлементыФормы.ТабличноеПоле.Значение = ТЗ; ЭлементыФормы.ТабличноеПоле.СоздатьКолонки(); |
|||
1
Wobland
21.11.11
✎
12:30
|
ТЗ.Итог("Колонка"), не?
|
|||
2
poet
21.11.11
✎
12:31
|
это то да - но не могу догнать как цикл задать правильно по последнюю строку?
|
|||
3
poet
21.11.11
✎
12:31
|
точнее колонку
|
|||
4
Wobland
21.11.11
✎
12:34
|
Для й=0 По ТЗ.Колонки.Количество()-1 Цикл
ТвойИтог=ТЗ.Итог(ТЗ.Колонки[й].Имя); |
|||
5
Wobland
21.11.11
✎
12:34
|
вообще, правильно стелепатировал?
|
|||
6
LAAry
21.11.11
✎
12:36
|
Для Каждого Колонка из ТЗ.Колонки Цикл
Если Не Найти(Колонка.Имя,"Дата") >0 И не .... Тогда Итог =ТЗ.Итог(Колонка.Имя); Это если колонок дат несколько. |
|||
7
poet
21.11.11
✎
12:43
|
тут у меня основной тупняк - в том что колонки создаются с названием кодов товара + приставка - тоесть как правильно перебрать именно их?
|
|||
8
LAAry
21.11.11
✎
12:50
|
Заведи префикс, ищи префикс в цикле, если нашел получай итог
|
|||
9
poet
21.11.11
✎
12:59
|
префикс начинается с "н"+СокрЛП(Выборка.Номенклатура.Код
вот и прошу по своему коду пример - т.к. сам недодумкуюсь |
|||
10
poet
21.11.11
✎
13:05
|
разобрался:
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Дата",,,7); ТЗ.Колонки.Добавить("Номер",,,10); ТЗ.Колонки.Добавить("Контрагент",,,15); Номер = "0"; Пока Выборка.Следующий() Цикл Если Выборка.Номер <> Номер Тогда НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Дата = Формат(Дата(СокрЛП(Выборка.Дата)), "ДЛФ=Д"); НоваяСтрока.Номер = СокрЛП(Выборка.Номер); НоваяСтрока.Контрагент = СокрЛП(Выборка.Контрагент); КонецЕсли; НазваниеКолонки = Строка("н"+СокрЛП(Выборка.Номенклатура.Код)); ОтображениеНазванияКолонки = СокрЛП(Выборка.Номенклатура); Если ТЗ.Колонки.Найти(НазваниеКолонки) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонки,,ОтображениеНазванияКолонки, 15); НоваяСтрока[НазваниеКолонки] = Выборка.Количество; Иначе НоваяСтрока[НазваниеКолонки] = Выборка.Количество; КонецЕсли; Номер = Выборка.Номер; КонецЦикла; Для кол = 0 По ТЗ.Колонки.Количество()-1 Цикл НоваяСтрока[Кол] = ТЗ.Итог(кол); КонецЦикла; |
|||
11
poet
21.11.11
✎
13:34
|
потомкам: в конце исправил т.к. перезаписывалась последняя строка итоговыми значениями
НоваяСтрока = ТЗ.Добавить(); Для кол = 0 По ТЗ.Колонки.Количество()-1 Цикл НоваяСтрока[Кол] = ТЗ.Итог(кол); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |