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

(Не выводит в макет)

Автор GanG031, 23 мар 2016, 11:40

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

GanG031

Доброго времени суток! Пишу отчет, точнее переделываю с обычных форм на управляемые, вот текст в управляемом приложении:

Процедура Сформировать(Команда)
   
    СформироватьНаСервере();

   
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
      
   ТаличныйДокумент.Очистить();
   Запрос = Новый  Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СУММА(ПоступлениеТоваровУслуг.СуммаДокумента) КАК СуммаПокупок,
   |   СУММА(1) КАК КоличествоПокупок
   |ИЗ
   |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   |ГДЕ
   |   ПоступлениеТоваровУслуг.Проведен = ИСТИНА
   |   И ПоступлениеТоваровУслуг.СуммаДокумента <= &СуммаДокумента
   |   И ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачПериода И &КонПериода" ;
   Запрос.УстановитьПараметр("НачПериода", Период.ДатаНачала);
   Запрос.УстановитьПараметр("КонПериода",Период.ДатаОкончания);
   Запрос.УстановитьПараметр("СуммаДокумента", СуммаДокумента);
   Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
   ОП = Макет.ПолучитьОбласть("Область");
   ОП.Параметры.ПериодОтчета = "" + Формат(Период.ДатаНачала, "ДФ=dd.MM.yyyy") + " - " + Формат(Период.ДатаОкончания, "ДФ=dd.MM.yyyy");
   
   ТабРез = Запрос.Выполнить().Выгрузить();
   Если Не ТабРез.Количество() = 0 Тогда
      ОП.Параметры.Заполнить(ТабРез[0]);
      ОП.Параметры.ТекущаяДата = ТекущаяДата();
      ТаличныйДокумент.Вывести(ОП);
   КонецЕсли   

КонецПроцедуры


Все это пишется в модуле формы, так же есть макет. Сам запрос верный, проверял в консоле запросов, но вот выводить в макет никак не хочет, выыводит только пустой макет. Я так понимаю, что не правильно передал какие то параметры, но вот не пойму  где ошибка...Подскажите пожалуйста! Заранее спасибо!



GanG031

Период - Реквизит формы, имеющий тип "Стандартный период"

LexaK

необходимо сформировать табличный документ, вернуть его на клента и там его показать
ваш код с небольшими корректировками, попробуйте



&НаКлиенте
Процедура Сформировать(Команда)
    лкТаб = 0;
    СформироватьНаСервере(лкТаб);
    лкТаб.Показать(,,Ложь);
   
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере(лкТаб)

   лкТаб = Новый ТабличныйДокумент;

   //ТаличныйДокумент.Очистить();
   Запрос = Новый  Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СУММА(ПоступлениеТоваровУслуг.СуммаДокумента) КАК СуммаПокупок,
   |   СУММА(1) КАК КоличествоПокупок
   |ИЗ
   |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   |ГДЕ
   |   ПоступлениеТоваровУслуг.Проведен = ИСТИНА
   |   И ПоступлениеТоваровУслуг.СуммаДокумента <= &СуммаДокумента
   |   И ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачПериода И &КонПериода" ;
   Запрос.УстановитьПараметр("НачПериода", Период.ДатаНачала);
   Запрос.УстановитьПараметр("КонПериода",Период.ДатаОкончания);
   Запрос.УстановитьПараметр("СуммаДокумента", СуммаДокумента);
   Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
   ОП = Макет.ПолучитьОбласть("Область");
   ОП.Параметры.ПериодОтчета = "" + Формат(Период.ДатаНачала, "ДФ=dd.MM.yyyy") + " - " + Формат(Период.ДатаОкончания, "ДФ=dd.MM.yyyy");
   
   ТабРез = Запрос.Выполнить().Выгрузить();
   //таблицу лучше обходить для каждого ...
   //такой код подходит для всех случаев 0 строк в таблице, 1 или несколько
   Для каждого лкСтр из ТабРез Цикл   
      ОП.Параметры.Заполнить(лкСтр);
      ОП.Параметры.ТекущаяДата = ТекущаяДата();
      лкТаб.Вывести(ОП);
   КонецЦикла;

   //Если Не ТабРез.Количество() = 0 Тогда
      //ОП.Параметры.Заполнить(ТабРез[0]);
      //ОП.Параметры.ТекущаяДата = ТекущаяДата();
      //лкТаб.Вывести(ОП);
   //КонецЕсли   

КонецПроцедуры

если помогло нажмите: Спасибо!

GanG031

Ругается: Переменная не определена (лкТаб)
в процедуре свормировать я ее объявил как у вас, лкТаб = 0....
Добавлено: 23 мар 2016, 13:27


эммм...мне нужно вывести в табличный документ, который уже есть на форме. Сделал вот так:

&НаКлиенте
Процедура Сформировать(Команда)
   
    СформироватьНаСервере();
     ТаличныйДокумент.Показать(,,Ложь);

   
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере()
   ЛкТаб = Новый ТабличныйДокумент;   
   ТаличныйДокумент.Очистить();
   Запрос = Новый  Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   СУММА(ПоступлениеТоваровУслуг.СуммаДокумента) КАК СуммаПокупок,
   |   СУММА(1) КАК КоличествоПокупок
   |ИЗ
   |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   |ГДЕ
   |   ПоступлениеТоваровУслуг.Проведен = ИСТИНА
   |   И ПоступлениеТоваровУслуг.СуммаДокумента <= &СуммаДокумента
   |   И ПоступлениеТоваровУслуг.Дата МЕЖДУ &НачПериода И &КонПериода" ;
   Запрос.УстановитьПараметр("НачПериода", Период.ДатаНачала);
   Запрос.УстановитьПараметр("КонПериода",Период.ДатаОкончания);
   Запрос.УстановитьПараметр("СуммаДокумента", СуммаДокумента);
   Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет");
   ОП = Макет.ПолучитьОбласть("Область");
   ОП.Параметры.ПериодОтчета = "" + Формат(Период.ДатаНачала, "ДФ=dd.MM.yyyy") + " - " + Формат(Период.ДатаОкончания, "ДФ=dd.MM.yyyy");
   
   ТабРез = Запрос.Выполнить().Выгрузить();
   //Если Не ТабРез.Количество() = 0 Тогда
   //   ОП.Параметры.Заполнить(ТабРез[0]);
   //   ОП.Параметры.ТекущаяДата = ТекущаяДата();
   //   ТаличныйДокумент.Вывести(ОП);
   //КонецЕсли   
   Для каждого лкСтр Из ТабРез Цикл
   
          ОП.Параметры.Заполнить(лкСтр);
      ОП.Параметры.ТекущаяДата = ТекущаяДата();
      ТаличныйДокумент.Вывести(ОП);
   
   КонецЦикла;


но что то опять нет то...

LexaK

ну вы блин даете!!! откуда у вас пальцы растут? что уже даже не можете кусок кода скопировать один в один!!! :angry:
я же прислал вам ваш же, исправленный код!
а вы запускаете совсем не то, и пишите про ошибки! :wacko:

да-а-а, клиника. :^454^:
если помогло нажмите: Спасибо!

GanG031

а как вывести в табличный документ, который размещен на форме?

xoverd005

Добрый день, кто сталкивался ? смотришь через отладку параметр области "транспортное средство" заполнено а в макет не выводится. Вместо нее пишу любую  строку или числа то выводится.
Снимок.PNG

Максим75

GanG031, ЭлементНаФорме.Вывести(ЛкТаб), где ЭлементНаФорме - это имя элемента на форме (связан с реквизитом формы типа ТабличныйДокумент).

т.е. вначале на сервере создаешь переменную типа табличный документ, туда все выводишь, а потом выводишь эту переменную в реквизит формы.

Теги:

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

Рейтинг@Mail.ru

Поиск