|
Как вставить отбор программно с компоновщиком настроек? | ☑ | ||
---|---|---|---|---|
0
Мисти
31.03.19
✎
13:59
|
Из документа нужно открыть отчет и передать туда параметр.
Беда в том, что это не реквизит отчета, а он задан где-то в глубине компоновщика. Открыть его можно через пользовательскиеНастройки, а вот как туда засунуть что-то программно - не пойму. Реквизиты отчета (такие тоже есть) прекрасно заполнились. |
|||
1
Мисти
31.03.19
✎
14:00
|
ПараметрыОтчета = Новый Структура("Период,Бюджет,Сценарий,СценарийЭталон");
ПараметрыФормы = Новый Структура; ПараметрыОтчета.Период = Новый СтандартныйПериод(НачалоМесяца(Объект.Дата), КонецМесяца(Объект.Дата)); ПараметрыОтчета.Бюджет = ПолучитьБюджетНаСервере(); ПараметрыОтчета.Сценарий = Объект.СценарийФакт; ПараметрыОтчета.СценарийЭталон = Объект.СценарийПлан; ИмяОтчета = "бит_ПланФактныйАнализПоБюджету_ОстаткиПоСчетам"; ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина); ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных; ПользовательскиеОтборы = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); ПользовательскиеОтборы.ИдентификаторПользовательскойНастройки = "Отбор"; ПараметрыФормы.Вставить("ЦФО",Объект.ЦФО); ПараметрыФормы.Вставить("ПользовательскиеНастройки"); ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина); ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки); ЗаполнитьПользовательскиеНастройкиОтчета(ИмяОтчета,ПараметрыОтчета,ПараметрыФормы.ПользовательскиеНастройки); ОткрытьФорму("Отчет." + ИмяОтчета + ".ФормаОбъекта", ПараметрыФормы); |
|||
2
Мисти
31.03.19
✎
14:01
|
Вот так - реквизиты отчета все попадают.
|
|||
3
Мисти
31.03.19
✎
14:03
|
В отчете в настройках можно руками добавить отбор, выбрать параметр и значение.
А как это изобразить программно? |
|||
4
Мисти
31.03.19
✎
14:14
|
ПользовательскиеОтборы = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
вот такое попадается в типовых отчетах, только потом непонятно, как используется. |
|||
5
Мисти
31.03.19
✎
16:27
|
Очень нужен совет!
|
|||
6
Мисти
31.03.19
✎
19:10
|
ау??
|
|||
7
azernot
31.03.19
✎
20:15
|
Вот пример, как добавить отбор по контрагенту "НужныйМнеКонтрагент"
ПользовательскиеОтборы = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); НовыйЭлементОтбора = ПользовательскиеОтборы .Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = НужныйМнеКонтрагент; НовыйЭлементОтбора.Использование = Истина; |
|||
8
Мисти
01.04.19
✎
01:14
|
спасибо, попробую!
|
|||
9
Мисти
01.04.19
✎
01:22
|
{Отчет.бит_ПланФактныйАнализПоБюджету_ОстаткиПоСчетам.Форма.ФормаОтчетаУправляемая.Форма(309)}: Ошибка при вызове метода контекста (Добавить)
ПользовательскиеОтборы = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); по причине: Коллекция пользовательских настроек не может изменять свой соста |
|||
10
azernot
01.04.19
✎
10:11
|
Попробуйте так
ПользовательскиеОтборы = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Отчет.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки); |
|||
11
Мисти
03.04.19
✎
16:37
|
Для каждого Поле из ПользовательскиеОтборы.ДоступныеПоляОтбора.Элементы цикл
Если Поле.Заголовок = "ЦФО" Тогда вот до этого докопалась. Осталось чуть-чуть. |
|||
12
Мисти
03.04.19
✎
16:39
|
ПользовательскиеОтборы = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Отчет.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
НовыйЭлементОтбора = ПользовательскиеОтборы .Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЦФО"); НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = Параметры.ЦФО; НовыйЭлементОтбора.Использование = Истина; Вот так не сработало - не ругается, но и отбор не срабатывает! |
|||
13
Мисти
03.04.19
✎
16:49
|
Может, его куда-то сохранить надо?
|
|||
14
Мисти
03.04.19
✎
16:53
|
Поля = СхемаКомпоновкиДанных.НаборыДанных["НаборДанных1"].Поля;
Для Каждого Поле Из Поля Цикл Если Поле.Заголовок = "Организация" Тогда Поле.Заголовок = Поле.Заголовок + "_Аналитика"; Прервать КонецЕсли; КонецЦикла; а вот сюда - нельзя куда-нибудь? |
|||
15
azernot
03.04.19
✎
16:57
|
В открываемой форме отчёта, в настройках вы видите этот отбор?
|
|||
16
azernot
03.04.19
✎
17:06
|
(12) А вообще, покажите весь код, как вы получаете форму отчёта, как получаете его компоновщик настроек, как вы добавляете отбор, как открываете форму отчёта (и формируете его, если формируете)
|
|||
17
Мисти
03.04.19
✎
17:50
|
(15) не-а, пустой отбор, совсем.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) - вот сюда попробовала засунуть - НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЦФО"); НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = Кос_ЦФО;//Параметры.ЦФО; НовыйЭлементОтбора.Использование = Истина; не ругается, но и не отбирает. |
|||
18
Мисти
03.04.19
✎
17:51
|
Всё стандартно, откуда-то украла
СтандартнаяОбработка = Ложь; ПараметрыОтчета = Новый Структура("Период,Бюджет,Сценарий,СценарийЭталон"); ПараметрыФормы = Новый Структура; ПараметрыОтчета.Период = Новый СтандартныйПериод(НачалоМесяца(Объект.Дата), КонецМесяца(Объект.Дата)); ПараметрыОтчета.Бюджет = ПолучитьБюджетНаСервере(); ПараметрыОтчета.Сценарий = Объект.СценарийФакт; ПараметрыОтчета.СценарийЭталон = Объект.СценарийПлан; ИмяОтчета = "бит_ПланФактныйАнализПоБюджету_ОстаткиПоСчетам"; ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина); ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных; ПользовательскиеОтборы = ПользовательскиеНастройки.Элементы.Добавить(Тип("ОтборКомпоновкиДанных")); ПользовательскиеОтборы.ИдентификаторПользовательскойНастройки = "Отбор"; ПараметрыФормы.Вставить("ЦФО",Объект.ЦФО); ПараметрыФормы.Вставить("ПользовательскиеНастройки"); //ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина); ПараметрыФормы.Вставить("ПользовательскиеНастройки",ПользовательскиеНастройки); ЗаполнитьПользовательскиеНастройкиОтчета(ИмяОтчета,ПараметрыОтчета,ПараметрыФормы.ПользовательскиеНастройки); ОткрытьФорму("Отчет." + ИмяОтчета + ".ФормаОбъекта", ПараметрыФормы); |
|||
19
Мисти
03.04.19
✎
17:52
|
В отчет всё кроме цфо попадает само, потому что это параметры отчета.
а ЦФО можно задать в отборе компоновки и туда - никак не могу засунуть! |
|||
20
Euguln
03.04.19
✎
18:07
|
Скорее всего при открытии отчета инициализируется компоновщик и отбор убивает. Варианта 2.
1. Некошерный. Получить форму через "ПолучитьФорму()"и уже у неё установить отбор. 2. Кошерный. Исследовать форму отчета и узнать, как сделать так, чтобы отбор не очищался. |
|||
21
Мисти
03.04.19
✎
18:17
|
А почему нельзя в компоновщик-то запихнуть?
Я уже реквизит такой добавила - чтобы с ним можно было в отчете хоть в модуле, хоть где. Мне попроще! Хоть бы и некошерный. Через "получитьФолрму" - не понимаю, чем мне это поможет. http://catalog.mista.ru/public/202741/ - вот такое нашла. Может, оно? |
|||
22
Euguln
03.04.19
✎
18:22
|
ФормаОтчета = ПолучитьФорму("Отчет.бит_ПланФактныйАнализПоБюджету_ОстаткиПоСчетам.ФормаОбъекта", ПараметрыФормы);
БухгалтерскиеОтчетыКлиентСервер.ДобавитьОтбор(ФормаОтчета.Отчет.КомпоновщикНастроек, "ЦФО", Кос_ЦФО, ВидСравненияКомпоновкиДанных.Равно); ФормаОтчета.Открыть(); ФормаОтчета.СформироватьОтчетНаСервере(); |
|||
23
Мисти
03.04.19
✎
18:39
|
В форме отчета нет СформироватьОтчетНаСервере()!
|
|||
24
singlych
03.04.19
✎
19:36
|
(18) "ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;"
Их не создать надо, а достать из компоновщика настроек объекта отчета. А тупо параметр формы Отбор передать не проканает? |
|||
25
Мисти
03.04.19
✎
19:42
|
То, что в (18) - отлично работает, но для тех параметров, которые являются реквизитами отчета.
Теперь я открываю отчет, мой ЦФО туда передался и даже записался в созданный реквизит отчета. Как его в пользовательский отбор существующего компоновщика засунуть? |
|||
26
azernot
04.04.19
✎
10:14
|
(25) Значит где-то в форме открываемого отчёта чистится отбор компоновщика (или заново инициализируется) и в него заполняются только те отборы, которые являются реквизитами. Надо найти этот кусок кода
|
|||
27
bootini
04.04.19
✎
10:30
|
там их как-то выгружать надо, изменять, потом опять загружать, не помню уже дано делал.
|
|||
28
Euguln
04.04.19
✎
15:59
|
(23) Ну значит как-то по другому называется. Это же битовская поделка, там все через другое место.
|
|||
29
Мисти
10.04.19
✎
15:35
|
Для каждого ЭлементПользовательскихНастроек Из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл
Если ТипЗнч(ЭлементПользовательскихНастроек) = Тип("ОтборКомпоновкиДанных") Тогда НовыйЭлементОтбора = ЭлементПользовательскихНастроек.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЦФО"); НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовыйЭлементОтбора.ПравоеЗначение = Кос_ЦФО;//Справочники.Подразделения.НайтиПоНаименованию("ОАО Атлантика"); НовыйЭлементОтбора.Использование = Истина; КонецЕсли; КонецЦикла; Вот так! В модуле отчета!Процедура ПриКомпоновкеРезультата( |
|||
30
toypaul
гуру
10.04.19
✎
15:41
|
если в самом отчете никаких выкрутасов с польз. настройками нет, то правильный подход такой
1. для ОткрытьФорму. сначала получаем польз. настройки отчета (не создаем новые). получаем через Отчеты.МойОтчет.КомпоновщикНастроек.ПользНастройки. эти настройки изменяем и передаем в параметры формы 2. для ПолучитьФорму несколько проще. просто настраиваем Форма.Отчет.КомпоновщикНастроек.ПользНастройки все |
|||
31
Мисти
11.04.19
✎
00:22
|
В самом отчете есть, в
том и была проблема. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |