Вывод результатов в новом столбце.

  • Автор темы neiroromantik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

neiroromantik

#1
Доброго времени суток. Есть задача - разбить на небольшие интервалы выбранный пользователем через диалог период. На даты программы разбивает правильно. Вопрос по выводу результатов в таблицу.
Для итая=1 по даталист.РазмерСписка Цикл // список содержит начальные даты месяцев.
НомерДаты=ПолучитьЗначение(Итая);
Таб.ВывестиСецию("НомерДаты"); //выводится секция, содержащая переменную НомерДаты
Ит.ВыбратьПериоды;
Ит.ПолучитьПериод(, НомерДаты);
Ит.ВыбратьСубконто;
Пока Ит.ПолучитьСубконто()=1 Цикл
// здесь вычисляется средняя цена за период.
.....................................

Таб.ВывестиСецию("Основная"); //здесь выводится номенклатура и средняя цена
КонецЦикла ;
КонецЦикла;
В итоге получается таблица следующего вида.

дата начала месяца.
номенклатура | средняя цена.

дата начала месяца.
номенклатура | средняя цена.

и т.д.
А нужно чтобы дата начала каждого месяца и результаты по нему выводились в новом столбце.
Например, так.
дата начала месяца. | дата начала месяца.
номенклатура | средняя цена. | номенклатура | средняя цена.

Как вывести результат в новом столбце не хватает воображения. Помогите, пожайлуста.
 
T

thinkfast

#2
Для 8-ки вот рабочий пример, на его примере все поймешь:

ТабДок = Новый ТабличныйДокумент;
Секция = ТабДок.ПолучитьОбласть("R1C1");
ТабДок.НачатьАвтогруппировкуКолонок();
Секция.Область("R1C1").Текст = "Параметр";
ТабДок.Вывести(Секция,1,"Группа 1",Ложь);
Для К=1 По 10 Цикл
Секция = ТабДок.ПолучитьОбласть("R1C1");
Секция.Область().Текст = "А"+К;
Секция.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
ТабДок.Присоединить(Секция,2,"Группа 2",Истина);
КонецЦикла;
Секция.Область("R1C1").Текст = "Итого:";
ТабДок.Присоединить(Секция,1,"Группа 2",Ложь);
Секция.Область("R1C1").Текст = "Значение";
ТабДок.Вывести(Секция,1,"Группа 2",Ложь);
Цена = 10; Итог = Цена;
Для К=1 По 10 Цикл
Секция = ТабДок.ПолучитьОбласть("R1C1");
Секция.Область().Текст = Цена;
ТабДок.Присоединить(Секция,2,"Группа 2",Истина);
Цена = Цена + 10;
Итог = Итог + Цена;
КонецЦикла;
Секция.Область("R1C1").Текст = Итог;
ТабДок.Присоединить(Секция,1,"Группа 2",Ложь);
ТабДок.ЗакончитьАвтогруппировкуКолонок();
ТабДок.ИтогиСправа = Истина;
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Пример использования гор. автогруппировки");
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#3
neiroromantik, не совсем понял - тебе получается нужно чтобы строки присоеденялись не по вертикали, а по горизонтали?
 

vbs

Well-known member
18.02.2007
1 708
1
#4
Я в 7.7 делаю так :
Детализация по периодам устанавливается в вариантах : день, неделя, декада, месяц, квартал, год
Далее вывожу итоги в ТЗ и добавляю к ней колонку НомерПериода, заполняю ее процедуркой, вычисляющей его значение.
Для дня и года тривиально, для месяца - только учесть случай, когда даты начала и конца в разных годах
Далее группирую ТЗ, перебираю ее и присоединяю горизонтальные секции столько раз, сколько нужно
 
N

neiroromantik

#5
Спасибо всем за рекомендации. Ссори, нужно было сразу написать, что работаю с 7-кой. Нужно, чтобы строки выводились слева направо в таком порядке.
Месяц1 Месяц2 Месяц 3 и т.д.
Номенклатура1 Цена Цена Цена
Номенклатура2 Цена Цена Цена
НоменклатураN Цена Цена Цена

Если не трудно, напишите сразу код, который будет это делать. Сейчас уже времени нет вникать в тонкости. Нужно еще по периодам
написать код для вариантов выбора. В данный момент получить нужный результат я пытался так.
Таб.ВывестиСекцию("гор|верт");
Для итая=1 по даталист.РазмерСписка Цикл // список содержит начальные даты месяцев.
НомерДаты=ПолучитьЗначение(Итая);
Таб.ВывестиСецию("НомерДаты"); //выводится секция, содержащая переменную НомерДаты
Ит.ВыбратьПериоды;
Ит.ПолучитьПериод(, НомерДаты);
Ит.ВыбратьСубконто;
Пока Ит.ПолучитьСубконто()=1 Цикл
// здесь вычисляется средняя цена за период.
.....................................
Таб.ПрисоединитьСекцию("гор|верт");

КонецЦикла ;
КонецЦикла;
В итоге все выводится в одну строку с огромным числом колонок (
 

vbs

Well-known member
18.02.2007
1 708
1
#6
Посмотри обработку для торговли - в ней указано, как вычисляется нужный период.
Идеология станет понятна, для бухгалтерии легко сможешь адаптировать
 

Вложения

Статус
Закрыто для дальнейших ответов.