Зачем нужны реквизиты РасширенноеПредставлениеИНН и РасширенноеПредставлениеКПП в 1С:Бухгалтерии 3.0

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

При разработке правил переноса данных или анализе структуры типовой конфигурации 1С:Бухгалтерия предприятия 3.0 разработчики часто замечают, что в справочниках Контрагенты и Организации помимо стандартных реквизитов ИНН и КПП присутствуют дополнительные поля: РасширенноеПредставлениеИНН, РасширенноеПредставлениеКПП, а также булевы флаги ИННВведенКорректно и КППВведенКорректно. Разберем подробно, для чего реализован этот механизм, как формируются эти данные и как правильно работать с ними при загрузке информации из внешних баз.

Назначение механизма и оптимизация производительности

В типовых конфигурациях проверка ИНН и КПП включает в себя строгие алгоритмические проверки:

  1. Расчет контрольных сумм по специальным весовым коэффициентам (для 10-значного ИНН юридических лиц и 12-значного ИНН физических лиц или индивидуальных предпринимателей).
  2. Проверка длины строки и допустимости символов.
  3. Проверка формата и структуры КПП (9 знаков, допустимые цифровые и буквенные комбинации).

Если бы конфигурация рассчитывала эти проверки «на лету» в динамическом списке справочника Контрагенты при каждом обновлении или скроллинге экрана, производительность системы существенно снизилась бы. Чтобы избежать ресурсоемких вычислений в запросах динамических списков, разработчики платформенных решений применили кэширование результатов проверки непосредственно в реквизитах объекта.

Как формируются расширенные представления в типовом коде

Формирование расширенных представлений происходит автоматически в обработчике ПередЗаписью модуля объекта справочника. Рассмотрим общую логику заполнения этих полей:

  1. Если номер прошел проверку формата и контрольной суммы, в поле РасширенноеПредставлениеИНН записывается сам номер, а реквизит ИННВведенКорректно принимает значение Истина.
  2. Если обнаружена ошибка (неверное количество знаков, ошибка в контрольной сумме или некорректный символ), в поле РасширенноеПредставлениеИНН формируется специальный текст, включающий сам введенный номер и пояснение ошибки. При этом признак ИННВведенКорректно устанавливается в Ложь.

Посмотрим на пример логики формирования строки:


Объект.РасширенноеПредставлениеИНН = СтрШаблон(ТекстПредставленияИННКПП, Объект.ИНН, ТекстОшибкиИНН);

В форме списка контрагентов колонка отображения ИНН привязана именно к полю РасширенноеПредставлениеИНН. Если ИННВведенКорректно = Ложь, срабатывает условное оформление динамического списка, и некорректный номер подсвечивается красным цветом с выводом подсказки прямо в строке.

Особенности работы при переносе и загрузке данных

При написании правил выгрузки данных (например, через Конвертацию данных или произвольный обмен) разработчики часто сталкиваются с тем, что после пакетной загрузки контрагентов колонки ИНН и КПП в списке остаются пустыми, хотя внутри карточки данные заполнены. Проанализируем причину такого поведения.

Когда загрузка объектов выполняется с установленным флагом ОбменДанными.Загрузка = Истина, события модуля объекта (включая обработчик ПередЗаписью) не выполняются. В итоге реквизиты РасширенноеПредставлениеИНН и РасширенноеПредставлениеКПП остаются незаполненными, а признаки корректности — равными Ложь.

Выделим основные способы решения этой задачи при переносе:

  1. Заполнение представлений в обработчиках загрузки: В обработчике «После загрузки» или «Перед записью объекта» можно явно приравнять расширенное представление к значению ИНН, если дополнительная валидация не требуется:
    
    Объект.РасширенноеПредставлениеИНН = Объект.ИНН;
    Объект.РасширенноеПредставлениеКПП = Объект.КПП;
    Объект.ИННВведенКорректно = Истина;
    Объект.КППВведенКорректно = Истина;
    
  2. Запись в обычном режиме: Если объем данных небольшой, можно выполнять запись объектов с ОбменДанными.Загрузка = Ложь, чтобы типовые механизмы конфигурации самостоятельно рассчитали и заполнили все представления и флаги.
  3. Групповое переформирование представлений: После завершения импорта выполнить групповую обработку справочника Контрагенты, вызывая типовые экспортные процедуры проверки и перезаписывая элементы.

Учет специфики иностранных контрагентов

Выясним, как механизм работает с нерезидентами. Алгоритмы проверки контрольных чисел ориентированы на требования законодательства РФ. Если у контрагента указана страна регистрации, отличная от Российской Федерации, стандартная проверка контрольной суммы РФ отключается. В этом случае в расширенное представление просто копируется значение национального налогового номера (например, БИН для Казахстана или УНП для Беларуси), а флаг корректности устанавливается в Истина при отсутствии синтаксических ограничений.

← На главную