|
БП 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
|
Пятница)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |