|
УФ СКД Заполнить пользовательские параметры и сформировать отчет | ☑ | ||
---|---|---|---|---|
0
olegves
11.09.14
✎
11:24
|
Имеем. Отчет на СКД. Выполняется как отдельно, так и из другой формы с передачей параметров. Если отдельно ни разу не выполнялся (не сохранены пользовательские Параметры), то никак не хочет выполнять отчет, открытый из другой формы с переданными параметрами. Кнопка нажимается, а отчет не формируется.
Заполнение Параметров решил так: НаСервере Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Настройки) Если НЕ ЗначениеЗаполнено(Параметры.ВариантОтчета) Тогда Возврат; КонецЕсли; Для каждого эо из Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если эо.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Рабочий") Тогда ИДРабочий = эо.ИдентификаторПользовательскойНастройки; ИначеЕсли эо.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект") Тогда ИДОбъект = эо.ИдентификаторПользовательскойНастройки; КонецЕсли; КонецЦикла; Для каждого эл из Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл //Для каждого эл из Настройки.Элементы Цикл Если ТипЗнч(эл) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Если эл.Параметр = Новый ПараметрКомпоновкиДанных("Период") Тогда эл.Значение = Параметры.Период; ИначеЕсли эл.Параметр = Новый ПараметрКомпоновкиДанных("ВариантОтчета") Тогда эл.Значение = Параметры.ВариантОтчета; ИначеЕсли эл.Параметр = Новый ПараметрКомпоновкиДанных("ДокументКорректировка") Тогда эл.Использование = Ложь; КонецЕсли; ИначеЕсли эл.ИдентификаторПользовательскойНастройки = ИДРабочий Тогда эл.Использование = Истина; эл.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; эл.ПравоеЗначение = Новый СписокЗначений; эл.ПравоеЗначение.ЗагрузитьЗначения(Параметры.Рабочий); ИначеЕсли эл.ИдентификаторПользовательскойНастройки = ИДОбъект Тогда эл.Использование = Ложь; КонецЕсли; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Если Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Значение=Неопределено Тогда ПриЗагрузкеПользовательскихНастроекНаСервере(Неопределено); Если НЕ ВладелецФормы = Неопределено Тогда Модифицированность = Истина; ОбновитьОтображениеДанных(); Scr = NEW COMОбъект("WScript.Shell"); Scr.SendKeys("{TAB}"); Scr.SendKeys("{TAB}"); Scr.SendKeys("{TAB}"); Scr.SendKeys("{ENTER}"); Scr = Неопределено; КонецЕсли; КонецЕсли; КонецПроцедуры Вопрос: Кто-нить решил такую траблу? |
|||
1
vicof
11.09.14
✎
11:30
|
"Scr = NEW COMОбъект("WScript.Shell");
Scr.SendKeys("{TAB}"); Scr.SendKeys("{TAB}"); Scr.SendKeys("{TAB}"); Scr.SendKeys("{ENTER}"); Scr = Неопределено;" гыгы. А если кто-нить порядок следования элементов поменяет? Или еще один добавит? |
|||
2
olegves
11.09.14
✎
11:34
|
(1) а ты попробуй, а потом мне отпиши :)
Как только добавишь, этот код уже не сработает |
|||
3
vicof
11.09.14
✎
11:46
|
(2) Собстна, я об этом и говорю, мне и пробовать не надо, все и так очевидно.
|
|||
4
olegves
11.09.14
✎
12:18
|
Нашел решение - помогла Хрусталева (Разр-ка сложных отчетов)
ПриОткрытии - убрать &НаСервере Процедура ПередЗагрузкойВариантаНаСервере(Настройки) Если НЕ Параметры.Свойство("ВариантОтчета") Тогда Возврат; КонецЕсли; Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", Параметры.Период); Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ВариантОтчета", Параметры.ВариантОтчета); ДокКорр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДокументКорректировка")); Если НЕ ДокКорр = Неопределено Тогда ДокКорр.Использование = Ложь; КонецЕсли; Для Каждого эл из Настройки.Отбор.Элементы Цикл Если эл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Рабочий") Тогда эл.Использование = Истина; эл.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; эл.ПравоеЗначение = Новый СписокЗначений; эл.ПравоеЗначение.ЗагрузитьЗначения(Параметры.Рабочий); КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |