Вопрос настройки нумерации документов в 1С:Управление торговлей 11.5 является одним из самых часто задаваемых среди пользователей и администраторов системы. Часто возникает потребность привести номер документа к "простому" виду, например, вместо стандартного АЦ00-000001 видеть просто 1. В рамках данной статьи мы подробно разберем, как устроена система нумерации, почему платформа навязывает определенный формат и какими способами можно добиться желаемого результата.
Прежде чем приступать к настройкам, нам необходимо понять внутреннюю логику работы платформы 1С:Предприятие 8.3. В большинстве типовых конфигураций, включая УТ 11.5, реквизит Номер документа имеет строковый тип данных с фиксированной длиной (обычно 11 символов). Это сделано не случайно, а для обеспечения корректной сортировки в списках.
Проанализируем ситуацию: если бы номера были просто числами разной длины (например, 1, 2, 10, 100), то при строковой сортировке система выстроила бы их в следующем порядке: 1, 10, 100, 2. Чтобы избежать этого хаоса и сохранить хронологическую последовательность, платформа дополняет номер лидирующими нулями слева. Таким образом, номера превращаются в 00000000001, 00000000002 и 00000000010, что позволяет строковому индексу работать предсказуемо.
Рассмотрим, как работает автоинкремент. Когда вы создаете новый документ, система выполняет следующие действия:
В современных версиях 1С:УТ 11.5 итоговый номер формируется из трех составляющих: префикс организации, префикс информационной базы и собственно номер. Выясним причину появления буквенных символов в номере:
Если в настройках оба префикса пусты, 1С всё равно резервирует под них место в строке номера, что визуально выглядит как дополнительные нули или дефисы. Полностью отключить этот механизм "галочкой" в пользовательском интерфейсе невозможно, так как это заложено в программный код логики Объект.УстановитьНовыйНомер().
Если вам необходимо, чтобы нумерация началась с конкретного значения без префиксов, мы можем воспользоваться методом ручной корректировки первого документа в периоде (обычно это начало года). Рассмотрим этот процесс по шагам:
1. Откройте нужный вам документ (например, Заказ клиента) или создайте новый.
2. По умолчанию поле Номер в управляемых формах недоступно для редактирования. Чтобы его изменить, перейдите в меню "Еще" — "Разрешить редактирование реквизитов". Система выдаст предупреждение о том, что изменение ключевых полей может быть опасным — подтвердите действие.
3. Введите номер вручную. Если вы хотите номер 1, введите его. Однако помните: если вы просто введете 1, система при создании следующего документа может снова добавить нули, так как общая длина номера должна составлять 11 символов.
4. Чтобы система "подхватила" вашу логику, рекомендуется использовать формат, который заполняет всю длину, но не содержит букв, если они вам не нужны. Например, 00000000001. Если же вы принципиально хотите видеть короткий номер без нулей на печати, ручная правка в базе поможет лишь временно, так как автонумерация платформы всегда стремится к фиксированной длине.
Важный момент: если вы измените номер на 1, а в базе уже есть документ с номером 00000000001, система выдаст ошибку уникальности. Поэтому за уникальностью при ручном вводе придется следить самостоятельно.
Для тех, кто хочет полностью избавиться от лидирующих нулей в интерфейсе и при этом не снимать конфигурацию с поддержки, лучшим решением будет использование Расширения — для этого подойдёт расширение для автоматической настройки нумерации и префиксов в 1С. Мы можем перехватить событие установки нового номера и модифицировать его программно.
Рассмотрим пример кода, который можно разместить в модуле расширения. Мы будем использовать подписку на событие ПриУстановкеНовогоНомера. Это позволит нам "отрезать" лишние префиксы и нули непосредственно в момент генерации номера системой.
&После("ПриУстановкеНовогоНомера")
Процедура Расш1_ПриУстановкеНовогоНомера(Источник, СтандартнаяОбработка, Префикс)
// Убираем префиксацию организации и базы, если нужно
Префикс = "";
// После того как платформа сгенерирует номер, мы можем его изменить
// Но помните, что платформа вызовет этот метод ДО записи в базу
КонецПроцедуры
Однако более эффективным методом для визуального отображения коротких номеров является использование расширения для изменения функции печати или отображения в списке. Если же мы физически сократим длину номера в базе до 1-2 символов, мы очень быстро столкнемся с проблемой исчерпания номеров и нарушением уникальности.
Прежде чем внедрять "красивую" нумерацию без нулей, проанализируем возможные последствия:
99), а следующий документ создадите с номером 00000000100, система может "запутаться". При создании нового документа платформа ищет максимальный номер. Для нее строка 99 может оказаться больше, чем 00000000100, и она попытается создать следующий номер на основе 99, что приведет к ошибке или непредсказуемым результатам.Если ваша задача — просто избавиться от букв (например, АЦ), но оставить автоматическую нумерацию, сделайте следующее:
00000000001. Все последующие документы будут получать номера 00000000002, 00000000003 и так далее.Таким образом, мы сохраним стабильность работы платформы и добьемся отсутствия лишних буквенных обозначений. Лидирующие нули останутся в базе данных для корректной сортировки, но при печати во многих типовых формах 1С предусмотрены алгоритмы, которые автоматически обрезают эти нули, оставляя в печатной форме только значащие цифры.
Подводя итог, отметим: типовыми настройками ("галочками") полностью убрать лидирующие нули нельзя, так как это базовый принцип работы платформы со строковыми номерами. Оптимальный путь — это комбинированный подход: использование пустых префиксов в настройках организаций и ручная установка начального номера для выравнивания последовательности. Если же требования бизнеса жестко диктуют отсутствие нулей даже в интерфейсе программы, следует обратиться к механизму расширений, чтобы точечно изменить алгоритм формирования номера, не затрагивая ядро конфигурации.