|
Как установить период отчета на УФ СКД с помощью ОткрытьФорму? | ☑ | ||
---|---|---|---|---|
0
эцп
20.12.12
✎
16:26
|
Как передать отбор в отчет СКД на УФ понятно:
ПараметрыФормы = Новый Структура("Отбор,КлючНазначенияИспользования,СформироватьПриОткрытии", Новый Структура("Контрагент", Контрагент), "Остновной", Истина); ОткрытьФорму("Отчет.МойОтчет.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); А как установить период отчета? Период отчета задан как параметр "ПериодОтчета" http://i51.fastpic.ru/big/2012/1220/e7/3aa18d5cee48ddd0cdc0e1ddbda361e7.png http://i51.fastpic.ru/big/2012/1220/91/329f04c6890fe4e6bd9e211cd5d36691.png |
|||
1
эцп
20.12.12
✎
16:46
|
Все празднуют конец света?
|
|||
2
Popkorm
20.12.12
✎
16:55
|
(1) Новый Структура("ПериодОтчета,ПериодОтчета)
|
|||
3
эцп
20.12.12
✎
16:59
|
А если с примером? Пока не понятно
|
|||
4
Popkorm
20.12.12
✎
17:01
|
(3) СП:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>) где ПараметрыФормы = Новый Структура("Отбор,КлючНазначенияИспользования,СформироватьПриОткрытии", Новый Структура("Контрагент", Контрагент), "Остновной", Истина) период отчета = это не параметр?! |
|||
5
Popkorm
20.12.12
✎
17:02
|
+
П = Новый Структура("Ключ", Поставщик); Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П); Форма.Открыть(); |
|||
6
эцп
20.12.12
✎
17:07
|
(4) Не получилось, как параметр ПериодОтчета игнорируется
|
|||
7
эцп
20.12.12
✎
18:06
|
ПараметрыФормы = Новый Структура("КлючНазначенияИспользования,СформироватьПриОткрытии", "Основной", Истина);
СхемаКомпоновкиДанных = Отчеты.МойОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); ПН = КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки; Если ЗначениеЗаполнено(Контрагент) Тогда ПолеКонтрагент = Новый ПолеКомпоновкиДанных("Контрагент"); ЭлементОтбора = Неопределено; Для Каждого Элемент Из КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы Цикл Если Элемент.ЛевоеЗначение <> ПолеКонтрагент Тогда Продолжить; КонецЕсли; ЭлементОтбора = Элемент; Прервать; КонецЦикла; Элемент = ПН.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Элемент.ПравоеЗначение = Расшифровка.Контрагент; Элемент.Использование = Истина; КонецЕсли; ЭлементОтбора = КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета"); Элемент = ПН.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); Элемент.Значение = Новый СтандартныйПериод(Расшифровка.НачДата, Расшифровка.КонДата); Элемент.Использование = Истина; ПараметрыФормы.Вставить("ПользовательскиеНастройки", ПН); ОткрытьФорму("Отчет.МойОтчет.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); |
|||
8
эцп
20.12.12
✎
18:06
|
(7) А проще никак нельзя? Выглядит, как большой костыль?
|
|||
9
vmv
20.12.12
✎
22:55
|
попробуй так, тут писал ляпы по-барабану
ФормаОтчета = ПолучитьФорму("Отчет.МойОтчет.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); // серверные обрабочики создания формы уже отработали клиент ждет что же дальше ЭтотОбъект= ФормаОтчета.Объект; СкдПараметрыКакЯХочу = Новый Структура; СкдПараметрыКакЯХочу.Вставить("Период", ...); СкдПараметрыКакЯХочу.Вставить("ПраметрЧегото", ...); ОбщийМодульКакЯХочу.УстановитьПараметрыОтчета(ФормаОтчета.Объект, СкдПараметрыКакЯХочу, Неопределено); .... Процедура УстановитьПараметрыОтчета(ЭтотОбъект, СкдПараметры, Настройки=Неопределено) Экспорт Если Настройки = Неопределено Тогда ЗначенияПараметровДанныхКД = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных; Иначе ЗначенияПараметровДанныхКД = Настройки.ПараметрыДанных; КонецЕсли; Для каждого ЭлементСтруктуры Из СкдПараметры Цикл ЗначениеПараметраКД = ЗначенияПараметровДанныхКД.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ЭлементСтруктуры.Ключ)); Если ЗначениеПараметраКД <> Неопределено Тогда ЗначениеПараметраКД.Значение = ЭлементСтруктуры.Значение; ЗначениеПараметраКД.Использование = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
10
sanja26
20.12.12
✎
23:05
|
"Остновной"
|
|||
11
sanja26
20.12.12
✎
23:07
|
(0) пользовательские настройки компоновки данных не пробовал заполнять?
|
|||
12
эцп
21.12.12
✎
14:26
|
(9) А как сформировать отчет автоматически в данном случае?
Дело в том, что отчет открывается сформированный без отборов, при этом отборы установлены и висит надпись с предложением нажать кнопку "Сформировать". Нажмешь - отчет сформируется |
|||
13
эцп
21.12.12
✎
14:57
|
(9) Убрал в ПараметрыФормы свойство "СформироватьАвтоматически" - теперь отчет открывается не сформированным и с установленными отборами. Осталось как-то программно нажать кнопку "Сформировать"
|
|||
14
vmv
21.12.12
✎
15:10
|
(12) открой палитру свойств УФ-форма
и свойство АвтоОтображениеСостояния уствнови в "Отображать при выполнении" тогда не будет тупого сообщения "Сформировать" серым кругом сформировать программно можно так &НаСервере Функция ОтчетОбновить(ОтчетИмя, СкдПараметры) // РФ_ТабДок - реквизит формы типа "табличный документ" // РФ_ТабДокДанныеРасшифровкиКд - реквизит формы типа "строка" // Это может быть форма отчета или любая другая где необходимы данные этого отчета на форме в табличном документе ОтчетОбъект = Отчеты[ОтчетИмя].Создать(); Add_ComM_ТИССервер.УстановитьПараметрыОтчета(ОтчетОбъект, СкдПараметры); ДанныеРасшифровкиКд = Новый ДанныеРасшифровкиКомпоновкиДанных; ОтчетОбъект.СкомпоноватьРезультат(РФ_ТабДок, ДанныеРасшифровкиКд); РФ_ТабДокДанныеРасшифровкиКд = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиКд, ЭтаФорма.УникальныйИдентификатор); // Терминация объектных и коллекционных переменных ОтчетОбъект = 0; Возврат Истина; КонецФункции и никакие формы отчета не нужны, если точно не нужно какойто спецформы, а нужен результат компоновки с расшифровкой |
|||
15
vmv
21.12.12
✎
15:13
|
"программно нажать кнопку "Сформировать"" - это
ОтчетОбъект.СкомпоноватьРезультат(); Читай СП, свободен, т.к уже можно считать тебя подаваном УФ-отчетов, если воткнул |
|||
16
эцп
21.12.12
✎
15:55
|
(14) Нужно открыть управляемую форму отчета на СКД с установленными пользовательскими настройками (параметры СКД и отборы).
С твоими предложениями получился следующий вариант: ПараметрыФормы = Новый Структура("КлючНазначенияИспользования", "Основной"); Форма = ПолучитьФорму("Отчет.МойОтчет.Форма", ПараметрыФормы); КомпоновщикНастроекКомпоновкиДанных = Форма.Отчет.КомпоновщикНастроек; ПН = КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки; //Могут быть и другие отборы. Их нужно отключить Для Каждого Элемент Из ПН.Элементы Цикл Элемент.Использование = Ложь; КонецЦикла; Если ЗначениеЗаполнено(Контрагент) Тогда ПолеКонтрагент = Новый ПолеКомпоновкиДанных("Контрагент"); ЭлементОтбора = Неопределено; Для Каждого Элемент Из КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы Цикл Если Элемент.ЛевоеЗначение <> ПолеКонтрагент Тогда Продолжить; КонецЕсли; ЭлементОтбора = Элемент; Прервать; КонецЦикла; Элемент = ПН.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Элемент.ПравоеЗначение = Контрагент; Элемент.Использование = Истина; КонецЕсли; ЭлементОтбора = КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.Элементы.Найти("ПериодОтчета"); Элемент = ПН.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); Элемент.Значение = Новый СтандартныйПериод(НачДата, КонДата); Элемент.Использование = Истина; Форма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Авто); ОткрытьФорму(Форма); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |