Как настроить условия видимости для дополнительных реквизитов в 1С:Управление торговлей?

Бизнес-аналитик 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе настройки каталога товаров в программе 1С:Управление торговлей (редакция 11) пользователи часто сталкиваются с необходимостью кастомизации карточки номенклатуры. Для этого применяется типовой механизм — дополнительные реквизиты и сведения. Однако при попытке настроить сложные правила отображения (например, показывать «Размер обуви» только для обуви, а «Длину клинка» только для ножей) кнопка настройки условий видимости в карточке реквизита может оказаться недоступной или заблокированной.

В этой статье мы подробно разберем, почему возникает это ограничение, как устроена подсистема свойств в 1С и какими способами можно реализовать выборочную видимость реквизитов для разных категорий товаров.

Выясняем причину: почему заблокирована настройка видимости?

Для начала проанализируем архитектуру подсистемы «Свойства», которая входит в состав Библиотеки стандартных подсистем (БСП) и используется во всех современных конфигурациях 1С. В системе разделяются два понятия:

  1. Индивидуальный дополнительный реквизит — свойство, которое создается внутри конкретного набора (например, привязано исключительно к виду номенклатуры «Обувь»).
  2. Общий дополнительный реквизит — единый элемент базы данных, который «подмешивается» сразу во многие наборы (например, реквизит «Производитель», используемый и для одежды, и для техники).

Логика разработчиков фирмы 1С заключается в следующем: если реквизит помечен как общий, он должен вести себя абсолютно одинаково во всех объектах, где он задействован. По этой причине стандартный механизм настройки условий видимости в пользовательском режиме для общих реквизитов заблокирован разработчиками на уровне платформы и кода БСП. Настройка оформления просто не выводится в интерфейсе карточки такого свойства.

Если вы обнаружили, что для нужного вам поля нет возможности добавить условия отображения, значит, этот реквизит был ошибочно добавлен как общий или размещен в корневой папке свойств всей номенклатуры.

Рассмотрим по шагам несколько практических способов обхода этого ограничения и настройки правильного поведения интерфейса.

Способ 1. Разделение общего реквизита на индивидуальные свойства

Если вам требуется, чтобы реквизит отображался только при определенных условиях в конкретных видах номенклатуры, его нельзя делать общим. Наиболее правильный методический путь — «размножить» этот реквизит, сделав его индивидуальным для каждого набора свойств.

Рассмотрим этот процесс пошагово:

  1. Перейдем в раздел НСИ и администрирование, выберем пункт Администрирование, далее — Общие настройки и откроем гиперссылку Дополнительные реквизиты и сведения.
  2. Найдем наш проблемный общий реквизит. Нам необходимо создать его точные копии, но уже внутри конкретных видов номенклатуры (наборов свойств).
  3. Зайдем в нужный набор свойств (например, «Обувь»), нажмем кнопку Добавить и выберем вариант Новый (а не «Из другого набора»). Создаем реквизит с аналогичным типом значения (например, Список значений или Число).
  4. Поскольку индивидуальный реквизит теперь принадлежит только этому набору, в его карточке сразу же станет активна гиперссылка Оформить (или Настройка видимости/доступности), где мы сможем задать любое логическое условие.

Важный нюанс: если в базе уже велся учет и по старому общему реквизиту заполнены данные в карточках товаров, просто так удалить его нельзя — данные пропадут. Нам потребуется перенести значения из старого общего поля в новые индивидуальные реквизиты.

Для переноса данных воспользуемся универсальной обработкой Групповое изменение реквизитов:

  1. Откроем обработку через меню НСИ и администрированиеОбслуживаниеКорректировка данныхГрупповое изменение реквизитов.
  2. В качестве изменяемого объекта выберем справочник Номенклатура.
  3. Настроим отбор: выберем только те позиции, у которых старый общий реквизит был заполнен.
  4. В списке доступных для изменения реквизитов найдем наше новое индивидуальное свойство и в колонке «Новое значение» свяжем его со значением старого свойства через формулу или просто перезаполним нужными данными.
  5. После успешного переноса данных мы можем безопасно удалить связь старого общего реквизита с данным видом номенклатуры.

Способ 2. Исключение реквизита из лишних наборов свойств

Бывают ситуации, когда реквизит по ошибке стал «общим» просто потому, что его случайно добавили в два разных набора, хотя фактически он нужен только в одном. В таком случае нам нужно сделать его «не общим» обратно.

Выполним следующие действия:

  1. Откроем список дополнительных реквизитов.
  2. Проанализируем, в какие именно наборы входит данный реквизит.
  3. Зайдем во все «лишние» наборы свойств и удалим этот реквизит оттуда. Обратите внимание: система может заблокировать удаление, если в карточках товаров этого вида уже заполнены значения. В этом случае предварительно очистите значения этого свойства у данной группы товаров с помощью группового изменения реквизитов.
  4. Как только реквизит останется привязанным только к одному единственному набору свойств, он автоматически перестанет считаться общим в контексте ограничений БСП.
  5. Если реквизит все еще отображается в группе «Общие», его можно переместить вручную в дереве настроек, перетащив мышкой в конкретную группу (набор), соответствующую вашему виду номенклатуры. После этого функция настройки видимости станет доступна.

Способ 3. Использование встроенных настроек состава набора свойств

В зависимости от версии БСП, интегрированной в вашу конфигурацию «1С:Управление торговлей», разработчики иногда оставляют альтернативную возможность настройки поведения полей. Рассмотрим, как это проверить:

  1. Откроем карточку редактирования конкретного Вида номенклатуры.
  2. Перейдем на вкладку Дополнительные реквизиты.
  3. Выделим интересующий нас общий реквизит прямо в списке состава этого набора.
  4. Обратим внимание на командную панель или контекстное меню (вызывается правой кнопкой мыши). В некоторых версиях систем здесь доступна кнопка Настроить видимость/доступность для этого набора.

Если данная кнопка присутствует, вы сможете задать правила отображения индивидуально для этого вхождения общего реквизита, не изменяя его глобальных настроек в других наборах.

Способ 4. Программное управление видимостью через расширение конфигурации

Если бизнес-логика требует использования именно общего реквизита (например, для сквозной аналитики по всей базе), а стандартные средства настройки заблокированы, задачу можно решить программным путем. Для сохранения поддержки конфигурации все доработки крайне рекомендуется выполнять в **расширении**.

Проанализируем, как управлять видимостью элементов программно. Для этого используется программный интерфейс БСП, который динамически строит форму элемента номенклатуры на основании сохраненных свойств.

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


&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Определяем текущий вид номенклатуры объекта
    ТекущийВидНоменклатуры = Объект.ВидНоменклатуры;
    
    // Проверим условие: если это вид номенклатуры "Ножи", скрываем реквизиты для обуви
    Если ТекущийВидНоменклатуры.Наименование = "Ножи" Тогда
        
        // Обходим элементы формы в поисках дополнительных реквизитов
        Для Каждого ЭлементФормы Из Элементы Цикл
            
            // Имена элементов дополнительных реквизитов в БСП содержат уникальный идентификатор свойства
            Если Найти(ЭлементФормы.Имя, "ДополнительныйРеквизит_") > 0 Тогда
                
                // Получаем метаданные свойства, связанные с элементом формы
                СвойствоОбъект = ЭлементФормы.ПутьКДанным;
                
                // Проверяем по имени или коду свойства, нужно ли его скрыть
                // Например, скроем общий реквизит "Размер обуви"
                Если Найти(ЭлементФормы.Заголовок, "Размер обуви") > 0 Тогда
                    ЭлементФормы.Видимость = Ложь;
                КонецЕсли;
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

Использование расширения позволяет гибко управлять интерфейсом без изменения структуры метаданных и без необходимости копирования сотен значений свойств в базе данных.

Рекомендации по проектированию структуры свойств в 1С:УТ

Чтобы в дальнейшем не сталкиваться с подобными ограничениями интерфейса, рекомендуем придерживаться нескольких правил при проектировании справочника номенклатуры:

Мы подробно разобрали причины блокировки настройки условий видимости для общих дополнительных реквизитов в 1С:Управление торговлей и рассмотрели четыре практических способа решения этой задачи — от простых пользовательских настроек и переноса данных до программного управления интерфейсом. Выберите наиболее подходящий способ для вашей базы данных, чтобы сделать работу пользователей максимально удобной и эффективной.

← На главную