|
СКД из динсписка | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
29.11.19
✎
11:13
|
Что-то я торможу или?
Есть динамический список (произвольный запрос). Примитивный до мычания:
В настройках списка все три поля отмечены как "использовать всегда". На форму выведены все три поля. Но у поля Документ видимость снята. Далее делаю НастройкиПользователя = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); СхемаПользователя = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных(); МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаПользователя, НастройкиПользователя,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки); И в результате, в таблице Результат вижу только дату и номер. Если видимость документа включаю - вижу всё. И вопрос: как мне программно и в какое место мне влезть в настройки или схему, чтобы увидеть все поля вне зависимости от настройки видимости? |
|||
1
vicof
29.11.19
✎
11:16
|
ПолучитьИсполняемыеНастройкиКомпоновкиДанных()
Возвращаемое значение: Тип: НастройкиКомпоновкиДанных. Описание: Возвращает настройки компоновки, соответствующие данным, которые отображаются в динамическом списке, связанном с таблицей. При этом учитывается видимость колонок и установленное значение поиска. |
|||
2
ДенисЧ
29.11.19
✎
11:21
|
(1) В каком конкретно? Я просмотел в отладчике все поля этой настройки, нигде не увидел списка полей, кроме как в доступных
|
|||
3
vicof
29.11.19
✎
11:23
|
(2) не понял вопрос
|
|||
4
toypaul
гуру
29.11.19
✎
11:27
|
добавить в НастройкиПользователя.Выбор наверное. если его там нет
|
|||
5
ДенисЧ
29.11.19
✎
11:29
|
(3) Я не нашёл ни одного реквизита настроек, где были бы перечислены поля НомерДокумента, ДатаДокумента.
(4) Так там вообще пусто, но в результате запроса поля есть. |
|||
6
D_E_S_131
29.11.19
✎
11:39
|
Возможно у ссылки надо отключить не "Видимость", а "Пользовательская видимость".
|
|||
7
ДенисЧ
29.11.19
✎
11:41
|
(6) Не помогло (
|
|||
8
vicof
29.11.19
✎
11:43
|
Значит перед исполнением запроса включить видимость у всех колонок, после вернуть обратно))
|
|||
9
ДенисЧ
29.11.19
✎
11:45
|
(8) Ну хорошо, а где? Лезть в настройки списка? И он мне перерисовываться туда-сюда будет?
|
|||
10
vicof
29.11.19
✎
11:46
|
Элементы.Список.Дата.Видимость = Истина;
|
|||
11
vicof
29.11.19
✎
11:46
|
и так далее
|
|||
12
ДенисЧ
29.11.19
✎
11:49
|
(10) Неа. Не срабатывает. Если что - я всё это делаю на сервере. И сделав так:
Элементы.Документ.Видимость = Истина; НастройкиПользователя = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); ничего не меняет. |
|||
13
sqr4
29.11.19
✎
11:57
|
ПолучитьИсполняемуюСхемуКомпоновкиДанных() вот тут в схеме какой запрос?
|
|||
14
ДенисЧ
29.11.19
✎
11:58
|
Сделал вот так
Для Каждого поле Из НастройкиПользователя.Выбор.ДоступныеПоляВыбора.Элементы Цикл поле1 = НастройкиПользователя.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ЗаполнитьЗначенияСвойств(поле1, поле); КонецЦикла; Всё равно нету (( Хотя в НастройкиПользователя.Выбор.Элементы есть всё, что нужно. А видимость перещёлкивать - по возвращении с сервера список пересчитывается ( |
|||
15
ДенисЧ
29.11.19
✎
11:59
|
(13) Строго по тем колонкам, которые видны на форме... То есть нужного мне нет. Вот и вопрос - как его переформировать
|
|||
16
Андроны едут
29.11.19
✎
11:59
|
(15) попробуй так КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.Полное);
|
|||
17
ДенисЧ
29.11.19
✎
12:05
|
(16) И что мне это даст? Сбросит все настройки моего списка? Тем более видимость поля задана в конфигураторе, а не пользователем, поэтому сброс настроек её видимость не восстановит
|
|||
18
sqr4
29.11.19
✎
12:08
|
(15) ну т.е ты сначала делаешь видимость в истину, затем получаешь схему верно?
Попробуй делать это на клиенте, я про видимость и после этого обновить динамический список и только после этого получать схему и настройки |
|||
19
Андроны едут
29.11.19
✎
12:09
|
(17) мне иногда помогает в сложных случаях работы с компоновщиком. А почему сам не знаю. СКД для нас всех черный ящик.
|
|||
20
ДенисЧ
29.11.19
✎
12:16
|
(18) Мне так нельзя. Пользователь себе настроил список, как ему надо, а я его настройки буду сбрасывать? Не вариант вообще.
|
|||
21
sqr4
29.11.19
✎
12:19
|
(20) ну после отработки получения схемы все вернуть обратно
|
|||
22
ДенисЧ
29.11.19
✎
12:23
|
(21) Ага. И подмигивать списком пользователю. Меня неправильно поймут (тут в основном женщины, причём замужние...)
|
|||
23
sqr4
29.11.19
✎
12:52
|
(22) ну тогда только дополнять скд нужными полями, как я понимаю
|
|||
24
ДенисЧ
29.11.19
✎
12:55
|
(23) Тут посмотрел...
И в настройках и в схеме все поля есть... А всё равно не выводится. Не пойму, где видимость изменить... |
|||
25
toypaul
гуру
29.11.19
✎
12:57
|
(14) чортова магия. ну посмотри еще в Структура что ли
|
|||
26
ДенисЧ
29.11.19
✎
12:59
|
(25) там только идентификатор, представление и режим отображения. куда смотреть? ))
|
|||
27
toypaul
гуру
29.11.19
✎
12:59
|
конечно есть еще вероятность, что этого поля вообще в схеме нет. тогда сначала его надо в схему добавить.
|
|||
28
ДенисЧ
29.11.19
✎
13:00
|
о! Точно, это же коллекция )))
Сейчас буду покопать... |
|||
29
toypaul
гуру
29.11.19
✎
13:01
|
(25) в структуре должен быть один элемент, у которого вероятно заполнен Выбор. еще надо проверить ДоступныеПоляВыбора. если твоего поля там нет, то хоть завыводить - оно в отчете не появится. этот список заполняется из схемы.
|
|||
30
ДенисЧ
29.11.19
✎
13:40
|
Во, нашёл вариант, кривой правда, но пока сработал.
выбор = НастройкиПользователя.Структура[0].Выбор; Для Каждого поле из выбор.ДоступныеПоляВыбора.Элементы Цикл Если поле.Заголовок = "Системные поля" ИЛИ поле.Заголовок = "Параметры" Тогда Продолжить; КонецЕсли; поле1 = Неопределено; фл = Ложь; Для Каждого поле1 из выбор.Элементы Цикл Если поле1.поле = поле.поле Тогда фл = Истина; Прервать; КонецЕсли; КонецЦикла; Если Не фл Тогда поле1 = выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ЗаполнитьЗначенияСвойств(поле1, поле); поле1.Заголовок = ""; КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |