7.7 Работа с секциями таблицы!

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Алёна, 6 июл 2009.

  1. TopicStarter Overlay
    Алёна
    Offline

    Алёна

    Регистрация:
    8 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Как сделать так чтобы выводились данные на пересечении двух секций?
    Метод ВывестиСекцию(СекцияГор|СекцияВерт) почему-то выводит данные не в столбцы и строки которые находятся на пересечении секций, а начиная с первого столбца!
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Используй
    Код:
    ПрисоединитьСекцию(СекцияГор|СекцияВерт)
    
    
    НО только после вывода ВывестиСекцию(СекцияГор|СекцияВерт)
  3. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Есть еще метод ПрисоединитьСекцию
  4. TopicStarter Overlay
    Алёна
    Offline

    Алёна

    Регистрация:
    8 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Не получается, теперь все строки из области пересечения Данные и Данные1 в одной строке выводятся!
    Посмотрите мой код, пожалуйста:
    Код:
    Процедура Сформировать()
    Таблица=СоздатьОбъект("Таблица"); 
    Таблица.ВывестиСекцию("Шапка");
    ВыбратьПериод();
    Запрос= СоздатьОбъект("Запрос");
    ТЗ=
    "Период с НачПериод по КонПериод;
    | ОбрабатыватьДокументы Все;
    | НомСтр=Документ.Аборты.НомСтр;
    | Итог=Документ.Аборты.Всего;
    | До14=Документ.Аборты.до_14;
    | С15по17=Документ.Аборты.с15по17;
    | С18по19=Документ.Аборты.с18по19;
    | С20по24=Документ.Аборты.с20по24;
    | С25по29=Документ.Аборты.с25по29;
    | С30по34=Документ.Аборты.с30по34;
    | С35по39=Документ.Аборты.с35по39;
    | С40по44=Документ.Аборты.с40по44;
    | С45по49=Документ.Аборты.с45по49;
    | С50=Документ.Аборты.с50;
    | Группировка НомСтр;
    | Функция СуммаИтог=Сумма(Итог);
    | Функция СуммаДо14=Сумма(До14);
    | Функция СуммаС15по17=Сумма(С15по17);
    | Функция СуммаС18по19=Сумма(С18по19);
    | Функция СуммаС20по24=Сумма(С20по24); 
    | Функция СуммаС25по29=Сумма(С25по29);
    | Функция СуммаС30по34=Сумма(С30по34);
    | Функция СуммаС35по39=Сумма(С35по39);
    | Функция СуммаС40по44=Сумма(С40по44);
    | Функция СуммаС45по49=Сумма(С45по49);
    | Функция СуммаС50=Сумма(С50); 
    |";
    
    Запрос.Выполнить(ТЗ);
    ТабЗнач=СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТабЗнач);
    Таблица.ВывестиСекцию("СекцияСп1|СекцияСп2");
    ТабЗнач.ВыбратьСтроки();
    Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
    Если ТабЗнач.НомерСтроки > 1  Тогда 
    Таблица.ПрисоединитьСекцию("Данные|Данные1");
    КонецЕсли;
    КонецЦикла;
    //ТабЗнач.ВыбратьСтроку();
    Таблица.Показать();	
    КонецПроцедуры
    
  5. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Макет лучше покажите. А вообще смысл такой: если секция должна быть не в начале строки, то перед ней нужно вывести пустую секцию нужной ширины, а потом уже присоединять секцию с данными
  6. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Так по коду оно и должно все в одну строку.
    Вот создаем первую строку (выводится один раз)
    а потом
    присоединяем все остальные.
    В общем сколько нужно строк, столько и должно быть вызовов метода ВывестиСекцию

    Тут одним макетом не отделается :unsure:
    Как минимум нужно всю обработку смотреть (хотя не удивлюсь, если там кроме представленного кода ничего больше не будет).
  7. TopicStarter Overlay
    Алёна
    Offline

    Алёна

    Регистрация:
    8 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Посмотрите схему, пожалуйста! Если я вызываю метод ВывестиСекцию() столько раз сколько строк, то данные которые должны по строкам распологаться все равно в одну строку выводятся и кучкуются у последней созданной мною строки. :unsure:

    Вложения:

    • 1С.JPG
      1С.JPG
      Размер файла:
      228 КБ
      Просмотров:
      273
  8. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    В твоем запросе должно быть как минимум 2 группировки: одна по вертикали, другая по горизонтали.
    Причем горизонтальная группировка должна быть вложена в вертикальную.

    PS "СекцияСп1|СекцияСп2" на макете создана неправильно. так ничего не получится.

    PSS Судя по макету, так здесь горизонтальная развертка вообще не нужна.

    PSSS Может проще изложить задачу, чем по неправильному макету давать неправильные советы???

    Именно потому, что "СекцияСп1|СекцияСп2" выше чем "Данные|Данные1".
  9. TopicStarter Overlay
    Алёна
    Offline

    Алёна

    Регистрация:
    8 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Буду только рада если будет проще!!! У меня никак не получается... :unsure: Помогите пожалуйста!!!
  10. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    С удовольствием......... но где изложена задача? Думаю все уже с нетерпением ждут этого момента :unsure:

    ???? ЧТО НАДО СДЕЛАТЬ ????
  11. TopicStarter Overlay
    Алёна
    Offline

    Алёна

    Регистрация:
    8 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Нужно сделать так чтобы получилась на пересечении первых двух секций текст, который был представлен на макете, а на втором пересечении данные из таблицы значений, которые получаются в результате запроса.
  12. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    И в чем проблема?
  13. TopicStarter Overlay
    Алёна
    Offline

    Алёна

    Регистрация:
    8 сен 2008
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    В том что я секции неправильно делаю наверное потому что у меня все криво косо выводится!
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Зачем заморачиваться вообще с секциями в данном случае?
    Проще было бы убрать СекцияСп1 т Данные1
    После этого выводи построчно Данные
  15. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Еще бы на структуру документа взглянуть или скрин заполненного документа покажите. Не хватает данных исходных.
  16. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Я уже не знаю как спросить............
    Может проще позвонить в какую-нибудь фирму по обслуживанию 1С: Предприятия?

    В данном топике уже все ответы есть. Если ты расскажешь суть твоего отчета (какие данные он должен отобразить) и тип/версию своей ИБ, тогда может будут еще пояснения.....


    Я думаю наоборот: "все криво косо выводится" потому что "я секции неправильно делаю"
  17. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    если я не ошибаюсь, то в таблице которую ты изобразила будет одна строка из секции "Данные".. СекцияСп1 тут явно никакой смысловой нагрузки не несет.. Думаю стоит поле "Наименование" (СекцияСП1) заполнять из списка или таблицы (в коде) как и значения секции "Данные1" построчно.. вообще табличка странная конеш..)

    P.S. можно попробовать (если для тебя это не принципиально) просто взять и загнать по секциям все строки таблицы с 4 по 23.. %)
  18. X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Это один из подходов, но не эффективный. На самом деле, запрос составлен верно(значения горизонтальной группировки представляют собой результат вычисления функции). Что-то с макетом, скорее всего.
  19. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Не спеши, а внимательно изучи ветку.

    Проблема в следующем: был отчет, а девушке надо было сделать на его основе новый, с динамической шириной..... что-то в этом направлении уже сделано, но очень мало....

    Интересно :))) Знаешь более эффективный способ сделать горизонтальную и вертикальную развертку одним циклом?
  20. X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Легко:) Ну с вертикальными группировками все понятно, просто задаешь их оператором Группировка, а горизонтальную можно организовать, в цикле добавляя в текст запроса функции с соответствующими условиями, например

    Код:
    Для Сч = 1 По СпСкладов.РазмерСписка() Цикл
    Текст Запроса = ТекстЗапроса + "Функция " + СпСкладов.ПолучитьЗначение(Сч).Наименование 
    +"=" + " " + "КонОст(Кол) КОГДА Склад=СпСкладов.ПолучитьЗначение(" + Строка(Сч) + ");"; 
    КонецЦикла
    
    
    Это пример реализации горизонтальной группировки по складам. Твой способ тоже хорош, но только в случае, если у меня всего одна вертикальная группировка. А если их 5? Тогда придется пять запросов выполнять, наверное:)
Похожие темы
  1. Olga27
    Ответов:
    1
    Просмотров:
    364
Загрузка...

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