Почему в 1С:Комплексная автоматизация 2.4 в книге покупок номер счета-фактуры выводится не полностью?

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

При работе в конфигурации 1С:Комплексная автоматизация 2.4 (КА 2.4) или 1С:ERP пользователи часто сталкиваются с ситуацией, когда в отчете «Книга покупок» номера входящих счетов-фактур отображаются в сокращенном виде. Например, вместо номера кв02-000035 система выводит просто 35, а номер 000000055 превращается в 55. Рассмотрим подробно, почему это происходит, чем это грозит организации и как исправить данное поведение системы.

Анализ проблемы: почему 1С сокращает номера?

Проанализируем внутренние механизмы платформы. В типовых конфигурациях 1С существует универсальный механизм формирования номеров для печати. Его задача — сделать номер «красивым» для человеческого восприятия, убрав техническую информацию. К такой информации система относит:

  1. Префиксы организации: Буквенные обозначения, которые добавляются в базе для разделения учета по разным юридическим лицам.
  2. Префиксы информационной базы: Используются в распределенных базах данных для исключения дублирования номеров.
  3. Лидирующие нули: Служебные символы, дополняющие номер до определенной длины для корректной сортировки в базе данных.

Выясним причину ошибки: для внутренних документов (например, созданных вами реализаций) такое поведение оправдано. Однако для входящих документов (счета-фактуры полученные) номер является строковым реквизитом поставщика. Система 1С:КА 2.4 по ошибке применяет к этому строковому полю те же правила очистки, что и к своим внутренним номерам. Если в номере контрагента встречается дефис (-), 1С считает всё, что до него, префиксом и безжалостно удаляет.

Юридические риски: позиция налоговой службы и законодательства

Разберем ситуацию с точки зрения бухгалтера. Согласно Постановлению Правительства №1137, в графе 2 книги покупок должен быть указан номер счета-фактуры именно в том виде, в котором его выставил продавец. Любое расхождение может стать причиной проблем:

Таким образом, требование бухгалтеров видеть «полный номер, как в первичке» является абсолютно законным и обоснованным.

Техническое решение: корректировка программного кода

Посмотрим на пример реализации исправления. В конфигурациях на базе 1С:ERP и КА 2.4 за вывод номера отвечает общая функция префиксации. Чаще всего это метод ПолучитьНомерНаПечать() в различных программных модулях. Чтобы вернуть полный номер, нам необходимо вмешаться в процесс обработки строки.

Рассмотрим самый правильный способ решения — использование расширения конфигурации. Это позволит не снимать основную конфигурацию с поддержки и сохранить возможность легкого обновления.

Нам необходимо перехватить выполнение функции в модуле ПрефиксацияОбъектовКлиентСервер или в специализированных процедурах печати регламентированных отчетов. Проанализируем пример кода, который возвращает «сырое» значение номера без очистки:


&Вместо("ПолучитьНомерНаПечать")
Функция ИмяРасширения_ПолучитьНомерНаПечать(Знач Номер, УдалитьПрефиксИнформационнойБазы = Ложь, УдалитьПользовательскийПрефикс = Ложь)
    
    // Если мы понимаем, что контекст вызова относится к входящему счету-фактуре, 
    // возвращаем номер без преобразований.
    // В простейшем случае для тестирования можно просто вернуть исходный параметр:
    
    Возврат Номер; 
    
КонецФункции

Однако, просто заменить функцию во всей системе — плохое решение, так как тогда ваши внутренние документы (заказы, реализации) тоже станут «некрасивыми» (с нулями и префиксами). Правильный подход — проанализировать стек вызова или модифицировать конкретный запрос в схеме компоновки данных (СКД) отчета «Книга покупок».

Пошаговая инструкция по исправлению в СКД отчета

  1. Откроем отчет КнигаПокупок в конфигураторе.
  2. Найдем основную схему компоновки данных.
  3. Выясним, где формируется поле НомерСчетаФактуры. Обычно там используется выражение типа ПрефиксацияОбъектов.НомерНаПечать(Номер).
  4. Заменим это выражение на прямое обращение к полю Номер (или НомерВходящегоДокумента, в зависимости от версии метаданных).

Важный момент: в 1С:КА 2.4 для документов типа СчетФактураПолученный номер хранится в стандартном реквизите Номер, но заполняется он вручную из данных поставщика. Именно поэтому типовой алгоритм «очистки» префиксов для него вреден.

Как проверить результат?

После внесения изменений в расширение или отчет, выполним следующие действия:

Резюме: Проблема сокращения номеров в 1С:КА 2.4 является следствием избыточной «помощи» системы в форматировании строк. Для входящих документов поставщиков эту помощь следует отключать программно, так как штатных настроек (флажков в интерфейсе) для этого не предусмотрено. Использование расширения — наиболее безопасный и эффективный метод решения данной задачи.

← На главную