В процессе работы с аналитической и финансовой отчетностью перед специалистами часто возникает задача разделения контрагентов по их организационно-правовой форме (ОПФ). Финансистам и руководителям важно четко понимать структуру взаиморасчетов: какой объем операций приходится на общества с ограниченной ответственностью (ООО), акционерные общества (АО) или индивидуальных предпринимателей (ИП). Это критично для оценки налоговых рисков и планирования денежных потоков.
В типовой конфигурации «1С:Бухгалтерия 3.0» нет единого отдельного поля под ОПФ для коммерческих контрагентов, как это сделано, например, в государственных конфигурациях. Однако существует несколько эффективных способов решения этой задачи — от простых настроек без программирования до гибкой программной обработки. Давайте разберем подробно каждый из этих методов.
Прежде чем приступать к доработкам программы, проанализируем возможности типового функционала. В современных версиях «1С:Бухгалтерии 3.0» карточка контрагента содержит системный реквизит, который позволяет классифицировать партнера.
За эту классификацию отвечает реквизит ЮридическоеФизическоеЛицо, имеющий тип системного перечисления ЮрФизЛицо. Данный реквизит может принимать следующие ключевые значения:
Если перед нами стоит задача просто отделить индивидуальных предпринимателей от юридических лиц, нам не нужно писать программный код или создавать новые поля. Достаточно использовать этот стандартный реквизит. Выясним, как вывести его в любой типовой отчет (например, в «Оборотно-сальдовую ведомость по счету 62» или «Анализ субконто»):
Контрагент, раскроем его по кнопке «+» и выберем реквизит Юридическое / физическое лицо (в метаданных — ЮридическоеФизическоеЛицо).Если мы разрабатываем собственный внешний отчет или пишем обработку выгрузки данных, нам может потребоваться программный алгоритм экспресс-определения типа контрагента. Самый надежный и простой маркер, позволяющий отличить юридическое лицо от индивидуального предпринимателя (или физического лица) — это длина ИНН.
У юридических лиц ИНН всегда состоит из 10 цифр, а у ИП и физических лиц — из 12 цифр. Посмотрим на пример программной реализации этой проверки в модуле 1С:
// Функция определяет тип контрагента на основе его ИНН
Функция ОпределитьТипКонтрагентаПоИНН(ТекущийКонтрагент) Экспорт
ОчищенныйИНН = СокрЛП(ТекущийКонтрагент.ИНН);
ДлинаИНН = СтрДлина(ОчищенныйИНН);
Если ДлинаИНН = 12 Тогда
// 12-значный ИНН указывает на то, что это ИП или Физ.лицо
Возврат "Индивидуальный предприниматель / Физ.лицо";
ИначеЕсли ДлинаИНН = 10 Тогда
// 10-значный ИНН всегда принадлежит юридическому лицу
Возврат "Юридическое лицо";
Иначе
Возврат "Некорректный или незаполненный ИНН";
КонецЕсли;
КонецФункции
Рассматривая этот метод, важно помнить о «человеческом факторе». Пользователи могут допускать ошибки при ручном вводе данных, занося лишние пробелы, путая КПП и ИНН или оставляя поле пустым. Поэтому перед анализом длины строки всегда рекомендуется использовать функцию СокрЛП() для удаления лишних пробелов по краям.
Что делать, если финансистам недостаточно разделения на «Юр. лицо / ИП», и они хотят видеть конкретные формы: ООО, АО, ПАО, ЗАО, НКО? Для этого отлично подойдет встроенный механизм Библиотеки стандартных подсистем (БСП) — «Дополнительные реквизиты и сведения». Этот способ хорош тем, что не требует изменения конфигурации и снятия программы с поддержки.
Разберем по шагам, как настроить этот функционал:
Контрагенты.Организационно-правовая форма (ОПФ).Дополнительное значение.ООО, АО, ПАО, ИП, НКО, ФГУП.Теперь в карточке каждого контрагента в нижней части появится новое поле «Организационно-правовая форма (ОПФ)», где пользователи смогут выбирать нужное значение из списка. Поскольку система компоновки данных (СКД) в 1С автоматически индексирует дополнительные реквизиты БСП, это поле сразу станет доступно для вывода во все стандартные отчеты программы через стандартную панель настроек.
Если база данных уже содержит тысячи контрагентов, заполнять созданный вручную дополнительный реквизит для каждого элемента будет трудоемко. В такой ситуации мы можем прибегнуть к программному парсингу полного или краткого наименования контрагента.
В ЕГРЮЛ наименования организаций всегда содержат указание на их форму (например, *«Общество с ограниченной ответственностью "Ромашка"»* или *«ООО "Ромашка"»*). Проанализируем, как написать функцию автоматического выделения ОПФ из названия:
// Функция анализирует текстовое наименование контрагента и возвращает ОПФ
Функция ПолучитьОПФИзНаименования(КонтрагентСсылка) Экспорт
// Получаем полное наименование для более точного анализа
НаименованиеВРег = ВРег(СокрЛП(КонтрагентСсылка.НаименованиеПолное));
Если Найти(НаименованиеВРег, "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ") > 0
Или Найти(НаименованиеВРег, " ООО ") > 0
Или Лев(НаименованиеВРег, 4) = "ООО " Тогда
Возврат "ООО";
ИначеЕсли Найти(НаименованиеВРег, "АКЦИОНЕРНОЕ ОБЩЕСТВО") > 0
Или Найти(НаименованиеВРег, " АО ") > 0
Или Лев(НаименованиеВРег, 3) = "АО " Тогда
Возврат "АО";
ИначеЕсли Найти(НаименованиеВРег, "ПУБЛИЧНОЕ АКЦИОНЕРНОЕ ОБЩЕСТВО") > 0
Или Найти(НаименованиеВРег, " ПАО ") > 0
Или Лев(НаименованиеВРег, 4) = "ПАО " Тогда
Возврат "ПАО";
ИначеЕсли Найти(НаименованиеВРег, "ИНДИВИДУАЛЬНЫЙ ПРЕДПРИНИМАТЕЛЬ") > 0
Или Найти(НаименованиеВРег, " ИП ") > 0
Или Лев(НаименованиеВРег, 3) = "ИП " Тогда
Возврат "ИП";
Иначе
Возврат "Прочее / Не определено";
КонецЕсли;
КонецФункции
Этот метод работает наиболее эффективно, когда в вашей информационной системе подключен сервис «1С:Контрагент». Данный сервис автоматически загружает официальные и стандартизированные наименования напрямую из ЕГРЮЛ/ЕГРИП при вводе ИНН. В таком случае структура названий полностью однородна, что исключает ошибки распознавания при программном парсинге строк.
Для более глубокой автоматизации вы можете объединить Способ 3 и Способ 4: написать обработку, которая один раз автоматически распарсит наименования всех существующих контрагентов в базе и запишет полученные ОПФ в созданный дополнительный реквизит БСП, избавив бухгалтеров от ручной работы.