Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Свертка ТаблицыЗначений непонятка

v7: Свертка ТаблицыЗначений непонятка
Я
   zenon46
 
30.11.17 - 16:57
Доброго дня!
Столкнулся с такой проблемой, делается отчет, колонками которого являются месяца, заранее не известно сколько будет месяцев, они высчитываются в зависимости от того какой период на форме выбрал пользователь, и вот тут самая трудность, в одной ветке алгоритма таблицу нужно свернуть, по именованной колонке, скажем это "контрагент", и просуммировав остальные, но как это сделать ведь идентификаторы колонок не объявлялись.
Собственно колонки создаются вот так :

        НачДаты = НачДата;
        Пока 1 = 1 Цикл
            ТабЗнач1.НоваяКолонка(,"Число",,,,,,);
            НачДаты = ДобавитьМесяц(НачДаты,1);
            Если НачДаты > КонДата Тогда
                Прервать;
            КонецЕсли;
        КонецЦикла;


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

"Период_" + СтрЗаменить(Формат(НачДаты,"ДДДММГГГГ"),".","_");
   Провинциальный 1сник
 
15 - 01.12.17 - 10:16
(11) Двумерные таблицы жутко прожорливы к памяти.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует