8.х Динамическое добавление колонок в табличный документ

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем AugustBlack, 11 окт 2011.

  1. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Помогите разобратся: необходимо Область1 добавлять по горизонтали вправо(в зависимости от данных по годам которые возратил запрос),макет на скрине:
    http://imglink.ru/show-image.php?id=490a02...f53d21fb1b2fa5f
    к примеру год от 2010 до 2011, должно нарисовать 2 выделенных области..

    Код:
     ТабДок.Вывести(ОбластьСодержаниеСправки);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    
    ВыборкаПоГоду = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПоГоду");
    
    Пока ВыборкаПоГоду.Следующий() Цикл    
    // Вставить обработку выборки ВыборкаПоГоду        
    
    Область1.Параметры.Год = Год(ВыборкаПоГоду.ПоГоду);
    ТабДок.Присоединить(Область1);
    ВыборкаДетальныеЗаписи = ВыборкаПоГоду.Выбрать();        
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДанныеТаблицы.Параметры.Месяцы = Формат(ВыборкаДетальныеЗаписи.ПоМесяцу,"ДФ=ММММ"); 
    ОбластьДанныеТаблицы.Параметры.Дни = ВыборкаДетальныеЗаписи.ДнейВсего;
    ОбластьДанныеТаблицы.Параметры.Сумма = ВыборкаДетальныеЗаписи.СуммаВсего;
    //ТабДок.Вывести(ОбластьДанныеТаблицы,ВыборкаДетальныеЗаписи.Уровень());
    
    ТабДок.Присоединить(ОбластьДанныеТаблицы);        
    КонецЦикла;
    ТабДок.Вывести(ОбластьТаблицаИтогов);        
    КонецЦикла;    
    //заполнение параметров содержимого справки 2
    
    
    
    ОбластьСодержаниеСправки2.Параметры.Примечание = ЭлементыФормы.Примечание.Значение;
    
    ОбластьСодержаниеСправки2.Параметры.ОснованиеВыдачи = ЭлементыФормы.ОснованиеВыдачи.Значение;
    
    
    ТабДок.Вывести(ОбластьСодержаниеСправки2);
    
    в итоге получается вот что: http://imglink.ru/show-image.php?id=4d390f...8affc97fa2d2217 он дописывает ее снизу..не могу понять как изменить вывод..
  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у вас выводимые области макета горизонтальные, думаю в этом дело

    а вообще попробуйте поиском проийтись, этот вопрос уже обсуждали
  3. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Область вертикальную добавь еще, и работай с их пересечением
  4. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
  5. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    В целом, вроде так


    Добавляйте рисунки прямо в сообщение, плиз
  6. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Да, эту область присоединяешь сколько надо раз. Потом выводишь ДанныеТаблицы и присоединяешь к ней ДанныеТаблицы|Область2, ну и заполняешь параметры.
  7. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    макет:
    [​IMG]

    ОбластьКопирования = Макет.ПолучитьОбласть("Область1|Область2");

    ОбластьКопирования2 = Макет.ПолучитьОбласть("ДанныеТаблицы|Область2");

    Пока ВыборкаПоГоду.Следующий() Цикл
    // Вставить обработку выборки ВыборкаПоГоду
    ОбластьКопирования.Параметры.Год = Год(ВыборкаПоГоду.ПоГоду);
    ТабДок.Присоединить(ОбластьКопирования); //присоединил шапку
    ВыборкаДетальныеЗаписи = ВыборкаПоГоду.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДанныеТаблицы.Параметры.Месяцы = Формат(ВыборкаДетальныеЗаписи.ПоМесяцу,"ДФ=ММММ");
    ОбластьДанныеТаблицы.Параметры.Дни = ВыборкаДетальныеЗаписи.ДнейВсего;
    ОбластьДанныеТаблицы.Параметры.Сумма = ВыборкаДетальныеЗаписи.СуммаВсего;
    ТабДок.Вывести(ОбластьДанныеТаблицы);
    ТабДок.Присоединить(ОбластьКопирования2);
    КонецЦикла;

    //ТабДок.Вывести(ОбластьТаблицаИтогов);
    КонецЦикла;

    [​IMG]

    ну почему так(( поправьте, пожалуйста
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я конечно не спец, но я бы попробовала колонку с месяцами тоже в вертикальную область2 поместить, иначе они в пересечение не попадают у вас
  9. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Tiger86, с помощью вашего совета нашел баг при котором 1с вылетает О_О с ошибкой в moxel.dll
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    мдя...
  11. TopicStarter Overlay
    AugustBlack
    Offline

    AugustBlack Опытный в 1С

    Регистрация:
    9 янв 2011
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Не понимаю все равно,поиск не дает результатов. Кто нить дайте пример вывода в табличный документ такого примера:
    А1 А2 А3
    10 40 70
    20 50 80
    30 60 90



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

    почему выводит так:
    <img src="http://imglink.ru/thumbnails/13-10-11/2aefea9fe6cfb5852269590f08a4d380.jpg" border="0" alt="Изображение" />
    а не так:
    А1 А2 А3
    10 40
    20 50
    30 60

    :angry:


    помогите
  12. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Что не получается то?
  13. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вы заполняете параметры всей ОбластиДанных, выводите ее, потом к ней присоединяете часть этой же области, думаю проблема в этом, копайте в этом напралении. Посмотрите в типовых отчетах, наверняка там есть примеры как правильно работать с ПрисоединитьСекцию.

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