|
Изменение пользовательских настроек отбора СКД перед открытием отчета | ☑ | ||
---|---|---|---|---|
0
s-n-a-y
28.10.20
✎
13:55
|
Пытаюсь переопределить пользовательские настройки перед открытием отчета. Вот так работает
ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].ПравоеЗначение = МоеЗначение; Проблема в том, что не могу найти нужный элемент по Представлению или по ЛевоеЗначение. Могу только по ИдентификаторПользовательскойНастройки. А этот идентификатор у под разными пользователями разный, но поле одно и тоже (после открытия отчета). Можно ли по этому идентификатору как-то определить представление поля? |
|||
1
s-n-a-y
28.10.20
✎
14:07
|
все нашел
|
|||
2
CepeLLlka
28.10.20
✎
14:09
|
(1)Нашёл, так напиши как нашёл, распиши всё, не ленись..
Сам же через полгода будешь гуглить, найдёшь свою тему, порадуешься :) |
|||
3
Радим1987
28.10.20
✎
14:17
|
(2) Если ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Твое поле") тогда
|
|||
4
fisher
28.10.20
✎
14:28
|
Еще можно найти нужный элемент в обычных настройках, получить у него идентификатор пользовательской настройки и по нему получить уже элемент пользовательских настроек.
|
|||
5
s-n-a-y
28.10.20
✎
15:21
|
Как в (3) не получится. К сожалению у "ПользовательскиеНастройки.Элементы" ЛевоеЗначение недоступно
Можно отыскать по идентификатору вот типа процедура Процедура ИзменитьЭлементПользовательскогоОтбора(ФормаОтчета, ИмяПоля, Значение) ПолеКомпоновки = новый ПолеКомпоновкиДанных(ИмяПоля); Для каждого ТекЭлемент Из ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл Для каждого ТекЭлементНастроек Из ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ТекЭлемент.ИдентификаторПользовательскойНастройки = ТекЭлементНастроек.ИдентификаторПользовательскойНастройки и ТекЭлементНастроек.ЛевоеЗначение = ПолеКомпоновки Тогда ТекЭлемент.ПравоеЗначение = Значение; Возврат; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
6
s-n-a-y
28.10.20
✎
15:22
|
то же самое в более полном варианте
&НаКлиенте Процедура ИзменитьЭлементПользовательскогоОтбора(ФормаОтчета, ИмяПоля, Значение, ВидСравнения, Использование = истина) ПолеКомпоновки = новый ПолеКомпоновкиДанных(ИмяПоля); Для каждого ТекЭлемент Из ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл Для каждого ТекЭлементНастроек Из ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ТекЭлемент.ИдентификаторПользовательскойНастройки = ТекЭлементНастроек.ИдентификаторПользовательскойНастройки и ТекЭлементНастроек.ЛевоеЗначение = ПолеКомпоновки Тогда ТекЭлемент.ПравоеЗначение = Значение; ТекЭлемент.Использование = Использование; ТекЭлемент.ВидСравнения = ВидСравнения; ТекЭлемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; Возврат; КонецЕсли; КонецЦикла; КонецЦикла; // если не нашли в пользовательских настройках - добавляем свой УстановитьЭлементПользовательскогоОтбора(ФормаОтчета, ИмяПоля, Значение, ВидСравнения, Использование); КонецПроцедуры &НаКлиенте Процедура УстановитьЭлементПользовательскогоОтбора(ФормаОтчета, ИмяЭлемента, ЗначениеЭлемента, ВидСравнения, Использование = истина) ПолеКомпоновки = новый ПолеКомпоновкиДанных(ИмяЭлемента); Для Каждого ЭлементНастройки Из ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(ЭлементНастройки) = Тип("ОтборКомпоновкиДанных") Тогда ЭлементОтбораПользовательский = Неопределено; Для каждого ТекЭлементНастройки Из ЭлементНастройки.Элементы Цикл Если ТекЭлементНастройки.ЛевоеЗначение = ПолеКомпоновки Тогда ЭлементОтбораПользовательский = ТекЭлементНастройки; Прервать; КонецЕсли; КонецЦикла; Если ЭлементОтбораПользовательский = Неопределено Тогда ЭлементОтбораПользовательский = ЭлементНастройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбораПользовательский.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор(); ЭлементОтбораПользовательский.ЛевоеЗначение = ПолеКомпоновки; КонецЕсли; ЭлементОтбораПользовательский.ВидСравнения = ВидСравнения; ЭлементОтбораПользовательский.ПравоеЗначение = ЗначениеЭлемента; ЭлементОтбораПользовательский.Использование = Использование; ЭлементОтбораПользовательский.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
7
s-n-a-y
28.10.20
✎
15:25
|
по сути сделал как в (4)
|
|||
8
fisher
28.10.20
✎
16:08
|
Зачем же все перебирать. У коллекции элементов пользовательских настроек есть метод Найти, который находит по идентификатору пользовательской настройки.
|
|||
9
s-n-a-y
28.10.20
✎
17:02
|
(8) в отладчике ИдентификаторПользовательскойНастройки - это строка, конструктора из строки нету, поэтому перебор
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |