СКД. Программная установка видимости выбранных полей

1. qux 25 21.09.22 21:19 Сейчас в теме
1С:Предприятие 8.3 (8.3.17.1851)
"Управление торговлей", редакция 10.3 (10.3.73.2)

Отчет СКД с формой. Программно устанавливаю использование выбранных полей, но в отчет все-равно попадает поле с параметром Использование=ЛОЖЬ

Почему такое может быть?
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
13. qux 25 22.09.22 16:05 Сейчас в теме
Вопрос снят. Сам тупил. СкомпоноватьРезультат был до моих манипуляций с выбранными полями. Поставил после и заработало.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 22.09.22 10:02 Сейчас в теме
(1) Возможно, их использование включено на уровне "Отчет".
3. qux 25 22.09.22 11:01 Сейчас в теме
(2) отключено
Скриншот

В этом отчете есть 4 варианта, в первых трех программное отключение выбранных полей работает, а в четвертом варианте нет.
4. booksfill 22.09.22 11:57 Сейчас в теме
Возможно использование этого поля стоит в пользовательских настройках. Можно копаться в полях при компоновке, но я бы сделал иначе:

Попробуйте вместо этого программно запрещать не использование, как "флажок",
а задавать ограничение этого поля для использования вообще. Лень прикреплять скриншот - см. "ограничение поля" - флажок "поле".
И, разумеется, удаляйте его из выбранных полей.

По крайней
5. qux 25 22.09.22 13:19 Сейчас в теме
(4) Не нашел, где это. Все-таки скриншот бы помог.
6. qux 25 22.09.22 13:20 Сейчас в теме
Даже после программного удаления второго поля СКД упрямо показывает две колонки вместо одной (поле то осталось одно)
Прикрепленные файлы:
7. booksfill 22.09.22 15:18 Сейчас в теме
Ну зайдите в настройки компоновщика настроек в событии при компоновке и посмотрите, что у вас творится, например, вот тут.
Прикрепленные файлы:
8. booksfill 22.09.22 15:25 Сейчас в теме
И вдогонку, само поле можно удалить как-то так: КомпоновщикНастроек.Настройки.Выбор.Элементы.Удалить(КомпоновщикНастроек.Настройки.Выбор.Элементы.Получить(3));

А как обратно добавить не помню, но точно можно.
9. qux 25 22.09.22 15:27 Сейчас в теме
10. qux 25 22.09.22 15:30 Сейчас в теме
(7)
Прикрепленные файлы:
11. qux 25 22.09.22 15:32 Сейчас в теме
Всю компоновку излазил вдоль и поперек, мог конечно что-то упустить. Три из четырех вариантов работают по настройкам, а четвертому варианту все настройки побарабану)
12. qux 25 22.09.22 15:50 Сейчас в теме
Процедура выводящая отчет:
Если СброситьНастройки Тогда
		КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.Полное);
		КомпоновщикНастроек.ЗагрузитьНастройки(ВариантОтчета.Настройки);
	Иначе	
		НастройкиКД = КомпоновщикНастроек.ПолучитьНастройки();		
		КомпоновщикНастроек.ЗагрузитьНастройки(ВариантОтчета.Настройки);
	КонецЕсли;
	ЭлементыФормы.Результат.Очистить();
	УстановитьОтборВОтчет(ПолеВводаМенеджеровВСписок, "Контрагент.ОсновнойМенеджерПокупателя", ВидСравненияКомпоновкиДанных.ВСписке, ОтборПоМенеджерамВкл);
	УстановитьОтборВОтчет(ПолеВводаГруппНоменклатуры, "Номенклатура", ВидСравненияКомпоновкиДанных.ВИерархии, ОтборПоГруппамВкл);
	УстановитьЗначениеПараметра("ДатаНачала", ПолеДатаНачала);
	УстановитьЗначениеПараметра("ДатаОкончания", ПолеДатаОкончания);
	ВыбранныеПоля = КомпоновщикНастроек.Настройки.Выбор.Элементы;
	МассивПолейКоличества = Новый Массив;
	МассивПолейКоличества.Добавить("КоличествоТ");
	МассивПолейКоличества.Добавить("КоличествоП");
	МассивПолейКоличества.Добавить("ПользовательскиеПоля.Поле1");
	МассивПолейСтоимости = Новый Массив;
	МассивПолейСтоимости.Добавить("СтоимостьТ");
	МассивПолейСтоимости.Добавить("СтоимостьП");
	МассивПолейСтоимости.Добавить("ПользовательскиеПоля.Поле2");
	Для Каждого ВыбранноеПоле Из ВыбранныеПоля Цикл
		Если ТипЗнч(ВыбранноеПоле) = Тип("ВыбранноеПолеКомпоновкиДанных") Тогда
			Если МассивПолейСтоимости.Найти(Строка(ВыбранноеПоле.Поле)) <> Неопределено Тогда
				ВыбранноеПоле.Использование = ПоказыватьСтоимость;
			 КонецЕсли;
			 Если МассивПолейКоличества.Найти(Строка(ВыбранноеПоле.Поле)) <> Неопределено Тогда
				 ВыбранноеПоле.Использование = ПоказыватьКоличество;
			 КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки); //таб док на форме
	ЭлементыФормы.Результат.ПоказатьУровеньГруппировокКолонок(0);
	ЭлементыФормы.Результат.ПоказатьУровеньГруппировокСтрок(0);
	
	Если ВариантОтчета.Имя="Вариант4" Тогда
		МассивМаркеров=Новый Массив;
		МассивМаркеров.Добавить("янв.");
		МассивМаркеров.Добавить("февр.");
		МассивМаркеров.Добавить("март");
		МассивМаркеров.Добавить("апр.");
		МассивМаркеров.Добавить("май");
		МассивМаркеров.Добавить("июнь");
		МассивМаркеров.Добавить("июль");
		МассивМаркеров.Добавить("авг.");
		МассивМаркеров.Добавить("сент.");
		МассивМаркеров.Добавить("окт.");
		МассивМаркеров.Добавить("нояб.");
		МассивМаркеров.Добавить("дек.");
		
		Для Каждого Маркер Из МассивМаркеров Цикл
			ОбъединитьЯчейкиВТабличномДокументе(ЭлементыФормы.Результат, Маркер);
		КонецЦикла;
	КонецЕсли;
	
	УдаляемоеПолеКомпоновки1=Неопределено;
	Для Каждого тэКНКОлонки Из КомпоновщикНастроек.Настройки.Структура[0].Колонки[0].Выбор.Элементы Цикл
		Если Строка(тэКНКОлонки.Поле)="СтоимостьТ" Тогда
			Если Не ПоказыватьСтоимость Тогда 
				УдаляемоеПолеКомпоновки1=тэКНКОлонки;
			КонецЕсли;
			тэКНКОлонки.Использование=ПоказыватьСтоимость;
		КонецЕсли;
		Если Строка(тэКНКОлонки.Поле)="КоличествоТ" Тогда
			Если Не ПоказыватьКоличество Тогда 
				УдаляемоеПолеКомпоновки1=тэКНКОлонки;
			КонецЕсли;
			тэКНКОлонки.Использование=ПоказыватьКоличество;
		КонецЕсли;
	КонецЦикла;
	
	УдаляемоеПолеКомпоновки2=Неопределено;
	Для Каждого тэКНКОлонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
		Если Строка(тэКНКОлонки.Поле)="СтоимостьТ" Тогда
			Если Не ПоказыватьСтоимость Тогда 
				УдаляемоеПолеКомпоновки2=тэКНКОлонки;
			КонецЕсли;
		КонецЕсли;
		Если Строка(тэКНКОлонки.Поле)="КоличествоТ" Тогда
			Если Не ПоказыватьКоличество Тогда 
				УдаляемоеПолеКомпоновки2=тэКНКОлонки;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Если Не УдаляемоеПолеКомпоновки1=Неопределено Тогда
		КомпоновщикНастроек.Настройки.Структура[0].Колонки[0].Выбор.Элементы.Удалить(УдаляемоеПолеКомпоновки1);
	КонецЕсли;
	
	Если Не УдаляемоеПолеКомпоновки2=Неопределено Тогда
		КомпоновщикНастроек.Настройки.Выбор.Элементы.Удалить(УдаляемоеПолеКомпоновки2);
	КонецЕсли;
Показать
13. qux 25 22.09.22 16:05 Сейчас в теме
Вопрос снят. Сам тупил. СкомпоноватьРезультат был до моих манипуляций с выбранными полями. Поставил после и заработало.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот