|
Как программно установить уровень группировки в СКД ? | ☑ | ||
---|---|---|---|---|
0
ildarian
02.04.16
✎
19:01
|
Добрый день.
Имеется ввиду не свернуть отчет по какому то уровню. В настройках есть системное поле "Уровень". От мне нужно уго установить программно. Подскажите как это сделать ? |
|||
1
ildarian
02.04.16
✎
19:02
|
Это поле есть только у группировки. То есть нужно ещё указать для какой группировки задается отбор.
|
|||
2
ildarian
02.04.16
✎
20:11
|
ап
|
|||
3
Сильф
02.04.16
✎
21:29
|
(0) Ты структуру отчета хочешь поменять? Так не получится.
|
|||
4
ildarian
02.04.16
✎
22:40
|
в настройках отчета вручную можно поставить уровень, по идеи програмно тоже должно быть можна
|
|||
5
Defender aka LINN
03.04.16
✎
09:21
|
(4) Тут нужны скриншоты как минимум
|
|||
6
ildarian
03.04.16
✎
09:32
|
А как тут картнку прикрепить ?
|
|||
7
ildarian
03.04.16
✎
09:44
|
это находится Настройки - отборы - системные поля
|
|||
8
ildarian
03.04.16
✎
09:45
|
только нужно переключить на настройки группировки
|
|||
9
ildarian
03.04.16
✎
09:47
|
||||
10
ildarian
03.04.16
✎
09:47
|
тут скериншот
|
|||
11
Defender aka LINN
03.04.16
✎
09:57
|
Элемент = Комопновщик.Настройки.Структура[0].Отбор.Элементы.Добавить();
Элемент.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Уровень"); Ну, как-то так, лень 1С запускать |
|||
12
ildarian
03.04.16
✎
10:08
|
Если написать КомпоновщикНастроек.Настройки.Структура[0].Отбор.Элементы.Добавить() то выдает ошибку "Несоответствие типов (параметр номер '1')
". Что-то в сп не могу найти что туда передаваьт нужно. |
|||
13
ildarian
03.04.16
✎
10:10
|
КомпоновщикНастроек.Настройки.Структура[0].Отбор.Элементы.Добавить(Новый ПолеКомпоновкиДанных("Уровень"))
так тоже не работает |
|||
14
Diman000
03.04.16
✎
10:17
|
Ты хочешь этот отбор из (9) программно установить?
|
|||
15
ildarian
03.04.16
✎
10:20
|
(14) да
|
|||
16
Diman000
03.04.16
✎
10:21
|
Видимо, да.
Такие вещи делаются так. Добавляешь руками в настройку СКД, как у тебя на скрине, потом гоу ту отладчик и ищешь в каком месте структуры СКД твоя настройка появилась. С какими типами и все такое. Потом легко делаешь это программно. Я сто раз так делал :-) А читать по СП или книжкам про программную работу с СКД там черт ногу сломит. |
|||
17
Diman000
03.04.16
✎
10:23
|
А про отборы надо там в Добавить() тип элемента указывать.
Добавить(Тип("ЭлементОтбораКомпоновкиДанных")) как-то так, не помню точно... |
|||
18
ildarian
03.04.16
✎
10:30
|
Тут есть нюанс. Если написать так как Вы посоветовали, то выходит, что отбор добавляется для всего отчета. А мне нужно его добавить для группировки "Номенклатура", так как у отчета нет системных полей
|
|||
19
ildarian
03.04.16
✎
10:31
|
а поле "Уровень" - это системное поле
|
|||
20
Diman000
03.04.16
✎
10:33
|
Если после интерактивной настройки из (9) все работает как надо, то с программным добавлением проблем быть не должно.
Чтобы добавить в нужное место см. (16) |
|||
21
ildarian
03.04.16
✎
10:49
|
Получилось. Вот код
Элемент = Настройки.Структура[0].Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Элемент.ПравоеЗначение = 3; Элемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше; Элемент.Использование = Истина; Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("SystemFields.level"); Элемент.Применение = ТипПримененияОтбораКомпоновкиДанных.Иерархия; Для того чтобы указать уровень нужно обязательно(!) писать название поля по английски: SystemFields.level. Если написать по руски, то вылетает ошибка что поле не найдено. Всем спасбо за помощь!! |
|||
22
Diman000
03.04.16
✎
10:58
|
Забавно.
С предопределенными полями из другой базы через COM такая же история. Posted, IsMarked итд... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |