|
Программный вывод отчета на СКД в управляемых формах. | ☑ | ||
---|---|---|---|---|
0
Andreyyy
11.05.12
✎
08:57
|
Добавил команду на форму отчета, почитал мануалы и написал вот такой код:
&НаСервере Процедура СформироватьОтчетНаСервере(ТабДок) ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = Схема.НастройкиПоУмолчанию; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(Схема, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры &НаКлиенте Процедура СформироватьОтчет(Команда) СформироватьОтчетНаСервере(Результат); КонецПроцедуры Результат не удовлетворил, пользовательский отбор не накладывается, работает тот, что по умолчанию в настройках варианта. И выводит надпись "Отчет не сформирован. Нажмите "Сформировать" для получения отчета. Скрин: http://clck.ru/d/arCifjmD1487b Что я забыл дописать ? |
|||
1
Andreyyy
11.05.12
✎
09:23
|
С отборами разобрался, добавил код по загрузке пользовательских настроек.
Вынлядит теперь так: &НаСервере Процедура СформироватьОтчетНаСервере(ТабДок) ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Настройки = Схема.НастройкиПоУмолчанию; КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); КомпоновщикНастроекДанных.ЗагрузитьПользовательскиеНастройки(Отчет.КомпоновщикНастроек.ПользовательскиеНастройки); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекДанных.ПолучитьНастройки()); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабДок); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры &НаКлиенте Процедура СформироватьОтчет(Команда) СформироватьОтчетНаСервере(Результат); КонецПроцедуры Отчет формируется, но остается надпись "Отчет не сформирован. Нажмите "Сформировать" для получения отчета". Что еще нужно дописать ? |
|||
2
vinogradъ
11.05.12
✎
09:26
|
поиск? не, не слышал.
|
|||
3
vinogradъ
11.05.12
✎
09:27
|
||||
4
Aprobator
11.05.12
✎
09:27
|
где вы только такие мануалы берете (
|
|||
5
Aprobator
11.05.12
✎
09:29
|
+(4) выдержка из СП:
Расширение управляемой формы для отчета (Managed form extension for reports) СкомпоноватьРезультат (ComposeResult) Синтаксис: СкомпоноватьРезультат(<РежимКомпоновки>) Параметры: <РежимКомпоновки> (необязательный) Тип: РежимКомпоновкиРезультата. Задает режим формирования результата. Значение по умолчанию: Непосредственно Описание: Доступен только в форме отчета. Выводит отчет с текущими настройками в элемент - результат. Заполняет данные расшифровки. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. |
|||
6
Andreyyy
11.05.12
✎
09:35
|
Избавился от надписи так:
Элементы.Результат.ОтображениеСостояния.Видимость = Ложь; Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать; (3) После такого метода надпись будет вновь появляться (а надо), если отбор изменили ? (5) Нужно будет убирать/устанавливать поля в зависимости от установленных параметров (для этого программно и делаю), возможно будет при таком подходе это сделать ? |
|||
7
Aprobator
11.05.12
✎
09:37
|
(6) ... Выводит отчет с текущими настройками в элемент результат... - а что помешает?
|
|||
8
Aprobator
11.05.12
✎
09:38
|
там же у формы отчета параметр формы - ПользовательскиеНастройки.
|
|||
9
Andreyyy
11.05.12
✎
09:39
|
(7) Мне нужно управлять видимостью полей.
Типа таким кодом в модуле отчета: Процедура УстановитьУбратьПоля(Значение) ПолеБазиснаяСтанция = Новый ПолеКомпоновкиДанных("ПараметрыДанных.БазиснаяСтанция"); ПолеКилометраж = Новый ПолеКомпоновкиДанных("Километраж"); ПолеЖДТариф = Новый ПолеКомпоновкиДанных("ЖДТариф"); ВыбранныеПоля = КомпоновщикНастроек.Настройки.Выбор.Элементы; Для Каждого ЭлементВыбора Из ВыбранныеПоля Цикл Если ЭлементВыбора.Поле = ПолеБазиснаяСтанция Или ЭлементВыбора.Поле = ПолеКилометраж Или ЭлементВыбора.Поле = ПолеЖДТариф Тогда ЭлементВыбора.Использование = Значение; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
10
Andreyyy
11.05.12
✎
09:39
|
(9) Если флажок отбора есть у одного из параметров, то определенные поля выводятся, если нет флажка, то нет.
|
|||
11
Aprobator
11.05.12
✎
09:42
|
(9) ну так установи. Есть еще расширение формы отчета - ФиксированныеНастройки. Читай СП и пробуй (СП - Интерфейс (управляемый) - Управляемая форма - Отчет) . Просто в (0) уж совсем каменный век.
|
|||
12
Andreyyy
11.05.12
✎
09:48
|
(11) Информации лучше http://www.spec8.ru/kurs-po-skd-besplatno к сожалению не нашел, (0) оттуда.
Подскажите что актуальней почитать. Спасибо. |
|||
13
Aprobator
11.05.12
✎
09:49
|
(12) СП - ссылку дал. Второй вариант - открыть типовую конфу и в ней покопаться.
|
|||
14
Aprobator
11.05.12
✎
09:50
|
(12) фига се. Первый раз вижу этот курс. Надо будет самому при случае глянуть.
|
|||
15
Andreyyy
11.05.12
✎
10:02
|
(5) Вобщем при таком методе все работает как надо, спасибо.
Процедура УстановитьУбратьПоля(Значение) ПолеБазиснаяСтанция = Новый ПолеКомпоновкиДанных("ПараметрыДанных.БазиснаяСтанция"); ПолеКилометраж = Новый ПолеКомпоновкиДанных("Километраж"); ПолеЖДТариф = Новый ПолеКомпоновкиДанных("ЖДТариф"); ВыбранныеПоля = КомпоновщикНастроек.Настройки.Выбор.Элементы; Для Каждого ЭлементВыбора Из ВыбранныеПоля Цикл Если ЭлементВыбора.Поле = ПолеБазиснаяСтанция Или ЭлементВыбора.Поле = ПолеКилометраж Или ЭлементВыбора.Поле = ПолеЖДТариф Тогда ЭлементВыбора.Использование = Значение; КонецЕсли; КонецЦикла; КонецПроцедуры Функция СформироватьОтчетПоПредложениям(ТабДок) Экспорт БазиснаяСтанцияПараметр = Новый ПараметрКомпоновкиДанных("БазиснаяСтанция"); ПолеБазиснаяСтанция = Новый ПолеКомпоновкиДанных("ПараметрыДанных.БазиснаяСтанция"); ПользовательскийОтбор = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; Для Каждого ЭлементОтбора Из ПользовательскийОтбор Цикл Если ЭлементОтбора.Параметр = БазиснаяСтанцияПараметр Тогда УстановитьУбратьПоля(ЭлементОтбора.Использование); Прервать; КонецЕсли; КонецЦикла; СкомпоноватьРезультат(ТабДок); КонецФункции |
|||
16
Aprobator
11.05.12
✎
10:07
|
(15) во - можешь же когда хочешь )
|
|||
17
Aprobator
11.05.12
✎
10:30
|
+(16) хотя у СкомпоноватьРезультат для управляемых форм параметр (см (5) и СП внимательно)нефига не ТабличныйДокумент. Но 1Сы есть 1 Сы - тут ничего не поделаешь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |