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

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

При разработке или доработке печатных форм в 1С часто возникает задача привести номер документа к «чистому» виду. Стандартный номер в системе 1С:Комплексная автоматизация (КА2) обычно выглядит как 00АА-000101, где присутствуют префиксы информационной базы, префиксы организации и ведущие нули. В данной статье мы разберем, как корректно очистить номер для вывода в печатную форму, чтобы он выглядел просто как 101 или 45.

Использование штатных механизмов БСП

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

Рекомендуется использовать функции общего модуля ПрефиксацияОбъектовКлиентСервер. Основная процедура, которая позволяет отсечь префиксы информационной базы и организации — это УдалитьПрефиксыИнформационнойБазы.

Разберем, как это работает на практике. При формировании печатной формы в модуле менеджера или внешнем модуле, вы можете вызвать эту функцию перед выводом номера в макет:


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

После этого метода мы получим строку вида 000101. Это уже очищенный от префиксов номер, но в нем все еще остаются ведущие нули. Если ваша бизнес-задача требует их удаления, переходим к следующему шагу.

Как удалить ведущие нули из номера

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

  1. Математический метод (приведение к числу): Самый простой и эффективный способ. Если вы уверены, что номер документа всегда содержит только цифры (после удаления префиксов), можно воспользоваться функцией Число(). При преобразовании строки в число ведущие нули автоматически исчезают.
  2. Алгоритмический метод (цикл): Если вы хотите сохранить строковый тип данных, можно воспользоваться циклом, который будет отсекать символ '0' до тех пор, пока первым символом не станет значимая цифра.

Посмотрим на пример реализации циклического удаления нулей:


Функция ПолучитьНомерБезНулей(НомерНаПечать)
    Пока Лев(НомерНаПечать, 1) = "0" Цикл
        НомерНаПечать = Сред(НомерНаПечать, 2);
    КонецЦикла;
    Возврат НомерНаПечать;
КонецФункции

Этот подход позволяет гибко управлять результатом, однако стоит помнить, что если номер содержит буквы или спецсимволы, такие алгоритмы могут потребовать доработки.

Важные рекомендации при работе с номерами

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

Используя комбинацию методов ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИнформационнойБазы для удаления префиксов и последующее приведение результата к типу Число, вы получите корректное отображение номера в любом документе системы 1С:Комплексная автоматизация.

← На главную