При разработке новых документов или доработке существующих типовых конфигураций (таких как 1С:Управление торговлей 11, 1С:Комплексная автоматизация или 1С:ERP) разработчики часто сталкиваются с разделением понятий Партнер (управленческая сущность) и Контрагент (юридическое лицо). В типовой конфигурации видимость этих полей регулируется специальной функциональной опцией (ФО) Независимо вести партнеров и контрагентов (в дереве метаданных — ИспользоватьПартнеровИКонтрагентов).
Разберем ситуацию: при копировании типового документа или создании нового с нуля оба реквизита могут оставаться на форме даже тогда, когда ведение партнеров отключено в настройках программы, либо поведение формы отличается от типовых документов. Выясним причину этой проблемы и рассмотрим по шагам, как правильно настроить функциональную опцию и логику работы формы.
Механизм функциональных опций платформы 1С:Предприятие 8 жестко привязан к составу метаданных. Когда мы создаем новый документ или копируем существующий, платформа создает новые реквизиты, но не добавляет их в состав функциональной опции автоматически. В результате платформа просто не знает, что видимость нового реквизита должна определяться настройкой программы, и поле остается доступным пользователю в любом режиме.
Рассмотрим самый быстрый способ связать реквизит нового документа с функциональной опцией:
Контрагент (или реквизит, управляемый опцией).ИспользоватьПартнеровИКонтрагентов.При таком подходе платформа автоматически скроет связанный элемент формы, если опция выключена в пользовательском режиме.
Проанализируем альтернативный путь, который особенно удобен, если нужно сразу проверить состав опции или подключить несколько реквизитов из разных объектов:
ИспользоватьПартнеровИКонтрагентов и откроем ее свойства/редактор.Контрагент).Также найти нужную функциональную опцию в конфигураторе можно через контекстное меню реквизита типового документа, выбрав пункт Поиск ссылок на объект. В результатах поиска будет отображена сама функциональная опция, откуда легко перейти к ее редактированию.
Скрытия поля на форме с помощью функциональной опции часто недостаточно для корректной работы бизнес-логики. Разберем сопутствующие настройки, без которых документ не сможет правильно проводиться:
ПриИзменении поля партнера выполняется вызов процедур подсистемы, автоматически подставляющих контрагента по умолчанию (основное юридическое лицо партнера).Контрагент должно синхронизироваться со значением Партнер программно:
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
// Синхронизируем контрагента с основным юрлицом партнера
Контрагент = Партнер.ОсновноеЮрЛицо;
КонецЕсли;
Контрагент обязательно настроим Связи параметров выбора: установим отбор вида Отбор.Партнер(Объект.Партнер).