|
Отбор в отчете (управляемая форма, СКД) перед формированием отчета | ☑ | ||
---|---|---|---|---|
0
Иешуа
27.12.11
✎
15:50
|
Значится так...
Есть отчет СКД+управляемая форма. Кода в нем нет вообще, ни в модуле, ни в модуле формы. Нужно при формировании отчета устанавливать принудительный отбор для некоторых пользователей по определенному условию. Сижу вот уже второй час - как??? Помогите плиз! |
|||
1
Axel2009
27.12.11
✎
15:55
|
создавать код?
|
|||
2
Пришел в тапках
27.12.11
✎
15:56
|
В коде предлагали? )
|
|||
3
Пришел в тапках
27.12.11
✎
15:58
|
Вот нашел на быструю примерчик в нете:
Коллекция = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; Для Каждого ЭлементНастройки Из Коллекция Цикл Если ТипЗнч(ЭлементНастройки) = Тип("ЭлементОтбораКомпоновкиДанных")тогда Если ТипЗнч(ЭлементНастройки.ПравоеЗначение) = Тип("СправочникСсылка.Организации") Тогда ЭлементНастройки.ПравоеЗначение = Значен.Организация; |
|||
4
Иешуа
27.12.11
✎
15:59
|
не, я как бы понимаю, что без кода никуда... куда его тулить?
|
|||
5
DailyLookingOn Sunset
27.12.11
✎
16:00
|
ПриСозданииНаСервере
|
|||
6
vmv
27.12.11
✎
16:00
|
(4) ПриОткрытии() очевидно
УстановитьдополнительныйОтбор() хоть бы типовые на УФ посмотрел чтоли |
|||
7
Иешуа
27.12.11
✎
16:00
|
сейчас пробую подменить штатную кнопку "Сформировать" из ОсновнойКоманднойПанели своей панелью и кнопкой. Но как-то не очень получается
|
|||
8
Иешуа
27.12.11
✎
16:19
|
(6) ПриОткрытии не катит - получится, что пользователь после открытия может мой отбор программный убрать.
В старых отчетах я каждый раз при формировании устанавливал нужный мне отбор, а вот здесь что-то туплю |
|||
9
acsent
27.12.11
✎
16:21
|
(7) Не инадо менять. Модуль смотри
|
|||
10
Axel2009
27.12.11
✎
16:21
|
в модуле есть обработчик прикомпоновкерезультата.. не?
|
|||
11
DailyLookingOn Sunset
27.12.11
✎
16:23
|
Можно сделать через параметры, недоступные для редактирования пользователю.
|
|||
12
Иешуа
27.12.11
✎
17:06
|
таааак...
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.Использование = Истина; ДоступныеПоляОтбора = КомпоновщикНастроек.Настройки.ДоступныеПоляОтбора; ДоступноеПолеОтбораКонтрагента = ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("МенеджерКлиента")); ЭлементОтбора.ЛевоеЗначение = ДоступноеПолеОтбораКонтрагента.Поле; ЭлементОтбора.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь.ФизЛицо; КонецПроцедуры Все отрабатывает, Элемент отбора заполнен правильно, но отбор не срабатывает и на форме не отображается. Опять где-то провтыкал? |
|||
13
Axel2009
27.12.11
✎
17:07
|
ЭлементОтбора.ЛевоеЗначение = ДоступноеПолеОтбораКонтрагента;
|
|||
14
Axel2009
27.12.11
✎
17:07
|
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МенеджерКлиента");
|
|||
15
Axel2009
27.12.11
✎
17:08
|
вообще там схемукомпоновкиданных надо параметры вроде устанавливать
|
|||
16
Иешуа
27.12.11
✎
17:13
|
(15) разве? у меня аналогичный код работает в расшифровке несколькох других отчетов аналогичных этому
|
|||
17
Иешуа
27.12.11
✎
17:14
|
(13) если убираю ".Поле" - одинэсина валится по ошибке и закрывается :-)
|
|||
18
Axel2009
27.12.11
✎
17:18
|
(16) так то расшифровка.. а тут при компоновке.. у меня этот код отрабатывает
СхемаКомпоновкиДанных.Параметры.ДатаКон.Значение = КонецДня(КонецПериода); до МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки); при этом если этот параметр заполнял так: МакетКомпоновки.ЗначенияПараметров.Найти("ДатаКон").Значение = КонецДня(КонецПериода); то появлялась ошибка, потому как другой параметр ДатаКон_1 - заполняется выражением ДОБАВИТЬКДАТЕ(&ДатаКон, "СЕКУНДА", 1). |
|||
19
Иешуа
27.12.11
✎
19:15
|
Уже как бы не смешно... отбор добавляется в настройки, но не отображается в пользовательских и соответственно не работает.
Семь часов уже не взлетает... |
|||
20
Иешуа
27.12.11
✎
19:16
|
Может кто-то кинется в меня рабочим куском кода... а то уже просто край!
|
|||
21
Иешуа
27.12.11
✎
21:07
|
Может кому-то не спится... ерунда какая-то. Вот не работает и все :-(
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ПолеОтбора = Новый ПолеКомпоновкиДанных("МенеджерЗаказа"); НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора; НовыйЭлементОтбора.Использование = Истина; НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь.ФизЛицо; КонецПроцедуры Все в отлачике есть, все заполняется, но на форме отбор пустой и соответственно не срабатывает... |
|||
22
Иешуа
27.12.11
✎
21:11
|
Прикол скорее всего в управляемой форме и Пользовательских настройках... но как то от понимания этого ни какпельки не легче
|
|||
23
Axel2009
28.12.11
✎
09:14
|
(21) чукча писатель? говорю используй настройки схемыкомпоновкиданных
|
|||
24
Иешуа
28.12.11
✎
11:50
|
Если речь о СхемаКомпоновкиДанных, то я не могу там достучаться к отборам. К параметрам могу, а к отборам нет
|
|||
25
Axel2009
28.12.11
✎
12:27
|
плохо стучал?
|
|||
26
Axel2009
28.12.11
✎
12:28
|
СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Отбор.Элементы
|
|||
27
Иешуа
28.12.11
✎
13:02
|
НовыйЭлементОтбора = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МенеджерЗаказа"); НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь.ФизЛицо; НовыйЭлементОтбора.Использование = Истина; До лампочки! ничего не поменялось... все отрабатывает, но на выходе отбор не заполнен и не отрабатывает |
|||
28
Иешуа
28.12.11
✎
16:58
|
ууу! ну вроде как заработало. Прикол был в том, что мой отчет не содержит основной настройки. Вернее содержит, но она ничего не выводит (то другой прикол СКД). Поэтому мой пользовательский отбор это отбор одной из вложеных схем.
Взлетело вот так: Для Каждого ЭлементНастройки из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(ЭлементНастройки) = Тип("ОтборКомпоновкиДанных")тогда НовыйЭлементОтбора = ЭлементНастройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МенеджерЗаказа"); НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = ПараметрыСеанса.ТекущийПользователь.ФизЛицо; НовыйЭлементОтбора.Использование = Истина; КонецЕсли; КонецЦикла |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |