8.х Вывод в табличный документ в ширину

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

  1. TopicStarter Overlay
    Thierri
    Offline

    Thierri

    Регистрация:
    14 авг 2012
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Помогите. Не могу вывести в одну строку, выводит все списком. Выводит так:
    Товар Склад1
    Товар Склад2
    Товар Склад3
    ........
    а надо:

    Товар Склад1 Склад2 Склад3 .....
    Вот код:

    Код:
    Процедура СформироватьОтчет(ТабДок, Товар)
    
    ОбъектЗн = РеквизитФормыВЗначение("Объект");
    Макет = ОбъектЗн.ПолучитьМакет("Макет");
    
    Обл1 = Макет.ПолучитьОбласть("Область1");
    
    ТабДок.Очистить();
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.Номенклатура.Наименование,
    | ТоварыНаСкладахОстатки.Склад.Наименование КАК Склады,
    | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |ГДЕ
    | ТоварыНаСкладахОстатки.Номенклатура.Ссылка = &ОтборПоТовару
    |
    |СГРУППИРОВАТЬ ПО
    | ТоварыНаСкладахОстатки.Номенклатура.Наименование,
    | ТоварыНаСкладахОстатки.Склад.Наименование";
    
    Запрос.УстановитьПараметр("ОтборПоТовару", Товар);
    
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
    Обл1.Параметры.Склад = Выборка.Склады;
    ТабДок.Присоединить(Обл1);
    
    КонецЦикла;
    //ТабДок.Вывести(ОблС1);
    
    
    
    КонецПроцедуры
    
    Вроде использовал Присоединить а все = выводит списком
  2. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    Код:
    Если Выборка.Следующий() Тогда
    Обл1.Параметры.Склад = Выборка.Склады;
    ТабДок.Вывести(Обл1);
    КонецЕсли;
    Пока Выборка.Следующий() Цикл
    Обл1.Параметры.Склад = Выборка.Склады;
    ТабДок.Присоединить(Обл1);
    КонецЦикла;
  3. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    С кодом вроде все ок. Посмотри макет.
    Код:
    Процедура СформироватьОтчет(ТабДок, Товар) Экспорт
    ТабДок.Очистить();
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    ОблСклад = Макет.ПолучитьОбласть("Область1|Склад");
    ОблТовар = Макет.ПолучитьОбласть("Область1|Товар");
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    | ТоварыНаСкладахОстатки.Номенклатура.Наименование,
    | ТоварыНаСкладахОстатки.Склад.Наименование   КАК Склады,
    | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки   КАК ТоварыНаСкладахОстатки
    |ГДЕ
    | ТоварыНаСкладахОстатки.Номенклатура.Ссылка = &ОтборПоТовару
    |
    |СГРУППИРОВАТЬ ПО
    | ТоварыНаСкладахОстатки.Номенклатура.Наименование,
    | ТоварыНаСкладахОстатки.Склад.Наименование";
    Запрос.УстановитьПараметр("ОтборПоТовару", Товар);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    ОблТовар.Параметры.Товар = Выборка.НоменклатураНаименование;
    ОблСклад.Параметры.Склад = Выборка.Склады;
    ТабДок.Присоединить(ОблСклад);
    КонецЦикла;
    //ТабДок.Вывести(ОблС1);
    
    КонецПроцедуры
    
    Посмотреть вложение 11946
    Посмотреть вложение 11947

    Вложения:

  4. Tiger86
    Offline

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

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

    Надо скорее всего обходить запрос по группировкам. выводить область Товар, затем в ней присоединять в цикле область склад. Тогда должно получиться.
  5. TopicStarter Overlay
    Thierri
    Offline

    Thierri

    Регистрация:
    14 авг 2012
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Я не знаю. В макете все ок. Я уже во всех свойствах макета попереклацал, бесполезно.
  6. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    для присоединения нужна фиксированная область (вот как вам показал Юрий), а у вас (судя по коду) область - это строка в макете. Посмотрите в эту сторону.
  7. TopicStarter Overlay
    Thierri
    Offline

    Thierri

    Регистрация:
    14 авг 2012
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Хорошо. Тогда такой глупый вопрос. Как сделать вертикальную область? Просто выделить ее и именовать? Если да, то почему у меня не видно имен в верху макета как у Юрия
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Потому что целиком нужно область выделять (щелкать по номеру колонки), а не тупо выделять ячейки.

    И кстати, у объединненных строк выделить такие области не получится.
  9. TopicStarter Overlay
    Thierri
    Offline

    Thierri

    Регистрация:
    14 авг 2012
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Всем огромное спасибо. Все получилось.
  10. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Получиться Посмотреть вложение 11950

    Вложения:

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