Имя: Пароль:
1C
1С v8
Получить настройки отбора СКД
,
0 papakarlo
 
29.07.17
13:15
Суть вот в чем:

есть настройка СКД с отбором, который настроил пользователь. Нужно вытащить эти настройки отбора и опознать поля, по которым отбор настроен.
Например, если СКД построено на справочнике номенклатура и отбор настроен по полю "Наименование" этого справочника, нужно вытащить название этого поля и тип. В настройках отбора это поле фигурирует в "левое значение" и имеет тип "ПолеКомпоновкиДанных".

Подскажите, кто знает, есть ли возможность разыменовать это "ПолеКомпоновкиДанных" и есть ли способ вообще вытащить эти отборы из СКД.

заранее спасибо
1 bodri
 
29.07.17
14:02
отладчиком пройдись, там много чего можно увидеть
2 papakarlo
 
29.07.17
14:10
в отладчик то я умею. Но в этом вопросе отладчик не помогает. Тему открыл в надежде, что кто-то уже занимался этим вопросом и знает что делать
3 Chameleon1980
 
29.07.17
14:52
(2) все там помогает. Вы просто не умеете его готовить.
4 bodri
 
29.07.17
14:57
(2) Вывод СКД программно или нет?
Программно легко можно отладчиком пройти.
5 Diman000
 
29.07.17
14:58
(2) Я часто занимаюсь этим вопросом и знаю что делать. Идешь в отладчик и там все смотришь. Помнить все эти многочисленные НастройкаПолейКомпоновкиДанных19Серия это к Терминатору.
Помимо ЛевоеЗначение часто бывает еще и ПравоеЗначение. Скорее всего то что вы ищете именно там.
6 echo77
 
29.07.17
15:35
(0)
КомпоновщикНастроек.ПолучитьНастройки().Отбор

- это коллекция. Обходишь коллекцию - видишь какие отборы установлены
7 Chameleon1980
 
29.07.17
15:39
встань на коллекции жмакни, вроде, ф2 - попробуй
8 papakarlo
 
29.07.17
16:07
а я и обхожу коллекцию отбора. Написал же, что в отладчик умею. Только дело все в том, что в ЭлементеКоллекцииОтбора, поле ЛевоеЗначение имеет тип ПолеКомпоновкиДанных, а мне нужно знать, например, что это реквизит справочника номенклатура с типом, например, "СправочникСсылка.НоменклатурныеГруппы"

в этом отладчик не помогает никак.
9 papakarlo
 
29.07.17
16:09
и вопрос в том, что нужно разыменовать ПолеКомпоновкиДанных, у которого есть только конструктор и более ничего.
10 Diman000
 
29.07.17
16:11
ЛевоеЗначение это всегда поле компоновки данных. Чему равно ПравоеЗначение?
11 Diman000
 
29.07.17
16:14
А, извиняюсь, невнимательно (0) прочитал. Понял теперь что тебе надо...
12 Работающий имитатор
 
29.07.17
16:15
(9) Представь себе, что это вычисляемое поле, основанное на полях набора данных - обьекта и спи спокойно.

Это Поле. Компоновки. Данных. Не более. Не стоит строить каких-то иллюзий о том, что справочник.
13 Diman000
 
29.07.17
16:28
Ну похоже, что задача решаема, но придется повозиться.
Строковое представление ПолеКомпоновкиДанных из ЛевоеЗначение разложить на массив подстрок между точками.
А дальше погнали, все что в первой подстроке это основные (базовые) поле СКД. Через какие-нибудь ДоступныеПоляОтбораКомпновкиДанных или просто через коллекцию Выбор по реквизиту Поле можно найти это базовое поле и узнать его тип. А дальше в метаданные и сканирование реквизитов...
14 papakarlo
 
29.07.17
17:01
(13)
в конце концов именно так и сделал
15 papakarlo
 
29.07.17
17:05
В общем все сделал уже, кривоватенько, но в целом работает. Всем участникам темы - спасибо за участие