Условное оформление: скрытие строк в таблице
Здравствуйте! Встала задача скрыть в таблице строки по отбору. Исходные данные: внешняя обработка с таблицей "Товары", необходимо в таблице по нажатию кнопки оставить только те строки, в которых есть номенклатура из заранее сформированного списка. Формы управляемые, пытаюсь сделать через условное оформление:
В итоге строки, которые попали под отбор становятся просто пустыми. Можно ли как-то их совсем скрыть и оставить только нужные?
УО = УсловноеОформление;
УО.Элементы.Очистить();
НовУО = УО.Элементы.Добавить();
ОформляемоеПоле = НовУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.Товары.Имя);
ОформляемоеПоле.Использование = Истина;
ЭлементОтбора = НовУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = СписокДляОтбора; //сформированный список значений из ссылок на номенклатуру
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
НовУО.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
НовУО.Использование = Истина;
ПоказатьВ итоге строки, которые попали под отбор становятся просто пустыми. Можно ли как-то их совсем скрыть и оставить только нужные?
По теме из базы знаний
- Подсистема прав доступа (анализ ролей, отладка RLS, английский код, обычные и управляемые формы)
- Хитрости СКД. Часть 3
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
- Вывод условного оформления дерева значений или табличной части в эксель
- Гайд для создания форм на 1С
Найденные решения
В настройке условного оформления формы прописать видимость всех полей в таблице!
в коде формы прописать что-то типа:
(у меня в примере это кнопка)
Скриншот "свойства формы"
В поле "Оформление" Видимость = Ложь
в коде формы прописать что-то типа:
(у меня в примере это кнопка)
&НаКлиенте
Процедура ПоказатьРасхождения(Команда)
ВключитьУОНаСервере(Истина);
КонецПроцедуры
&НаСервере
Процедура ВключитьУОНаСервере(Использование)
УО = ЭтаФорма.УсловноеОформление.Элементы.Получить(0);
УО.Использование = Использование;
КонецПроцедуры
ПоказатьСкриншот "свойства формы"
В поле "Оформление" Видимость = Ложь
Прикрепленные файлы:

Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В настройке условного оформления формы прописать видимость всех полей в таблице!
в коде формы прописать что-то типа:
(у меня в примере это кнопка)
Скриншот "свойства формы"
В поле "Оформление" Видимость = Ложь
в коде формы прописать что-то типа:
(у меня в примере это кнопка)
&НаКлиенте
Процедура ПоказатьРасхождения(Команда)
ВключитьУОНаСервере(Истина);
КонецПроцедуры
&НаСервере
Процедура ВключитьУОНаСервере(Использование)
УО = ЭтаФорма.УсловноеОформление.Элементы.Получить(0);
УО.Использование = Использование;
КонецПроцедуры
ПоказатьСкриншот "свойства формы"
В поле "Оформление" Видимость = Ложь
Прикрепленные файлы:

Добавлю свой коммент, после того как несколько часов поковырялся в этом дерьме)
Чтобы скрыть строку в табличном поле, нужно в условном оформлении установить свойство Видимость = Ложь для ВСЕХ колонок Табличного поля которые выведены на форме.
Отличие Отображать от Видимость
Свойство условного оформления Отображать - влияет на отображение данных в ячейки строки. Т.е. если для всех колонок установить свойство Отображать = Ложь, то строка останется видна, но во все колонки будут с пустыми значениями.
Чтобы скрыть строку в табличном поле, нужно в условном оформлении установить свойство Видимость = Ложь для ВСЕХ колонок Табличного поля которые выведены на форме.
Отличие Отображать от Видимость
Свойство условного оформления Отображать - влияет на отображение данных в ячейки строки. Т.е. если для всех колонок установить свойство Отображать = Ложь, то строка останется видна, но во все колонки будут с пустыми значениями.
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ДобавитьОтборУсловногоОформления(ЭлементОформления,"ПомещенияПлатаКУ.ФиктивноеПомещение",ВидСравненияКомпоновкиДанных.Равно,Истина);
ДобавитьПолеУсловногоОформления(ЭлементОформления,"ПомещенияПлатаКУКолонка1");
ДобавитьПолеУсловногоОформления(ЭлементОформления,"ПомещенияПлатаКУКолонка2");
ДобавитьПолеУсловногоОформления(ЭлементОформления,"ПомещенияПлатаКУКолонка3");
ДобавитьПолеУсловногоОформления(ЭлементОформления,"ПомещенияПлатаКУКолонка4");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
&НаСервере
Процедура ДобавитьОтборУсловногоОформления(ЭлементОформления, ЛевоеЗначение, ВидСравнения, ПравоеЗначение )
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЛевоеЗначение);
ЭлементОтбора.ВидСравнения = ВидСравнения;
ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;
ЭлементОтбора.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ДобавитьПолеУсловногоОформления(ЭлементОформления,Поле)
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(Поле);
ПолеОформления.Использование = Истина;
КонецПроцедуры
Показать
(8) Добрый день! Задача- скрыть строки в табличной части по списку (СписокДляОтбора). СписокДляОтбора заранее сформирован, форма управляемая. Но в 1С:Предприятие 8.3 (8.3.6.2041) ничего не происходит, а вот в (8.3.10.2252 и далее) все прекрасно срабатывает. Пользователь категорически против смены платформы. Как быть?
Процедура УсловноеОформление(УО,Имя,ЛевоеЗначение,ПравоеЗначение) Экспорт
УО.Элементы.Очистить();
НовУО = УО.Элементы.Добавить();
ОформляемоеПоле = НовУО.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Имя);
ОформляемоеПоле.Использование = Истина;
ЭлементОтбора = НовУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЛевоеЗначение);
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
НовУО.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
НовУО.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ДобавитьОтборУсловногоОформления(ЭлементОформления, ЛевоеЗначение, ВидСравнения, ПравоеЗначение )Экспорт
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЛевоеЗначение);
ЭлементОтбора.ВидСравнения = ВидСравнения;
ЭлементОтбора.ПравоеЗначение = ПравоеЗначение;
ЭлементОтбора.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ДобавитьПолеУсловногоОформления(ЭлементОформления,Поле) Экспорт
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(Поле);
ПолеОформления.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура УсловноеОф(СписокДляОтбора)//2022
УО = УсловноеОформление;
УО.Элементы.Очистить();
ОбщийМодуль2022.УсловноеОформление(УО,Элементы.Расходы2.Имя,"Объект.Расходы.ВидДохода",СписокДляОтбора);
ЭлементОформления = УсловноеОформление.Элементы.Добавить();
ОбщийМодуль2022.ДобавитьОтборУсловногоОформления(ЭлементОформления,"Расходы2.ВидДохода",ВидСравненияКомпоновкиДанных.Равно,Истина);
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2НомерСтроки");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2ВидДохода");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2Контрагент");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2Представитель");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2Валюта");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2Сумма");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2СуммаВОсновнойВалюте");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2СуммаВыдано");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2СуммаUZS");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2СуммаФ1");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2СуммаФ2");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2СуммаФ3");
ОбщийМодуль2022.ДобавитьПолеУсловногоОформления(ЭлементОформления,"Расходы2Исполнение");
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот