|
СКД программно установить доступные значения поля | ☑ | ||
---|---|---|---|---|
0
Lemkus
19.10.11
✎
11:48
|
СКД
Нужно заполнить список доступных значений для поля программно. Чтобы потом пользователь в отборе мог указать только значения из этого списка. Я пытаюсь делать так СписокЗнч = Новый СписокЗначений; СписокЗнч.Добавить("1111", "1111"); НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Получить(0); ПолеИНН = НаборДанных.Поля.Получить(0); ПолеИНН.УстановитьДоступныеЗначения(СписокЗнч); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Настройки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешнийНабор); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Но в результате ничего не происходит. |
|||
1
Lemkus
19.10.11
✎
11:54
|
Попробую поднять, а то информации по этому вопросу нигде не могу найти
|
|||
2
sam_pfr
19.10.11
✎
12:05
|
А где пользователь должен выбирать значение, если отчет сразу формируетя? И список доступных значений от чего зависит?
|
|||
3
Lemkus
19.10.11
✎
12:21
|
(2) Список значений приходит из другой базы.
Выбирать должен в отборе Ну, по идее отчет можно и не выводить сразу, но все равно не работает |
|||
4
sam_pfr
19.10.11
✎
12:35
|
Во-первых надо копать в сторону отбора, Настройки = КомпоновщикНастроек.Настройки; Настройки.Отбор и здесь устанавливаешь значения, в отладчике можно посмотреть поля, во-вторых вот эта строка КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); стирает все твои изменения.
|
|||
5
Defender aka LINN
19.10.11
✎
12:40
|
(0) А инициализировать Компоновщик кто будет?
|
|||
6
Lemkus
19.10.11
✎
12:48
|
(4) Сори, да это строка осталась от экспериментов
Через отбор не получается сделать. Там нет возможности установить список доступных полей |
|||
7
Lemkus
19.10.11
✎
12:49
|
(5) инициализировал, все равно никак
|
|||
8
Defender aka LINN
19.10.11
✎
12:51
|
Схема = ПолучитьМакет("СхемаКомпоновкиДанных");
СписокЗнч = Новый СписокЗначений; СписокЗнч.Добавить("1111", "1111"); НаборДанных = Схема.НаборыДанных.Получить(0); ПолеИНН = НаборДанных.Поля.Получить(0); ПолеИНН.УстановитьДоступныеЗначения(СписокЗнч); СхемаКомпоновкиДанных = Схема; |
|||
9
Lemkus
19.10.11
✎
12:56
|
(8) К сожалению, так тоже не получается
|
|||
10
ll13
19.10.11
✎
13:06
|
Для 8.2
ДоступныеЗначения = Новый СписокЗначений(); ДоступныеЗначения.Добавить(Истина, "Показывать"); ДоступныеЗначения.Добавить(Ложь, "Не показывать"); Параметры = СхемаКомпоновкиДанных.Параметры; КоллекцияЗначенийПараметров = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.Элементы; НовыйПараметр = Параметры.Добавить(); НовыйПараметр.Имя = "МойПараметр"; НовыйПараметр.Заголовок = "МойПараметр"; НовыйПараметр.ТипЗначения = Новый ОписаниеТипов("Булево"); НовыйПараметр.Значение = Истина; НовыйПараметр.УстановитьДоступныеЗначения(ДоступныеЗначения); ЗначениеПараметраНастроек = КоллекцияЗначенийПараметров.Добавить(); // Добавить в пользовательские настройки ЗначениеПараметраНастроек.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор; ЗначениеПараметраНастроек.Параметр = Новый ПараметрКомпоновкиДанных("МойПараметр"); СхемаКомпоновкиДанных.НастройкиПоУмолчанию.ПараметрыДанных.УстановитьЗначениеПараметра("МойПараметр", Истина); Только по-хорошему перед добавлением Параметра и ЗначениеПараметраНастроек надо проверять на существование элементов в соответствующих коллекциях... |
|||
11
sam_pfr
19.10.11
✎
13:14
|
Или Настройки.Отбор.ДоступныеПоляОтбора.Элементы[0].ДоступныеЗначения
|
|||
12
sam_pfr
19.10.11
✎
13:14
|
Содержит список значений
|
|||
13
Lemkus
19.10.11
✎
13:20
|
(10) Пробую, пишет, что
Коллекция параметров не может изменять свой состав, так как она связана с доступными параметрами |
|||
14
Lemkus
19.10.11
✎
16:30
|
Я дошел до того, что решил изменять структуру xml файла, в который выгружается схема.
В xml файле изменил список допустимых значений у поля, но когда я загружаю схему, то ничего не изменяется Похоже, я не понимаю каких-то основ СКД ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл("C:\****\схема.xml"); Исключение Сообщить("Невозможно открыть xml-файл"); Возврат; КонецПопытки; СхемаКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML ,Тип("СхемаКомпоновкиДанных")); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); ЧтениеXML.Закрыть(); |
|||
15
Lemkus
19.10.11
✎
16:31
|
(12) Этот метода тоже не подходит, как я понял ДоступныеПоляОтбора, это те которые заданы не программно (может я сильно ошибаюсь)
А добавлять отбор нужно программными методами |
|||
16
sam_pfr
20.10.11
✎
08:34
|
Ну так для начала нужно установить доступные значения, а потом программно добавить нужный отбор. В отборе нет списка доступных значений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |