|
СКД - Удалить колонки программно | ☑ | ||
---|---|---|---|---|
0
Надмозг
14.04.21
✎
17:42
|
Нужно не выводить в отчет колонки в зависимости от выбранных параметров
Обхожу коллекцию элементов Настройки = КомпоновщикНастроек.ПолучитьНастройки(); КоллекцияЭлементов = Настройки.Выбор.Элементы; и удаляю из нее поле Все работает до тех пор, пока поля настроены на корневом уровне (Закладка СКД Настройки, уровень - Отчет), и если на уровне группировок и детальных записей поля задаются автополем. Но если не автополем, а на уровне группировок и детальных записей поля настроены вручную, то удаляемая колонка остается в отчете, даже если удалить из КоллекцияЭлементов. Понятно, что мешает присутствие этой колонки в одной из группировок или детальных записях. В связи с этим вопрос. Как удалить колонку на всех уровнях? |
|||
1
vicof
14.04.21
✎
18:04
|
Сделать n вариантов отчета, и программно выводить нужный вариант в зависимости от выбранных параметров.
|
|||
2
МихаилМ
14.04.21
✎
18:07
|
мне в таких случаях помогает обработка convertskd. она из схемы скд генерирует её программное создание.
|
|||
3
toypaul
гуру
14.04.21
✎
18:17
|
если научился обходить Выбор, то до обхода Структура не так много осталось
|
|||
4
Classic
14.04.21
✎
19:57
|
(3)
Разные по сложности задачи |
|||
5
Надмозг
15.04.21
✎
09:59
|
(1) это плохо, т.к. возможны пользовательские варианты
(2) спасибо, посмотрю (3) а я стал разбирать, что там в структуре, но не нашел нужного поля. Выглядит, будто там одни группировки, а мое поле - ресурс в детальных записях |
|||
6
toypaul
гуру
15.04.21
✎
10:24
|
(5) в синтаксис помощник не пробовал смотреть?
|
|||
7
SleepyHead
гуру
15.04.21
✎
10:29
|
(0) Две процедуры, одна рекурсивная... Не так это и сложно
Пример: ВыключитьВидимостьПолей(Настройки, "Сумма"); реализация: ----------------- Процедура ВыключитьВидимостьПолейРекурсивно(Стр, МассивПолей) Перем Поле,ПолеГруппы,ПодСтр,Коллекция; Если ТипЗнч(Стр)=Тип("НастройкиКомпоновкиДанных") Тогда Коллекция=Стр.Структура ИначеЕсли ТипЗнч(Стр)=Тип("КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных") ИЛИ ТипЗнч(Стр)=Тип("КоллекцияЭлементовСтруктурыТаблицыКомпоновкиДанных") Тогда Коллекция=Стр Иначе Возврат; КонецЕсли; Для Каждого ПодСтр Из Коллекция Цикл Для Каждого Поле из ПодСтр.Выбор.Элементы Цикл Если ТипЗнч(Поле)=Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда Для Каждого ПолеГруппы из Поле.Элементы Цикл Если МассивПолей.Найти(ПолеГруппы.Поле)<>Неопределено Тогда ПолеГруппы.Использование=Ложь КонецЕсли; КонецЦикла; ИначеЕсли ТипЗнч(Поле)=Тип("АвтоВыбранноеПолеКомпоновкиДанных") Тогда Продолжить ИначеЕсли МассивПолей.Найти(Поле.Поле)<>Неопределено Тогда Поле.Использование=Ложь КонецЕсли; КонецЦикла; Если ТипЗнч(ПодСтр)=Тип("ГруппировкаКомпоновкиДанных") ИЛИ ТипЗнч(ПодСтр)=Тип("ГруппировкаТаблицыКомпоновкиДанных") Тогда ВыключитьВидимостьПолейРекурсивно(ПодСтр.Структура, МассивПолей); ИначеЕсли ТипЗнч(ПодСтр)=Тип("ТаблицаКомпоновкиДанных") Тогда Для Каждого СтрТаблицы из ПодСтр.Строки Цикл ВыключитьВидимостьПолейРекурсивно(СтрТаблицы.Структура, МассивПолей); КонецЦикла; Для Каждого СтрТаблицы из ПодСтр.Колонки Цикл ВыключитьВидимостьПолейРекурсивно(СтрТаблицы.Структура, МассивПолей); КонецЦикла; Иначе А=1; КонецЕсли; КонецЦикла; КонецПроцедуры Процедура ВыключитьВидимостьПолей(Поля, НастройкиСКД) МассивПолей=Новый Массив; Если ТипЗнч(Поля)=Тип("Массив") Тогда МассивПолей=Поля ИначеЕсли ТипЗнч(Поля)=Тип("Строка") И ЗначениеЗаполнено(Поля) Тогда Для Каждого Имя Из СтрокаВМассив(Поля) Цикл МассивПолей.Добавить(Новый ПолеКомпоновкиДанных(Имя)); КонецЦикла; КонецЕсли; Если МассивПолей.Количество()=0 Тогда Возврат КонецЕсли; Для Каждого Поле из НастройкиСКД.Выбор.Элементы Цикл Если ТипЗнч(Поле)=Тип("ГруппаВыбранныхПолейКомпоновкиДанных") Тогда Для Каждого ПолеГруппы из Поле.Элементы Цикл Если МассивПолей.Найти(ПолеГруппы.Поле)<>Неопределено Тогда ПолеГруппы.Использование=Ложь КонецЕсли; КонецЦикла; Иначе Если МассивПолей.Найти(Поле.Поле)<>Неопределено Тогда Поле.Использование=Ложь КонецЕсли; КонецЕсли; КонецЦикла; ВыключитьВидимостьПолейРекурсивно(НастройкиСКД, МассивПолей); КонецПроцедуры |
|||
8
ЧессМастер
22.04.21
✎
15:25
|
(3) >если научился обходить Выбор, то до обхода Структура не так много осталось
(6) >в синтаксис помощник не пробовал смотреть? Эхх, а раньше как хорошо было. Пожно было задать нетривиальный вопрос и тебе ответили бы. А не послали бы читать ЖКК. Отвечу на вопросы по СКД. Помогу решить проблему с СКД |
|||
9
acht
22.04.21
✎
15:35
|
(8) Аксиома Коула
|
|||
10
toypaul
гуру
22.04.21
✎
15:38
|
(8) так это тривиальный вопрос
|
|||
11
ЧессМастер
22.04.21
✎
15:45
|
(10) >так это тривиальный вопрос
Для кого ? Для тебя ? Возможно. А сколько ты лет прокачивал свой скилл по СКД что для тебя эти вопросы стали тривиальными ? Ты понимаешь что любой вопрос становится тривиальным когда один раз через него пройдешь? А до этого ты должен или где то этот пример найти (в книгах, в программе) или тебе это должны показать коллеги. Открой ту же книгу Хрусталевой по СКД. Там ничего подобного нет. Одна вода в стиле "для того чтобы делать отчеты на СКД надо делать отчеты на СКД". А шаг вправо шаг влево от типовых вариантов и сидите разбирайтесь сами. |
|||
12
ЧессМастер
22.04.21
✎
15:47
|
Тем более когда задают вопрос на Мисту делаю это в жесточайшем цейтноте. Когда тебе на работе никто не даст неделю сидеть читать и разбираться как это сделать.
|
|||
13
acht
22.04.21
✎
16:00
|
(12) > делаю это в жесточайшем цейтноте. Когда тебе на работе никто не даст
А миста тут причем? |
|||
14
ЧессМастер
22.04.21
✎
17:43
|
(13) Миста это место где БЫСТРО можно получить квалифицированный ответ в условиях жесткого цейтнота на решение задачи.
Можно конечно получить ответ типа (3) >если научился обходить Выбор, то до обхода Структура не так много осталось (6) >в синтаксис помощник не пробовал смотреть? но обычно если человек навел время на прочтение ветки то отвечает по существу. |
|||
15
ЧессМастер
22.04.21
✎
17:48
|
(13) Я просто каждый раз удивляюсь - если у человека нет времени / желания отвечать на вопрос который поднял топикстартер зачем заходить в ветку и упражняться в остроумии ?
Такое впечатление что у тех кто так делает глубокая психологическая травма от того что они когда-то задали вопрос а их в ответ психологически унижали и насмехались. Вот они и отыгрываются сейчас. |
|||
16
hhhh
22.04.21
✎
17:49
|
(0) делай после скд
ТабДок.УдалитьОбласть() |
|||
17
Chameleon1980
22.04.21
✎
21:17
|
просто ответы очевидны, я думаю
|
|||
18
acht
22.04.21
✎
21:38
|
(14) У тебя реально сбиты приоритеты.
> Миста это место где БЫСТРО можно Миста это место где быстро МОЖНО. А можно и не. (15) > Вот они и отыгрываются сейчас. И жалуются на это на форумах, да. |
|||
19
ЧессМастер
23.04.21
✎
19:54
|
(18) >И жалуются на это на форумах
Я ни на кого не жалуюсь. Я просто не понимаю зачем тратить свое рабочее время чтобы прийти в ветку и написать что то типа >(3) >если научился обходить Выбор, то до обхода Структура не так много осталось >(6) >в синтаксис помощник не пробовал смотреть? Вот ты ходишь за мной по всем веткам и комментируешь мои комментарии. Ни одного комментария по делу не было. Одна хрень типа "расскажи лучше о истории с ноутбуком". |
|||
20
ДедМорроз
23.04.21
✎
21:45
|
Программно все удаляется и собирается.
Вся СКД может быть построена программно от начала до конца. Читаем документацию и не задаем вопросов. |
|||
21
acht
24.04.21
✎
00:03
|
(19) > Одна хрень типа "расскажи лучше о истории с ноутбуком"
О, спасибо что напомнил. Чем там кончилось-то, какая твоя роль была? Ты так беспокоился, у тебя все нормально? |
|||
22
Chameleon1980
24.04.21
✎
04:37
|
(0) как же вы не поймете
когда тебе говорят что-то типа "не так много осталось" значит, что ты идёшь в верном направлении радуйся всем бля дай рабочий код да так ничему не научитесь речь не про данную ситуацию, а вообще я считаю, что правильный наставник, который намекнет, а не сделает за тебя для готового кода спрашивайте гугла разговора нет, что кто-то может поделиться изящным решением в какой-то ситуации но тут до решения осталось пару шагов и автор руки опускает ооой, мне никто толком помочь не хочет сказали же (да и додуматься же просто правда) - доберусь до полей схемы и рули ими мыслей много по подобным ситуациям, а нормально выразить (тб сутра) толком не могу. но бесит, когда советы не считают за помощь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |