Как заставить 1С:Управление торговлей 11 принять 11-значный ИНН Республики Абхазия при подключении оборудования

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Налоговый учет Торговля и дистрибуция
← На главную

При использовании типовых российских конфигураций 1С, таких как Управление торговлей 11, ERP или Комплексная автоматизация, пользователи из стран ближнего зарубежья часто сталкиваются с жесткой валидацией реквизитов. Одной из наиболее острых проблем является ввод ИНН Республики Абхазия, который состоит из 11 цифр. В то же время российские алгоритмы проверки ожидают строго 10 цифр для юридических лиц или 12 цифр для физических лиц (ИП). Особую сложность ситуация приобретает при попытке подключить принтер чеков или фискальный регистратор, так как система блокирует работу оборудования из-за «некорректного» номера. В рамках этой статьи мы подробно разберем, как обойти это ограничение на разных уровнях системы.

Анализируем причину возникновения ошибки

Для начала проанализируем, где именно в системе происходит проверка. В типовых конфигурациях на базе 1С:Предприятие 8.3 за валидацию ИНН отвечает специализированный программный код, расположенный в общих модулях. Чаще всего это функция ИННСоответствуетТребованиям. Если мы заглянем в программный код, то увидим примерно следующую логику:


Если ЭтоЮридическоеЛицо И ДлинаИНН <> 10 Тогда 
    СоответствуетТребованиям = Ложь; 
    ТекстСообщения = НСтр("ru = 'ИНН юридического лица должен состоять из 10 цифр.'"); 
ИначеЕсли НЕ ЭтоЮридическоеЛицо И ДлинаИНН <> 12 Тогда 
    СоответствуетТребованиям = Ложь; 
    ТекстСообщения = НСтр("ru = 'ИНН физического лица должен состоять из 12 цифр.'"); 
КонецЕсли;

Как мы видим, 11-значный формат просто не предусмотрен. Когда вы пытаетесь подключить торговое оборудование, Библиотека подключаемого оборудования (БПО) запрашивает данные организации. Если проверка ИНН возвращает Ложь, программный интерфейс выдает ошибку и блокирует дальнейшие действия с принтером или кассой.

Способ 1: Корректная настройка страны регистрации

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

Разберем по шагам, как изменить страну регистрации, если поле недоступно в обычном интерфейсе:

  1. Откроем меню НСИ и администрирование — Обслуживание — Корректировка данных.
  2. Выберем инструмент Групповое изменение реквизитов.
  3. В поле «Изменять» выберем тип объекта Организация.
  4. Нажмем кнопку «Дополнительные параметры» и убедимся, что установлена галочка «Показывать служебные реквизиты».
  5. Найдем в списке реквизит Страна регистрации и выберем значение Абхазия (код страны должен быть 042).
  6. Нажмем кнопку «Изменить реквизиты».

После этого система во многих местах перестанет требовать соответствия ИНН российским стандартам. Однако, как показывает практика, для работы с торговым оборудованием этого не всегда достаточно, так как в модулях фискализации проверка может быть прописана более жестко.

Способ 2: Программный обход проверки через расширение

Если изменение страны не помогло и база по-прежнему «ругается» на 11 цифр при подключении принтера, нам необходимо вмешаться в логику проверки. Рассмотрим, как это сделать правильно, не снимая конфигурацию с поддержки, — с помощью расширения.

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


&Вместо("ИННСоответствуетТребованиям")
Функция мо_ИННСоответствуетТребованиям(Значение, ЭтоЮридическоеЛицо = Истина, СтранаРегистрации = Неопределено)
    
    // Если страна — Абхазия, проверяем только длину (11 символов)
    Если ЗначениеЗаполнено(СтранаРегистрации) И СтранаРегистрации.Код = "042" Тогда
        Если СтрДлина(СокрЛП(Значение)) = 11 Тогда
            Возврат Истина;
        КонецЕсли;
    КонецЕсли;
    
    // Для остальных случаев вызываем стандартную проверку
    Возврат ПродолжитьВызов(Значение, ЭтоЮридическоеЛицо, СтранаРегистрации);
    
КонецФункции

Этот код позволяет системе игнорировать стандартные алгоритмы, если длина номера составляет 11 цифр и указана верная страна. Это решит проблему на уровне интерфейса 1С.

Особенности работы с принтерами чеков и драйверами

Выясним причину, почему проблема всплывает именно при установке принтера чеков. Даже если 1С «проглотила» 11 цифр, ошибка может возникнуть на этапе передачи данных в драйвер. Российские драйверы (например, АТОЛ или Штрих-М) также имеют встроенные механизмы проверки. Если вы используете принтер в режиме фискального регистратора, драйвер может просто не принять 11-значный ИНН в поле для тега 1018 (ИНН организации).

В такой ситуации проанализируем следующие варианты решения:

  1. Использование принтера документов: Если по законодательству Абхазии вам не требуется фискализация по российским протоколам (ФФД), в 1С следует подключать устройство не как «ККТ с передачей данных», а как Принтер чеков (Windows). В этом случае данные передаются как обычный текст, и жесткая проверка ИНН отсутствует.
  2. Настройка шаблона чека: В настройках подключаемого оборудования можно отредактировать шаблон чека. Рассмотрим возможность вывода ИНН не через фискальный параметр, а как обычную строку текста в шапке чека. Для этого в коде модуля МенеджерОборудованияВызовСервера нужно найти формирование параметров печати и заменить тип передачи данных для ИНН.

Резюме по решению проблемы

Подводя итог, отметим, что решение задачи с 11-значным ИНН требует комплексного подхода. Сначала мы пробуем изменить Страну регистрации через групповую обработку (так как реквизит часто скрыт). Если это не снимает ошибку при подключении торгового оборудования, мы используем механизм расширений для корректировки функции ИННСоответствуетТребованиям. В самом крайнем случае, если драйвер оборудования отказывается принимать нестандартный ИНН, мы переводим устройство в режим печати текстовых документов, что полностью снимает ограничения на формат передаваемых данных.

Помните, что при обновлении конфигурации ваше расширение сохранит работоспособность, что делает этот метод наиболее предпочтительным для стабильной работы системы в долгосрочной перспективе.

← На главную