В практике разработки и сопровождения систем на базе 1С, особенно в таких комплексных конфигурациях, как УПП (Управление производственным предприятием) или БГУ (Бухгалтерия государственного учреждения), часто возникает необходимость связать справочники Контрагенты и Физические лица. Эта связь критически важна для корректного ведения взаиморасчетов, формирования налоговой отчетности по НДФЛ и учета выплат в пользу индивидуальных предпринимателей или самозанятых. Разберем детально, как устроены эти связи и как бороться с типичной ошибкой нарушения прав доступа при включенном механизме RLS (Record Level Security).
Проанализируем архитектурные особенности хранения данных. В системе 1С справочник Контрагенты предназначен для учета юридических и физических лиц как сторонних субъектов сделок. Однако персональные данные (паспортные данные, ИНН, адрес регистрации) традиционно хранятся в справочнике Физические лица. Рассмотрим основные способы их соединения:
ФизЛицо с типом СправочникСсылка.ФизическиеЛица. Это позволяет системе обращаться к анкетным данным человека, не дублируя их в справочнике контрагентов.КонтактныеЛицаКонтрагентов также предусмотрен реквизит ФизЛицо, связывающий конкретного представителя организации с записью в базе физических лиц.Посмотрим на пример из конфигурации БГУ: здесь наименование контрагента зачастую является строковым представлением, но логическая связь реализована через прямую ссылку на объект физического лица для автоматизации заполнения отчетности.
Разберем ситуацию, описанную пользователями: при включенном ограничении прав на уровне записей (RLS) по справочнику Физические лица, документ ОтражениеВзаиморасчетовСКонтрагентамиВ1ДФ (актуально для украинских редакций) или аналогичные документы по НДФЛ перестают проводиться, выдавая ошибку нарушения прав доступа. Выясним причину этого поведения.
Когда система пытается провести документ, она обращается к данным контрагента. Если в коде проведения или в настройках регистров (например, ВзаиморасчетыПоНДФЛ) происходит обращение к реквизиту через точку — Контрагент.ФизЛицо.ИНН — платформа проверяет права доступа на каждый объект в цепочке. Если у пользователя настроен RLS, запрещающий чтение данного физического лица, операция блокируется целиком, даже если на самого контрагента права есть.
Проанализируем ситуацию с регистром накопления: если физическое лицо является измерением регистра, то любая попытка записи в этот регистр инициирует проверку прав на это измерение. Отсутствие прав на чтение записи в Справочник.ФизическиеЛица делает невозможным создание записи в регистре, где это лицо фигурирует.
Рассмотрим несколько методов устранения данной ошибки, в зависимости от требований безопасности в вашей организации.
Если бизнес-логика требует, чтобы пользователь мог проводить документ, но при этом ему не обязательно иметь доступ к просмотру карточки физического лица, мы можем применить привилегированный режим. Это позволит временно отключить проверку прав RLS на время выполнения кода записи движений.
Рассмотрим пример кода, который можно внедрить в модуль набора записей регистра или в процедуру проведения документа:
// Переходим в привилегированный режим для записи данных в регистр
УстановитьПривилегированныйРежим(Истина);
// Логика записи движений в регистр ВзаиморасчетыПоНДФЛ
НаборЗаписей = РегистрыНакопления.ВзаиморасчетыПоНДФЛ.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
// ... заполнение данных ...
НаборЗаписей.Записать();
// Возвращаемся в обычный режим
УстановитьПривилегированныйРежим(Ложь);
Этот способ является наиболее безопасным с точки зрения сохранения настроенных ограничений доступа в интерфейсе, но при этом гарантирует работоспособность системы.
Посмотрим на ситуацию со стороны прав доступа. Ошибка часто возникает из-за того, что в шаблоне RLS для роли пользователя прописано жесткое ограничение на чтение. Для исправления ситуации можно модифицировать запрос в шаблоне ограничений. Например, разрешить чтение объекта ФизическиеЛица, если оно связано с контрагентом, участвующим в документе, или предоставить право "Чтение" без права "Просмотр".
Важно помнить, что в УПП часто используется механизм групп доступа физических лиц. Проверьте, заполнен ли реквизит ГруппаДоступа у соответствующего физлица. Если пользователь не входит в профиль доступа, которому разрешена данная группа, возникнет ошибка. Решением может быть добавление пользователя в соответствующую группу доступа или вынос "налоговых" физлиц в отдельную общую группу.
Иногда проблема кроется в "битых" ссылках или незаполненных реквизитах. Если в документе выбран контрагент, у которого реквизит ФизЛицо содержит "Объект не найден" или пустую ссылку, на которую также может распространяться действие RLS (в зависимости от настроек), система выдаст ошибку.
Разберем шаги по диагностике данных:
Контрагенты на наличие пустых ссылок в поле ФизЛицо для элементов с видом "Физ. лицо".Отражение взаиморасчетов подтягивается актуальное физическое лицо.Документ Отражение взаиморасчетов с контрагентами в 1ДФ специфичен тем, что он является связующим звеном между контуром взаиморасчетов с поставщиками и контуром регламентированной отчетности по налогам. В нем связь Контрагент -> Физлицо является первичной. Если вы столкнулись с ошибкой именно в этом документе, рекомендуется проверить настройки прав доступа в разрезе организации. Часто RLS по физлицам накладывается дополнительно к RLS по организациям, что создает двойное ограничение.
Подводя итог, отметим, что связь между контрагентами и физическими лицами в 1С — это не просто реквизит, а сложный механизм, задействованный в системе прав доступа. Использование привилегированного режима в коде проведения является "золотым стандартом" для решения проблем с RLS, когда права на чтение мастер-данных ограничены, а проведение документов должно выполняться в штатном режиме.