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

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) Двумерные таблицы жутко прожорливы к памяти.

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