|
СКД. Получить программно представление отбора | ☑ | ||
---|---|---|---|---|
0
SeiOkami
26.07.21
✎
13:45
|
Есть элемент отбора.
Если у него нет представления, то платформа его "генерит" при выводе в результат отчета. Например: ЦФО Получателя Равно "Армавир" Есть ли метод платформы, который позволит это представление получить программно? |
|||
1
Smallrat
26.07.21
✎
14:00
|
Строка(ЭлементОтбора)
|
|||
2
SeiOkami
26.07.21
✎
14:05
|
(1), если бы все было так просто)
Строка() приводит к такой строке: "ЭлементОтбораКомпоновкиДанных" |
|||
3
SeiOkami
26.07.21
✎
14:07
|
Пока сделал так, но костыльно. И нормально обработает только самые примитивные варианты. Но хоть как-то )
Функция ПредставлениеОтбораКомпоновки(ЭлементОтбора) ПредставлениеОтбора = ЭлементОтбора.Представление; Если ЗначениеЗаполнено(ПредставлениеОтбора) Тогда Возврат ПредставлениеОтбора; КонецЕсли; ПолеОтбора = СхемаКомпоновкиДанных.НаборыДанных.Получить(0).Поля.Найти(ЭлементОтбора.ЛевоеЗначение); ПредставлениеОтбора = СтрШаблон("%1 %2 ""%3""", ПолеОтбора.Заголовок, ЭлементОтбора.ВидСравнения, ЭлементОтбора.ПравоеЗначение); Возврат ПредставлениеОтбора; КонецФункции |
|||
4
Smallrat
26.07.21
✎
14:13
|
(2) Да, ошибся - мне просто нужно было представление отбора и я получал представление через Строка(Отбор), если нужно представления элемента отбора, то надо костылить наверное(
|
|||
5
Pro-tone
26.07.21
✎
14:43
|
(0) вот, вытащил код из своей нетленки на инфостарте
ТекстПолейОтбора = ""+Символы.ПС; Если КомпоновщикНастроек.Настройки.Отбор.Элементы.Количество()>0 ИЛИ ОтборОбъектовУдаленнойИБ.Количество()>0 Тогда Для каждого ТекСтрока Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл ТекстПолейОтбора = ТекстПолейОтбора + "текущая база: " + Строка(ТекСтрока.ЛевоеЗначение) + " " + Строка(ТекСтрока.ВидСравнения) + " """ + Строка(ТекСтрока.ПравоеЗначение) + """"+ Символы.ПС; КонецЦикла; Для каждого ТекСтрока Из ОтборОбъектовУдаленнойИБ Цикл ТекстПолейОтбора = ТекстПолейОтбора + "удаленная база: " + ТекСтрока.Синоним + " "+ТекСтрока.ВидСравнения + " """ + ТекСтрока.Значение + """" + Символы.ПС; КонецЦикла; КонецЕсли; |
|||
6
JonSilver
29.07.21
✎
14:28
|
Всем доброго времени суток!
А можно мне задать вопрос по отборам в отчетах на СКД. Пытаюсь из расширения запустить отчет конфигурации БП 3.0 "Движения товаров". Передаю туда отбор по номенклатуре: Номенклатура = ТекущиеДанные.Ссылка; //структура отбора Отбор = Новый Структура("Номенклатура", Номенклатура); Отбор.Вставить("НачалоПериода", НачалоМесяца(ТекущаяДата())); Отбор.Вставить("КонецПериода", ТекущаяДата()); ПараметрыФормы = Новый Структура("СформироватьПриОткрытии, Отбор", Истина, Отбор); ФормаОтчета = ПолучитьФорму("Отчет.ДвижениеТоваров.ФормаОбъекта", ПараметрыФормы); НовыеПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных; ФормаОтчета.Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(НовыеПользовательскиеНастройки); ОткрытьФорму(ФормаОтчета); Выдает ошибку: Невозможно применить фиксированные настройки. Совпадают значения параметра. {Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(667)}: ПараметрыОтчета.НастройкиКомпоновкиДанных = Отчет.КомпоновщикНастроек.ПолучитьНастройки(); {Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(925)}: ПараметрыОтчета = ПодготовитьПараметрыОтчетаНаСервере(); {Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(733)}: БухгалтерскиеОтчеты.ЗаписатьОперациюБизнесСтатистики(ЭтотОбъект, "СформироватьОтчет", НастройкиОтчетаДляСтатистики()); {Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(875)}: РезультатВыполнения = СформироватьОтчетНаСервере(); {Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(511)}: ЗапуститьФормированиеОтчета(); по причине: Невозможно применить фиксированные настройки. Совпадают значения параметра. Прошу помощи!!! |
|||
7
JonSilver
29.07.21
✎
17:40
|
Если передавать параметры в виде фиксированных настроек, типа:
ПараметрыФормы = Новый Структура(); ПараметрыФормы.Вставить("Отбор", Новый Структура("Номенклатура",ТекущиеДанные.Ссылка)); ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина); ОткрытьФорму("Отчет.ДвижениеТоваров.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор); Отчет открывается не заполненным, по кнопке "Сформировать" получаем все туже ошибку. Но если нажать "Показать настройки" и на вкладке "Отбор" снять отбор по выбранной позиции, то отчет формируется. Данные правильные, но с прицепом в виде предупреждения "Отчет не сформирован! Недействительный адрес или не найден родительский сеанс задания". Вобщем никакой автоматизации. |
|||
8
Fragster
гуру
29.07.21
✎
18:03
|
&НаСервере
Процедура ПеренестиНастройкиВРеквизитНаСервере() ТекущаяСтрока = Элементы.Авторасчет.ТекущаяСтрока; Если ТекущаяСтрока = Неопределено Тогда Возврат КонецЕсли; СтрокаАвторасчета = Объект.Авторасчет.НайтиПоИдентификатору(ТекущаяСтрока); Запись = Новый ЗаписьXML; Запись.УстановитьСтроку(); Настройки = КомпоновщикНастроек.ПолучитьНастройки(); СериализаторXDTO.ЗаписатьXML(Запись, Настройки); СтрокаАвторасчета.Условие = Запись.Закрыть(); СтрокаАвторасчета.ПредставлениеУсловия = Строка(Настройки.Отбор); КонецПроцедуры а потом можно по разделителям поделить, если надо |
|||
9
JonSilver
29.07.21
✎
19:28
|
(8) Извините, не совсем понял как это применить. Полагаю для передачи пользовательских настроек, т.е. в первом варианте.
|
|||
10
JonSilver
29.07.21
✎
19:48
|
Похоже начинает доходить почему это происходит:
1. Отчет открывается в этом-же окне что и Владелец, поэтому отбор в виде параметра уже сидит в этом окне. 2. Последнее сообщение об ошибке связано с тем-же, окно одно и тоже, и курсор потерян. Может в терминах чего напутал, уж извините. Но как это исправить все одно не пойму. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |