Имя: Пароль:
1C
1С v8
БП 3.0: Помогите разобраться с выводом СКД
,
0 _stay true_
 
20.03.14
17:15
Здравствуйте. Идея такая: программно одним кликом по кнопке на форме журнала документов "Банковские выписки" формировать свой отчет с уже установленными отборами и параметрами.

Отборы программно устанавливаются, параметры тоже. Приступаем к компановке и выводу результата.

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

Как доходит до этапа вывода результата - так вываливается ошибка: в процедуре доходит до "Получить форму" - вываливает ошибку "Интерактивные операции недоступны".

Как ещё можно открыть уже сформированный отчет?

Код Пролцедур

&НаКлиенте
Процедура РеестрДокументов(Команда)
    
    ВывестиРеестр();
    
КонецПроцедуры


&НаСервере
Процедура ВывестиРеестр()
//Создадим программно новый отчет    
отчет = Отчеты.БанковскиеВыписки.Создать();
//Объявим переменные для отборов
Организация = ЭтотОбъект.ОтборОрганизация;
БанковскийСчет = ЭтотОбъект.ОтборБанковскийСчет;

//Установим отбор по организации
ОтборОрг = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОрг.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
ОтборОрг.ПравоеЗначение = Организация;

//Установим отбор по БС
ОтборБС = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборБС.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("БанковскийСчет")).Поле;
ОтборБС.ПравоеЗначение = БанковскийСчет;

//Передадим параметры в запрос СКД

Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение = НачалоМесяца(ТекущаяДата());
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение = КонецМесяца(ТекущаяДата());

//Очистим табдок
//Очищаем поле табличного документа


форма = Отчет.ПолучитьФорму("ФормаОтчета");

Результат = Форма.ЭлементыФормы.Результат;
Результат.Очистить();
отчет.СкомпоноватьРезультат(Результат);

Форма.Открыть();



КонецПроцедуры
1 _stay true_
 
20.03.14
17:17
+
2 _stay true_
 
20.03.14
17:19
Вываливает такую ошибку:

{ЖурналДокументов.БанковскиеВыписки.Форма.ФормаСписка.Форма(728)}: Ошибка при вызове метода контекста (ПолучитьФорму)
форма = Отчет.ПолучитьФорму("ФормаОтчета");
по причине:
Интерактивные операции недоступны
3 VikingKosmo
 
20.03.14
17:21
Открыть форму на сервере это да, самое то...
4 _stay true_
 
20.03.14
17:22
(3) Блин, и правда. Тогда пара вопросов:

1. Как получить табличный документ для вывода результата?
2. Где и как ещё открывать форму отчета?
5 VikingKosmo
 
20.03.14
17:24
(4) 1. Получить как возвращаемое значение какой нибудь серверной функции.
2. Открывать форму ИМХО лучше все таки на клиенте. А на счет как, это в СП.
6 _stay true_
 
20.03.14
17:30
Сделал так

Функция ВывестиРеестр(ТабДок)
//Создадим программно новый отчет    
отчет = Отчеты.БанковскиеВыписки.Создать();
//Объявим переменные для отборов
Организация = ЭтотОбъект.ОтборОрганизация;
БанковскийСчет = ЭтотОбъект.ОтборБанковскийСчет;

//Установим отбор по организации
ОтборОрг = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборОрг.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Организация")).Поле;
ОтборОрг.ПравоеЗначение = Организация;

//Установим отбор по БС
ОтборБС = Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборБС.ЛевоеЗначение = Отчет.КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("БанковскийСчет")).Поле;
ОтборБС.ПравоеЗначение = БанковскийСчет;

//Передадим параметры в запрос СКД

Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение = НачалоМесяца(ТекущаяДата());
Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение = КонецМесяца(ТекущаяДата());

//Очистим табдок
//Очищаем поле табличного документа

ТабДок = Новый ТабличныйДокумент;
ТабДок.Очистить();

Отчет.СкомпоноватьРезультат(ТабДок);

Возврат ТабДок;




КонецФункции


Теперь не могу понять,как мне из этого табдока перегрузить результат в ревизит формы отчета "результат"?
7 _stay true_
 
20.03.14
17:53
Форма открывается, Но приходится вручную нажимать "сформировать". Как это сделать программно?
8 hhhh
 
20.03.14
18:36
открыть кнопку сформировать и посмотреть, не?
9 antoneus
 
20.03.14
18:42
(7)

в форме отчета

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //Вставить содержимое обработчика
    
    Параметры.СформироватьПриОткрытии = Истина
    
КонецПроцедуры
10 _stay true_
 
21.03.14
12:14
(9) Работает! Спасибо тебе огромное за помощь!

P.S: будешь в Воронеже - с меня вискарик)
11 _stay true_
 
21.03.14
12:42
Отказался от своих процедур(отборы и параметры не выставляются почему-то). Сделал как сказал (9)

В форме списка журнала документов Банковские выписки

&НаКлиенте
Процедура РеестрДокументов(Команда)

Форма = ПолучитьФорму("Отчет.БанковскиеВыписки.Форма.ФормаОтчета");
Форма.Открыть();
КонецПроцедуры





В модуле отчета:
&НаСервере
         
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
  

    //Параметры.Отбор.Вставить("Организация", ОтборОрганизаиция);
    Параметры.СформироватьПриОткрытии = Истина
  

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




Отчет формируется. Вопрос такой: как мне теперь перед формированием отчета передать отборы с формы списка журнала?(в СКД заданы как пользовательские настройки)
12 _stay true_
 
21.03.14
12:49
На форме журнала есть реквизиты формы Организация и банковский счет. В отчете я использую отборы по этим реквизитам. Как мне перетянуть значения реквизитов с формы журнала в отборы отчета?
13 _stay true_
 
21.03.14
13:14
Пятница)