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