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

Тема в разделе "1C и всё что с ней связано", создана пользователем neiroromantik, 9 окт 2009.

Статус темы:
Закрыта.
  1. neiroromantik

    neiroromantik Гость

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

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

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

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

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

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

    thinkfast Гость

    Для 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",Ложь);
    ТабДок.ЗакончитьАвтогруппировкуКолонок();
    ТабДок.ИтогиСправа = Истина;
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать("Пример использования гор. автогруппировки");
     
  3. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    neiroromantik, не совсем понял - тебе получается нужно чтобы строки присоеденялись не по вертикали, а по горизонтали?
     
  4. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Я в 7.7 делаю так :
    Детализация по периодам устанавливается в вариантах : день, неделя, декада, месяц, квартал, год
    Далее вывожу итоги в ТЗ и добавляю к ней колонку НомерПериода, заполняю ее процедуркой, вычисляющей его значение.
    Для дня и года тривиально, для месяца - только учесть случай, когда даты начала и конца в разных годах
    Далее группирую ТЗ, перебираю ее и присоединяю горизонтальные секции столько раз, сколько нужно
     
  5. neiroromantik

    neiroromantik Гость

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

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Посмотри обработку для торговли - в ней указано, как вычисляется нужный период.
    Идеология станет понятна, для бухгалтерии легко сможешь адаптировать
     

    Вложения:

    • dinamica.rar
      Размер файла:
      17,4 КБ
      Просмотров:
      17
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей