Имя: Пароль:
1C
 
Как программно установить уровень группировки в СКД ?
,
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 итд...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой