Как скрыть поле в табличной части 1С, если в строке заполнено другое поле?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как скрыть поле в табличной части 1С, если в строке заполнено другое поле?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38238
      Фото аватараOdineski
      Участник

        В табличной части формы есть группа ТоварыУпаковкаЕдиницаИзмерения
        в которую входят поля ТоварыУпаковка (данные из Объект.Товары.Упаковка)
        и ТоварыНоменклатураЕдиницаИзмерения (данные из Объект.Товары.Номенклатура.ЕдиницаИзмерения)
        как сделать в строках видимым ТоварыНоменклатураЕдиницаИзмерения только если НЕ ЗначениеЗаполнено(Объект.Товары.Упаковка) в этой строке ?

      • #38239
        bot_avaOdin — Одинэсник
        Участник

          В управляемой форме 1С для табличной части, чтобы сделать видимость поля ТоварыНоменклатураЕдиницаИзмерения в каждой строке условной (зависимой от значения другого поля в этой же строке — ТоварыУпаковка), нужно использовать событие ПриИзменении и программно управлять видимостью через свойство элемента формы.

          Алгоритм:

          1. В модуле формы создайте процедуру обработки события изменения поля ТоварыУпаковка.

          2. В этой процедуре получите текущую строку табличной части.

          3. Для текущей строки установите видимость поля ТоварыНоменклатураЕдиницаИзмерения в зависимости от заполненности поля ТоварыУпаковка.

          4. Аналогично, при загрузке формы (событие ПриОткрытии) нужно пройтись по всем строкам и выставить видимость.

          Пример кода (в модуле формы):

          ВАЖНО: В управляемых формах видимость поля в табличной части задается для всей колонки, а не для отдельной строки. Поэтому напрямую управлять видимостью поля ТоварыНоменклатураЕдиницаИзмерения по строкам нельзя.

          Решения:

          1. Использовать условное оформление для поля, чтобы сделать его «невидимым» визуально (например, цвет текста сделать прозрачным или фон совпадающим с фоном формы).

          2. Использовать вычисляемое поле или дополнительный реквизит в табличной части, который будет показывать либо единицу измерения номенклатуры, либо пустое значение, в зависимости от заполненности упаковки.

          Пример условного оформления:

          — В конфигураторе или в модуле формы создайте условное оформление для поля ТоварыНоменклатураЕдиницаИзмерения с условием:

          |Объект.Товары.Упаковка <> Неопределено И Объект.Товары.Упаковка <> NULL

          и в оформлении установите цвет текста, совпадающий с фоном (например, белый), чтобы поле визуально «исчезало».

          Если хотите сделать это программно, то в модуле формы:

          Если нужна именно логика «видимости» по строкам, то проще сделать два поля:

          — Поле «Упаковка» — показывается всегда.

          — Поле «Единица измерения номенклатуры» — показывается всегда, но в строках с заполненной упаковкой оно пустое (через вычисляемый реквизит или в обработчике заполнения).

          Пример вычисляемого реквизита в табличной части:

          |Если ЗначениеЗаполнено(Упаковка) Тогда
          | «»
          |Иначе
          | Номенклатура.ЕдиницаИзмерения
          |КонецЕсли

          И выводить именно этот реквизит в колонке.

          Резюме: в управляемых формах нельзя динамически менять видимость поля по строкам, только по всей колонке. Для решения используйте условное оформление или вычисляемый реквизит с пустым значением.

          Рекомендую посмотреть здесь, как сделать условное оформление табличной части:

          https://helpf.pro/faq/view/1235.html

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С