Почему при программном создании партнера не заполняется вид контрагента и как связать партнеров с контрагентами в 1С?

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

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

Архитектурное разделение: Партнеры и Контрагенты

Проанализируем структуру хранения данных. В современных типовых конфигурациях учет разделен на два уровня:

  1. Справочник «Партнеры» отвечает за управленческий учет. В нем хранятся сведения о структуре бизнеса клиента или поставщика, холдингах, брендах и взаимоотношениях (роли Клиент, Поставщик, Конкурент).
  2. Справочник «Контрагенты» предназначен для регламентированного и бухгалтерского учета. Здесь хранятся конкретные юридические лица, их ИНН, КПП, банковские реквизиты и договоры.

Посмотрим, почему возникает путаница с реквизитами. В справочнике Партнеры есть реквизит ЮрФизЛицо, который принимает значения перечисления КомпанияЧастноеЛицо (только Компания или ЧастноеЛицо). В то же время у справочника Контрагенты также есть реквизит ЮрФизЛицо, но он имеет тип ПеречислениеСсылка.ЮрФизЛицо (значения: ЮрЛицо, ФизЛицо, ИндивидуальныйПредприниматель, ЮрЛицоНеРезидент, ОбособленноеПодразделение).

Когда мы открываем типовой объединенный список, колонка Вид контрагента отображает данные не из партнера, а из связанной таблицы справочника Контрагенты. Если контрагент не создан, колонка закономерно остается пустой.

Способ 1. Программное создание связанной пары «Партнер — Контрагент»

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

Разберем по шагам создание партнера и контрагента:

  1. Создаем и заполняем элемент справочника Партнеры, выставляя управленческие признаки (роли).
  2. Записываем партнера для получения ссылки.
  3. Создаем элемент справочника Контрагенты и указываем в реквизите Партнер полученную ссылку.
  4. Заполняем реквизит Контрагент.ЮрФизЛицо нужным значением перечисления.
  5. Записываем контрагента.

Посмотрим на пример программного кода:


// Шаг 1. Создаем партнера
НовыйПартнер = Справочники.Партнеры.СоздатьЭлемент();
НовыйПартнер.Наименование = "ООО Поставщик";
НовыйПартнер.НаименованиеПолное = "Общество с ограниченной ответственностью Поставщик";
НовыйПартнер.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.Компания;
НовыйПартнер.Поставщик = Истина;
НовыйПартнер.Клиент = Ложь;
НовыйПартнер.Записать();

// Шаг 2. Создаем подчиненного контрагента
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Партнер = НовыйПартнер.Ссылка;
НовыйКонтрагент.Наименование = "ООО Поставщик";
НовыйКонтрагент.НаименованиеПолное = "Общество с ограниченной ответственностью Поставщик";
НовыйКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
НовыйКонтрагент.ИНН = "7701234567";
НовыйКонтрагент.КПП = "770101001";
НовыйКонтрагент.Записать();

Способ 2. Настройка функциональных опций

Выясним причину зависимости форм от настроек. В системе поведение списков и форм регулируется константами и функциональными опциями:

  1. ИспользоватьПартнеровКакКонтрагентов — включает режим, когда один партнер жестко соответствует одному контрагенту, а в интерфейсе они объединены в одну сущность.
  2. ИспользоватьПартнеровИКонтрагентов — включает независимое ведение управленческой и юридической структуры.

Если бизнес-процессы не требуют ведения сложных холдинговых структур с несколькими юридическими лицами под одним брендом, перейдем в раздел НСИ и администрирование -> CRM и маркетинг -> Настройки CRM и отключим флаг Независимо вести партнеров и контрагентов (или включим режим работы без разделения). В таком случае система упрощает форму и сопоставление элементов.

Почему созданный партнер не виден в списках?

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

  1. Не установлены управленческие роли. Специализированные формы списков («Клиенты», «Поставщики») содержат жесткие отборы динамических списков по флагам Клиент = Истина или Поставщик = Истина. Если при программном создании забыть выставить соответствующий флаг, партнер отобразится только в общем списке «Все партнеры».
  2. Ограничения прав доступа (RLS). Если в системе включен учет по группам доступа партнеров, обязательно заполняйте реквизит ГруппаДоступа или назначайте реквизит ОсновнойМенеджер, иначе пользователи с ограниченными правами не увидят созданную запись.
← На главную