При разработке в системе 1С:ERP Управление предприятием программисты часто сталкиваются с ситуацией, когда в справочнике Партнеры отсутствует реквизит ИНН. Это вызывает недоумение, так как в пользовательском интерфейсе (в карточке партнера) мы привыкли видеть и заполнять ИНН и КПП. Давайте разберем, как устроена архитектура системы и как правильно реализовать программное заполнение этих данных.
Для начала проанализируем структуру хранения данных. В 1С:ERP реализовано четкое разделение между управленческим и регламентированным учетом:
ИНН, так как один партнер может объединять несколько юридических лиц или быть просто «точкой продаж».ИНН, КПП, ОГРН, банковские счета и коды статистики.Даже если в настройках системы (НСИ и администрирование -> CRM и маркетинг) снята галочка «Независимо вести партнеров и контрагентов», технически это все равно два разных объекта в базе данных. В режиме «один-в-один» программа просто автоматически создает контрагента при создании партнера и объединяет их формы в интерфейсе для удобства пользователя. Для наглядного отображения реквизитов обоих справочников в интерфейсе можно использовать расширение для вывода дополнительных колонок в списках партнеров и контрагентов.
Выясним причину, по которой попытка записи через ОбъектПартнер.ИНН = "..." приведет к ошибке. Поскольку в метаданных справочника Партнеры этого поля нет, обратиться к нему напрямую невозможно. При программном создании элемента необходимо использовать двухшаговую модель: создать партнера, а затем создать связанного с ним контрагента, в который и будет записан ИНН.
Рассмотрим подробнее процесс правильного заполнения данных. Чтобы связать эти объекты, в справочнике Контрагенты существует обязательный реквизит Партнер, который должен ссылаться на соответствующий элемент справочника Партнеры.
Проанализируем пример кода для корректного создания связки:
// 1. Создаем объект Партнера (управленческая сущность)
НовыйПартнер = Справочники.Партнеры.СоздатьЭлемент();
НовыйПартнер.Наименование = "ООО ТехноПром";
НовыйПартнер.Клиент = Истина; // Указываем роль партнера
НовыйПартнер.Записать();
// 2. Создаем объект Контрагента (юридическая сущность)
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Партнер = НовыйПартнер.Ссылка; // Устанавливаем связь!
НовыйКонтрагент.Наименование = "ООО ТехноПром";
НовыйКонтрагент.НаименованиеПолное = "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ ТЕХНОПРОМ";
НовыйКонтрагент.ИНН = "7701010101";
НовыйКонтрагент.КПП = "770101001";
НовыйКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮридическоеЛицо;
// Важно заполнить страну регистрации для корректной проверки ИНН
НовыйКонтрагент.СтранаРегистрации = Справочники.СтраныМира.Россия;
НовыйКонтрагент.Записать();
При программной записи напрямую в справочники мы обходим стандартные проверки интерфейса (например, «Помощник регистрации нового партнера»). Чтобы обеспечить целостность данных и избежать дублей, рекомендуется использовать функции типовых общих модулей. Посмотрим на пример вызова функций, которые помогают автоматизировать процесс:
В последних релизах (начиная с 2.5) для работы с контрагентами можно использовать функционал модуля КонтрагентыСлужебный или КонтрагентыНастройкаСправочников. Это позволяет задействовать сервис 1С:Контрагент для автоматического заполнения реквизитов по ИНН.
Проанализируем ситуации, которые могут возникнуть при программном заполнении:
Записать() у объекта Контрагент, система может выдать ошибку, если ИНН некорректен. Это поведение зависит от настроек конфигурации и патчей последних релизов.ИНН может быть неактуально. Вместо него используются реквизиты налогового номера в стране регистрации. В ERP это может храниться в справочнике РегистрационныеДанные (в зависимости от конкретной версии конфигурации).ЮрФизЛицо, иначе механизмы ФНС могут пометить контрагента как ошибочного.Подводя итог, отметим: для программного заполнения ИНН в 1С:ERP всегда нужно работать со справочником Контрагенты. Даже если бизнес-логика предполагает работу только с «Партнерами», технически ИНН — это атрибут юридического лица. Правильная последовательность действий: создание партнера -> получение ссылки -> создание контрагента с привязкой к этой ссылке и записью ИНН.