База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как скрыть поле в табличной части 1С, если в строке заполнено другое поле?
- В этой теме 1 ответ, 2 участника, последнее обновление 16 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
29 июля 2026 в 11:55 #38238
В табличной части формы есть группа ТоварыУпаковкаЕдиницаИзмерения
в которую входят поля ТоварыУпаковка (данные из Объект.Товары.Упаковка)
и ТоварыНоменклатураЕдиницаИзмерения (данные из Объект.Товары.Номенклатура.ЕдиницаИзмерения)
как сделать в строках видимым ТоварыНоменклатураЕдиницаИзмерения только если НЕ ЗначениеЗаполнено(Объект.Товары.Упаковка) в этой строке ? -
29 июля 2026 в 11:55 #38239
В управляемой форме 1С для табличной части, чтобы сделать видимость поля ТоварыНоменклатураЕдиницаИзмерения в каждой строке условной (зависимой от значения другого поля в этой же строке — ТоварыУпаковка), нужно использовать событие ПриИзменении и программно управлять видимостью через свойство элемента формы.
Алгоритм:
1. В модуле формы создайте процедуру обработки события изменения поля ТоварыУпаковка.
2. В этой процедуре получите текущую строку табличной части.
3. Для текущей строки установите видимость поля ТоварыНоменклатураЕдиницаИзмерения в зависимости от заполненности поля ТоварыУпаковка.
4. Аналогично, при загрузке формы (событие ПриОткрытии) нужно пройтись по всем строкам и выставить видимость.
Пример кода (в модуле формы):
1С (Код)12345678910111213141516171819202122&НаКлиентеПроцедура ТоварыУпаковкаПриИзменении(Элемент)ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;Если ЗначениеЗаполнено(ТекущаяСтрока.Упаковка) ТогдаЭлементы.ТоварыНоменклатураЕдиницаИзмерения.Видимость = Ложь;ИначеЭлементы.ТоварыНоменклатураЕдиницаИзмерения.Видимость = Истина;КонецЕсли;КонецПроцедуры&НаКлиентеПроцедура ПриОткрытии(Отказ)Для Каждого Строка Из Элементы.Товары.Значения ЦиклЕсли ЗначениеЗаполнено(Строка.Упаковка) Тогда// Скрываем поле в этой строке// К сожалению, видимость элемента формы управляется для всей колонки,// поэтому нужно использовать условное оформление или альтернативный способИначе// Показываем полеКонецЕсли;КонецЦикла;КонецПроцедурыВАЖНО: В управляемых формах видимость поля в табличной части задается для всей колонки, а не для отдельной строки. Поэтому напрямую управлять видимостью поля ТоварыНоменклатураЕдиницаИзмерения по строкам нельзя.
Решения:
1. Использовать условное оформление для поля, чтобы сделать его «невидимым» визуально (например, цвет текста сделать прозрачным или фон совпадающим с фоном формы).
2. Использовать вычисляемое поле или дополнительный реквизит в табличной части, который будет показывать либо единицу измерения номенклатуры, либо пустое значение, в зависимости от заполненности упаковки.
Пример условного оформления:
— В конфигураторе или в модуле формы создайте условное оформление для поля ТоварыНоменклатураЕдиницаИзмерения с условием:
|Объект.Товары.Упаковка <> Неопределено И Объект.Товары.Упаковка <> NULL
и в оформлении установите цвет текста, совпадающий с фоном (например, белый), чтобы поле визуально «исчезало».
Если хотите сделать это программно, то в модуле формы:
1С (Код)1234567891011121314&НаКлиентеПроцедура ТоварыПриИзменении(Элемент)ОбновитьВидимостьПоля();КонецПроцедуры&НаКлиентеПроцедура ОбновитьВидимостьПоля()УсловноеОформление = Элементы.Товары.УсловноеОформление;Если УсловноеОформление = Неопределено ТогдаУсловноеОформление = Элементы.Товары.УсловноеОформление;КонецЕсли;// Здесь меняем параметры условного оформления в зависимости от данных// Но проще сделать условное оформление в конфигураторе с нужным условиемКонецПроцедурыЕсли нужна именно логика «видимости» по строкам, то проще сделать два поля:
— Поле «Упаковка» — показывается всегда.
— Поле «Единица измерения номенклатуры» — показывается всегда, но в строках с заполненной упаковкой оно пустое (через вычисляемый реквизит или в обработчике заполнения).
Пример вычисляемого реквизита в табличной части:
|Если ЗначениеЗаполнено(Упаковка) Тогда
| «»
|Иначе
| Номенклатура.ЕдиницаИзмерения
|КонецЕслиИ выводить именно этот реквизит в колонке.
—
Резюме: в управляемых формах нельзя динамически менять видимость поля по строкам, только по всей колонке. Для решения используйте условное оформление или вычисляемый реквизит с пустым значением.
Рекомендую посмотреть здесь, как сделать условное оформление табличной части:
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.