Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 06:58

Заполнение макета отчета

Автор sh.u.t, 04 июн 2015, 20:34

0 Пользователей и 1 гость просматривают эту тему.

sh.u.t

Обрабатывает команду без ошибок, но в макет не выводит данные ?

Дмитрий@

Скиньте код, что вы написали

sh.u.t

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

   Для СчетчикЛистов = 0 По КоличествоСтраниц - 1 Цикл
    Для СчетчикСтрок = 1 По 32 Цикл
        ОбластьСтрока = Макет.ПолучитьОбласть("ОблСтрока");
       Номер = (СчетчикЛистов*256)+СчетчикСтрок - 1;
           Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр1 = Таблица[Номер].Номер;
                ОбластьСтрока.Параметры.Стр2 = Таблица[Номер].Брутто;
           КонецЕсли;
        Номер = Номер + 32;             
            Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр3 = Таблица[Номер].Номер;
                ОбластьСтрока.Параметры.Стр4 = Таблица[Номер].Брутто;
           КонецЕсли;

            ТабДок.Вывести(ОбластьСтрока);
       КонецЦикла;
  КонецЦикла;
 
 
   
   КонецПроцедуры

Дмитрий@

Ну вы его допишите по аналогии, я же вам там указал в коде.
Он у вас сейчас должен коректно выводить только первую строчку, в первых двух столбцах.

ЦитироватьНу и так далее .....
Добавлено: 06 июн 2015, 20:38


И вместо "Таблица[Номер].Номер" надо написать "Таблица[Номер].НомерКипа". Ошибки такого рода я думал вы сами исправите.

Добавлено: 06 июн 2015, 20:43


Моя цель не написать за вас правильный код, а подать механизм, идею, алгоритм, которые вы воплотите в виде своего кода.

sh.u.t

Код дописал , во вложении то что выводит отчет.

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

   Для СчетчикЛистов = 0 По КоличествоСтраниц - 1 Цикл
    Для СчетчикСтрок = 1 По 32 Цикл
        ОбластьСтрока = Макет.ПолучитьОбласть("ОблСтрока");
       Номер = (СчетчикЛистов*256)+СчетчикСтрок - 1;
           Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр1 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр2 = Таблица[Номер].Брутто;
           КонецЕсли;
        Номер = Номер + 32;             
            Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр3 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр4 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 64;             
            Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр5 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр6 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 96;             
            Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр7 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр8 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 128;   
        Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр9 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр10 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 160;   
        Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр9 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр10 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 192;   
        Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр11 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр12 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 224;   
        Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр13 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр14 = Таблица[Номер].Брутто;
         КонецЕсли;
      Номер = Номер + 256;   
        Если Номер <= Таблица.Количество() Тогда
                ОбластьСтрока.Параметры.Стр15 = Таблица[Номер].НомерКипа;
                ОбластьСтрока.Параметры.Стр16 = Таблица[Номер].Брутто;
         КонецЕсли;
             
            ТабДок.Вывести(ОбластьСтрока);
       КонецЦикла;
  КонецЦикла;
 
 
   
   КонецПроцедуры

Дмитрий@

А вы смотрели в выборке есть данные или нет?

sh.u.t

Данные есть, проверял.

Дмитрий@

Исправьте строчку "Для СчетчикЛистов = 0 По КоличествоСтраниц - 1 Цикл" на "Для СчетчикЛистов = 0 По КоличествоСтраниц Цикл".

sh.u.t

Исправил, но выходит ошибка.

Дмитрий@

А чему равен в этот момент "Номер" и "Таблица.Количество()"?
И на какой строчке происходит ошибка?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск