Как настроить видимость полей «Партнер» и «Контрагент» в новом документе в 1С:Управление торговлей 11?

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

При разработке новых документов или доработке существующих типовых конфигураций (таких как 1С:Управление торговлей 11, 1С:Комплексная автоматизация или 1С:ERP) разработчики часто сталкиваются с разделением понятий Партнер (управленческая сущность) и Контрагент (юридическое лицо). В типовой конфигурации видимость этих полей регулируется специальной функциональной опцией (ФО) Независимо вести партнеров и контрагентов (в дереве метаданных — ИспользоватьПартнеровИКонтрагентов).

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

Причина: почему реквизиты не скрываются автоматически при копировании

Механизм функциональных опций платформы 1С:Предприятие 8 жестко привязан к составу метаданных. Когда мы создаем новый документ или копируем существующий, платформа создает новые реквизиты, но не добавляет их в состав функциональной опции автоматически. В результате платформа просто не знает, что видимость нового реквизита должна определяться настройкой программы, и поле остается доступным пользователю в любом режиме.

Способ 1. Привязка функциональной опции в свойствах реквизита

Рассмотрим самый быстрый способ связать реквизит нового документа с функциональной опцией:

  1. Откроем дерево метаданных конфигурации и найдем создаваемый документ.
  2. В ветке реквизитов документа выберем реквизит Контрагент (или реквизит, управляемый опцией).
  3. Откроем палитру свойств этого реквизита.
  4. Перейдем на вкладку Дополнительно.
  5. Найдем свойство Функциональные опции и выберем в списке нужную опцию — ИспользоватьПартнеровИКонтрагентов.

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

Способ 2. Добавление реквизита через состав функциональной опции

Проанализируем альтернативный путь, который особенно удобен, если нужно сразу проверить состав опции или подключить несколько реквизитов из разных объектов:

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

Также найти нужную функциональную опцию в конфигураторе можно через контекстное меню реквизита типового документа, выбрав пункт Поиск ссылок на объект. В результатах поиска будет отображена сама функциональная опция, откуда легко перейти к ее редактированию.

Важные нюансы: программная обработка и синхронизация данных

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

  1. Заполнение скрытого реквизита: если функциональная опция выключена, пользователь взаимодействует только с одним полем. Однако для проведения документа и формирования движений по регистрам требуются оба значения (и партнер, и контрагент). В типовых документах в модуле формы в обработчике события ПриИзменении поля партнера выполняется вызов процедур подсистемы, автоматически подставляющих контрагента по умолчанию (основное юридическое лицо партнера).
  2. Контроль в модуле объекта: перед записью документа полезно предусмотреть проверку: если раздельный учет отключен, значение Контрагент должно синхронизироваться со значением Партнер программно:
    
    Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
        // Синхронизируем контрагента с основным юрлицом партнера
        Контрагент = Партнер.ОсновноеЮрЛицо;
    КонецЕсли;
    
  3. Связи параметров выбора: когда раздельный учет включен, выбор контрагента должен быть ограничен теми организациями, которые привязаны к выбранному партнеру. Для этого в свойствах реквизита или элемента формы Контрагент обязательно настроим Связи параметров выбора: установим отбор вида Отбор.Партнер(Объект.Партнер).
  4. Кэширование значений ФО: обратите внимание, что значения функциональных опций кэшируются платформой на время пользовательского сеанса. Если вы переключаете настройку ведения партнеров в режиме предприятия, для проверки корректности отображения форм необходимо перезапустить сеанс пользователя.
← На главную