Как убрать префикс и лидирующие нули из номера документа в печатной форме 1С?

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

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

Анализ механизмов формирования номера в 1С

Прежде чем приступать к правке кода, давайте разберем, из чего состоит номер в современных конфигурациях 1С (ERP, УТ 11, КА 2, БП 3.0). Системный номер документа обычно включает в себя префикс информационной базы, префикс организации и лидирующие нули для обеспечения уникальности и правильной сортировки в базе данных. Например, номер МС00-000015 содержит префикс МС, префикс базы 00 и ряд нулей перед значимой частью «15».

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

Способ 1: Использование стандартных функций БСП

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

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


// Пример использования функции БСП для получения номера без префиксов
ЧистыйНомер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(Объект.Номер, Истина, Истина);

В данном случае, передавая Истина во второй и третий параметры, мы принудительно заставляем систему отсечь все префиксы. Лидирующие нули функция ПолучитьНомерНаПечать обычно убирает автоматически, превращая 000000015 в 15.

Способ 2: Использование механизмов расширения (рекомендуемый метод)

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

Разберем алгоритм создания расширения для этой задачи: при обслуживании нескольких информационных баз с доработками применяется программа для автоматического обновления и архивирования 1С в «тихом» режиме.

  1. Создадим новое расширение в конфигураторе.
  2. Добавим в расширение документ, печатную форму которого нужно изменить.
  3. Найдем процедуру формирования параметров печати.
  4. Используем аннотацию &Вместо или &После, чтобы изменить значение параметра Номер.

Проанализируем пример кода в расширении, где мы перехватываем структуру данных перед ее передачей в макет:


&После("ЗаполнитьРеквизитыШапкиПечатнойФормы")
Процедура Расш_ЗаполнитьРеквизитыШапкиПечатнойФормы(ДанныеШапки, ПараметрыПечати)
    // Переопределяем номер в структуре данных, которая пойдет в макет
    ДанныеШапки.Номер = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДанныеШапки.Номер, Истина, Истина);
КонецПроцедуры

Этот метод хорош тем, что он не меняет номер в самой базе данных. В журнале документов бухгалтер по-прежнему будет видеть полные номера с префиксами, что важно для поиска и порядка, а в печатном листе покупатель увидит краткий номер. Для конфигурации УТ 11.5 можно использовать готовое расширение для печати документов без префикса информационной базы.

Способ 3: Настройки в типовых конфигурациях (УНФ и БП)

В некоторых программах, например в 1С:Управление нашей фирмой (УНФ), разработчики предусмотрели штатную возможность управления номерами. Разберем, где это находится:

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

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

Способ 4: Внешняя печатная форма

Если вы не хотите вмешиваться в код конфигурации даже через расширения, идеальным вариантом будет создание внешней печатной формы (ВПФ). Это отдельный файл .epf, который регистрируется в справочнике «Дополнительные отчеты и обработки».

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


// В модуле объекта внешней печатной формы
ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначенияКлиентСервер.ПолучитьНомерНаПечать(Шапка.Номер, Истина, Истина);

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

Важные замечания и юридические риски

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

  1. Риск возникновения дублей: В базе могут существовать документы от разных организаций с одинаковыми номерами, но разными префиксами (например, ФР-1 и МС-1). При удалении префикса на печати оба документа превратятся в №1. С точки зрения налоговой инспекции, счета-фактуры должны иметь уникальную нумерацию.
  2. Корректировочные счета-фактуры: Принудительная привязка номера СФ к номеру реализации может вызвать конфликт при создании корректировок. Согласно законодательству, корректировочные документы должны иметь свою хронологическую последовательность.
  3. Требования ФНС: Налоговые органы допускают наличие префиксов в печатных формах. Более того, наличие префикса организации официально разрешено и помогает идентифицировать обособленные подразделения.

Подведем итог: Самый надежный и корректный способ убрать префикс и нули — это использование функций БСП ПолучитьНомерНаПечать внутри расширения или внешней печатной формы. Это позволяет сохранить целостность данных в базе и при этом удовлетворить требования пользователей по внешнему виду документов.

← На главную