|
v7: Свертка ТаблицыЗначений непонятка | ☑ | ||
---|---|---|---|---|
0
zenon46
30.11.17
✎
16:57
|
Доброго дня!
Столкнулся с такой проблемой, делается отчет, колонками которого являются месяца, заранее не известно сколько будет месяцев, они высчитываются в зависимости от того какой период на форме выбрал пользователь, и вот тут самая трудность, в одной ветке алгоритма таблицу нужно свернуть, по именованной колонке, скажем это "контрагент", и просуммировав остальные, но как это сделать ведь идентификаторы колонок не объявлялись. Собственно колонки создаются вот так : НачДаты = НачДата; Пока 1 = 1 Цикл ТабЗнач1.НоваяКолонка(,"Число",,,,,,); НачДаты = ДобавитьМесяц(НачДаты,1); Если НачДаты > КонДата Тогда Прервать; КонецЕсли; КонецЦикла; Естественно выполнив ТабЗнач1.Свернуть("Контрагент",); на выходе получаем таблицу из одной колонки. |
|||
1
Провинциальный 1сник
30.11.17
✎
16:58
|
"но как это сделать ведь идентификаторы колонок не объявлялись"
Объяви. |
|||
2
Провинциальный 1сник
30.11.17
✎
17:00
|
+(1) А можно номера колонок указать через запятую. Как строку с номерами колонок создать, объяснять надо?
|
|||
3
GrVas
30.11.17
✎
17:00
|
ТабЗнач1.Свернуть("Контрагент", тут нужно указать числовое поле)
|
|||
4
Lazy Stranger
30.11.17
✎
17:07
|
НачДаты = НачДата;
СтрокаСвертки=""; к=0; Пока 1 = 1 Цикл к=к+1; ИмяКолонки="К"+к; СтрокаСвертки=СтрокаСвертки+?(ПустаяСтрока(СтрокаСвертки)=0,",","")+СтрокаСвертки; ТабЗнач1.НоваяКолонка(ИмяКолонки,"Число",,,,,,); НачДаты = ДобавитьМесяц(НачДаты,1); Если НачДаты > КонДата Тогда Прервать; КонецЕсли; КонецЦикла; ТабЗнач1.Свернуть("Контрагент",СтрокаСвертки) |
|||
5
Lazy Stranger
30.11.17
✎
17:08
|
СтрокаСвертки=СтрокаСвертки+?(ПустаяСтрока(СтрокаСвертки)=0,",","")+ИмяКолонки
|
|||
6
Ёпрст
30.11.17
✎
17:12
|
(0) идентификаторы там есть: _1,_2 ..._n
|
|||
7
Ёпрст
30.11.17
✎
17:13
|
просто цикл +ПолучитьПараметрыКолонки(счетчикЦикла) вернёт имя колонки, складывай их, получай колонку для группировки сумм
|
|||
8
uno-group
30.11.17
✎
17:23
|
А зачем создавать колонки если их потом сворачиваешь?
Добавь сразу две колонки "Контрагент" и "Сумма" Если нужно потом добавляй новые но не забывай дублировать ивнрмацию в Сумма. потом свернеш "Контрагент","Сумма" и ненадо лишних циклов |
|||
9
Провинциальный 1сник
30.11.17
✎
18:10
|
(8) Лучше Контрагент,Период,Сумма. А еще лучше использовать индексированную таблицу. Ну а переменное количество колонок - зло изначальное.
|
|||
10
zenon46
30.11.17
✎
18:18
|
Всем спасибо, за подсказку. Все сделал.
|
|||
11
vova1122
30.11.17
✎
18:23
|
(9) в чем зло? Кроме как с печатью єтого отчета невижу зла.
|
|||
12
zenon46
30.11.17
✎
18:27
|
(8) стркутура таблицы
Месяц Контрагент Сумма |
|||
13
zenon46
30.11.17
✎
18:28
|
А месяцев может быть сколько угодно
|
|||
14
Сияющий Асинхраль
30.11.17
✎
21:26
|
А я обычно стараюсь имена дать осмысленные даже при автоматической генерации колонок, например, в данном случае можно было включать в имя колонки начало периода (то бишь месяца) в виде:
"Период_" + СтрЗаменить(Формат(НачДаты,"ДДДММГГГГ"),".","_"); |
|||
15
Провинциальный 1сник
01.12.17
✎
10:16
|
(11) Двумерные таблицы жутко прожорливы к памяти.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |