Имя: Пароль:
1C
1С v8
Проблема с выводом табличного документа
0 _stay true_
 
15.08.12
10:45
Есть обоаботка, на ней реквизит "номенклатура"(поле ввода). При выборе номенклатуры и нажитии "выполнить" выводится отчет из макета в виде табличного документа. Проблема: без разницы какую номенклатуру выбираешь, все равно отчет выводится по всем позициям. Как сделать так чтобы выводился отчет только по выбранному?

Код Обработки:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   ОсновныеДействияФормыДействие();
КонецПроцедуры

Процедура ОсновныеДействияФормыДействие()
   
   Номенклатура = ОбработкаОбъект.Номенклатура;
   ВнНабДан=Новый Структура;
   ВнНабДан.Вставить("НаборДанных1", Номенклатура);
   моймакет=ЭтотОбъект.ПолучитьМакет("Макет1");    
   настройки=ЭтотОбъект.ПолучитьМакет("Макет1").НастройкиПоУмолчанию;        
   КомпМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомп=КомпМакета.Выполнить(моймакет, настройки);
   Проц=Новый ПроцессорКомпоновкиДанных;
   Проц.Инициализировать(МакетКомп, ВнНабДан);
   ДокументРезультат=Новый ТабличныйДокумент;
   ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   ПроцессорВывода.НачатьВывод();
   Пока истина Цикл
       ЭлементРезультата=Проц.Следующий();
       Если ЭлементРезультата=Неопределено тогда
           Прервать;
       Иначе  ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       КонецЕсли;
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
   ДокументРезультат.Показать();

КонецПроцедуры
1 _stay true_
 
15.08.12
11:16
ну вот...неужели никто не поможет горе-погромисту?))
2 Лоботряс
 
15.08.12
11:28
СКД надо смотреть
3 Лоботряс
 
15.08.12
11:29
Как там внешний объект используется
4 _stay true_
 
15.08.12
14:35
Решил пойти более простым путем. Код Обработки:

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   ВывестиОтчет(ОбработкаОбъект, );

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


Функция ВывестиОтчет(ОбработкаОбъект, ТабДокумент)

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

   
   Возврат ТабДокумент;    
     

КонецФункции // ()


Запускаем, выбираем номенклатуру, жмем "выполнить" - выскакивает пустая таблица(разумеется с размеченными полями). Как быть?
5 IBTM
 
15.08.12
14:40
(4) спасибо запотентую:)