![]() |
|
СКД, ПользовательскиеНастройки. Объясните раз и навсегда, плиз... | ☑ | ||
---|---|---|---|---|
0
fisher
27.12.11
✎
19:09
|
Как программно добавить, допустим, элемент отбора в пользовательские настройки, которого раньше не было? И чтобы пользователь увидел?
Бьюсь, нифига понять не могу. Никак не могу въехать в симбиоз "Настроек" и "ПользовательскихНастроек". Я правильно понимаю, что "ПользовательскиеНастройки" - вторичны? Ведь у элемента настроек есть свойство "ИдентификаторПользовательскойНастройки"? Или я могу напрямую работать с пользовательскими настройками, добавлять туда новые элементы минуя настройки? Объясните на примере программного добавления нового элемента отбора, очень вас прошу. Бо я уже понемногу закипаю. С изменением параметров в пользовательских настройках вроде разобрался. Находишь нужный параметр в настройках, смотришь его идентификатор пользовательских настроек, находишь в пользовательских настройках и меняешь. А вот как добавить новый отбор нифига не могу сообразить. Не выходит каменный цветок :( |
|||
1
fisher
27.12.11
✎
19:11
|
Пробовал программно добавлять элемент отбора в настройки. Но как его заставить появиться в пользовательских настройках и сработать - не могу понять.
|
|||
2
fisher
28.12.11
✎
11:49
|
<хриплым слабеющим голосом> Хэээээлп...
|
|||
3
fisher
28.12.11
✎
12:58
|
С наступающим! Сделайте подарок, плиз :)
|
|||
4
Axel2009
28.12.11
✎
13:12
|
так тебе нужно с пользовательскими настройками разобраться или отбор добавить програмно?
|
|||
5
fisher
28.12.11
✎
13:35
|
(4) И то и другое. Буду рад любой помощи :)
|
|||
6
Axel2009
28.12.11
✎
13:46
|
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
НастройкиОтчета.ПользовательскиеПоля.Элементы.Очистить(); Элемент = НастройкиОтчета.ПользовательскиеПоля.Элементы.Добавить(Тип("ПользовательскоеПолеВыборКомпоновкиДанных")); Элемент.Заголовок = "Тест"; //Элемент.ПутьКДанным = "ПользовательскиеПоля.Поле1"; Элемент.Использование = Истина; ЭлементВарианта = Элемент.Варианты.Элементы.Добавить(); ЭлементОтбора = ЭлементВарианта.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент"); ЭлементОтбора.ПравоеЗначение = Справочники.Контрагенты.НайтиПоНаименованию("Вася пупкин"); |
|||
7
fisher
28.12.11
✎
15:12
|
(6) Хм... Интересный пример. Но уже взлетело по-другому.
В элементах пользовательских настроек нахожу элемент с типом "ОтборКомпоновкиДанных" и в его элементы добавляю нужный отбор. Тут хитрость еще у меня небольшая. В пользовательские настройки выводится отбор не основной схемы, а вложенной. Так вот, все попытки установить отбор не через пользовательские настройки а напрямую через схему (ВложенныеСхемы.МояСхема.Настройки) или через КомпоновщикНастроек.Настройки.Структура[ИндексНастроекВложеннойСхемы] провалились. Т.е. отборы добавляются нормально, но не отрабатывают. Типа как пользовательские отборы их перекрывают (несмотря на то, что список пользовательских отборов пуст). В связи с чем вопрос (может сразу сможешь ответить). Для основной схемы такая же байда? В смысле, если отбор добавить только в КомпоновщикНастроек.Настройки, то он не сработает, т.к. его перекроет пользовательский отбор? А как тогда красивее всего решить задачу с принудительным доп-отбором, который пользователь не должен менять? По-идее, для этого предназначены "ФиксированныеНастройки", но для вложенной схемы их вроде не применишь... |
|||
8
Axel2009
28.12.11
✎
15:18
|
а код где?
|
|||
9
Axel2009
28.12.11
✎
15:19
|
если пользователю не доступна кнопка конструктор настроек, тогда отбор нужно добавлять недоступный. тогда пользователю он виден не должен быть.
|
|||
10
acsent
28.12.11
✎
15:24
|
// Функция возвращает пользовательские настройки.
// // Параметры: // Нет. // // Возвращаемое значение: // Пользовательские настроки отчета усОстаткиТоваров // Функция ПолучитьПользовательскиеНастройки(ИмяОтчета, СтруктураПараметров) Экспорт СхемаКомпоновкиДанных = Отчеты[ИмяОтчета].ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Для каждого КлючИЗначение Из СтруктураПараметров Цикл ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор, КлючИЗначение.Ключ, КлючИЗначение.Значение,,, Истина); КонецЦикла; Возврат КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки; КонецФункции // ПолучитьПользовательскиеНастройки() |
|||
11
acsent
28.12.11
✎
15:25
|
ПользовательскиеНастройки = ПолучитьПользовательскиеНастройки(ПараметрКоманды);
ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("СформироватьПриОткрытии", Ложь); ПараметрыФормы.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки); ОткрытьФорму("Отчет.блПлатежнаяДисциплина.Форма", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); |
|||
12
fisher
28.12.11
✎
15:36
|
(8) Какой именно код интересует? Нету его уже ибо тестовый был. Корневые объекты я указал - а дальше абсолютно стандартная и идентичная для всех случаев работа с объектом "ОтборКомпоновкиДанных". Та же, что и в работающем уже коде для пользовательских настроек.
(9) А, т.е. таки именно в пользовательские отборы все равно пихать надо, только "РежимОтображения" в "Недоступный" ставить? Вариант. (10),(11) Не совсем в кассу, но спасибо за пример. |
|||
13
Axel2009
28.12.11
✎
15:46
|
(12) не обязательно в пользовательские. в обычные отборы тоже можно добавлять. режим отображения только ставь "Недоступный"
|
|||
14
fisher
28.12.11
✎
15:59
|
(13) А обычный отбор перекроет пользовательские? Обычный отбор по вложенной схеме не отработал...
Пробовал два варианта: 1) НовыйЭлементОтбора = СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.МояНужнаяСхема.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 2) НовыйЭлементОтбора = КомпоновщикНастроек.Настройки.Структура[ИндексНастроекНужнойВложеннойСхемы].Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); |
|||
15
Axel2009
28.12.11
✎
16:30
|
(14) ну отключи пользовательские отборы.. зачем их использовать то вообще?
|
|||
16
fisher
28.12.11
✎
16:42
|
(15) Эээ... Чтобы пользователи могли свои отборы добавлять, зачем же еще?
|
|||
17
Axel2009
28.12.11
✎
17:06
|
(16) ну так они могут добавлять обычные отборы. не?
|
|||
18
fisher
28.12.11
✎
17:23
|
(17) Не, речь об управляемой форме отчета...
|
|||
19
Axel2009
28.12.11
✎
17:43
|
(18) тогда получается нужно самому писать процедурку по выводу в табдок, а не заполнять пользовательские настройки и стандартная обработка.
вообще в упр формах не силен пока еще. |
|||
20
fisher
28.12.11
✎
18:11
|
(19) Зачем? Все что надо уже получилось через пользовательские настройки.
А упр-интерфейс я сам пока слабо. За умные книжки еще не садился, т.к. клиент у меня толстый а упр-формы пока только в отчетах. Т.е. от случая к случаю и по необходимости. Я вообще не вижу большого толка от того, что замутили пользовательские настройки отдельной темой и как именно это сделали. Больше всего пользы от более-менее человеческой настройки простых группировок в них, которой раньше очень не хватало. А то что одним табличным полем можно пользователю все нужные настройки вывалить - преимущество сомнительное (их представление не так чтобы уж идеальное). Короче, несколько кособокий аппендикс вырастили, ИМХО. Хоть и вполне рабочий. Собственно, только потому управляемые формы для отчетов и юзаю, что на них можно очень быстро клепать очень функциональные отчеты. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |