К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как увеличить длину кода в 1С

Как увеличить длину кода справочника или документа в 1С через конфигуратор, когда появляются коды с буквами. Риски, проверка результата, типичные ошибки.

Сообщение вида «Код не является уникальным» или появление кодов с буквами вроде «00000000A» — типичный признак того, что в справочнике закончились свободные номера в пределах заданной длины кода. Это штатная ситуация для баз, где номенклатура, контрагенты или сотрудники заводятся годами и количество элементов переваливает за несколько десятков тысяч.

Длина кода — это свойство объекта конфигурации (справочника, документа, плана счетов и других), которое задаётся разработчиком при создании объекта. По умолчанию платформа часто предлагает 9 или 11 символов, но в типовых конфигурациях значения могут отличаться. Когда количество элементов приближается к пределу, платформа начинает использовать буквенные символы в кодах, что ломает сортировку, нумерацию и обмены.

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

Когда требуется увеличивать длину кода

Основной симптом — коды перестают быть чисто числовыми. Платформа 1С при автонумерации сначала использует цифры, а когда они исчерпаны, переходит на буквенно-цифровые комбинации. В списке справочника это выглядит как «000099998», «000099999», затем «0000A0000» или похожие варианты в зависимости от настроек.

Второй признак — ошибки при создании элементов: система не может подобрать уникальный код, особенно если автонумерация отключена или коды присваиваются из внешней системы. Третья ситуация — плановая: вы заранее видите, что элементов скоро станет больше, чем позволяет текущая длина, и хотите расширить её до появления проблем.

Буквы в кодахЧисловое пространство исчерпано

Отсортируйте справочник по коду и посмотрите последние значения

Ошибка уникальностиПлатформа не может выдать новый код

Проверьте, включена ли автонумерация и не заняты ли все комбинации

Длина кода в свойствахТекущий предел объекта

Откройте объект в конфигураторе и посмотрите поле «Длина кода»

Что проверить перед изменением

Первое и обязательное условие — наличие резервной копии. Изменение длины кода — это реструктуризация таблиц базы данных, и при сбое (отключение питания, разрыв соединения с сервером СУБД) база может остаться в повреждённом состоянии. Для файловой базы достаточно скопировать файл 1Cv8.1CD, для клиент-серверной — сделать выгрузку в dt или штатный бэкап средствами СУБД.

Второе — монопольный доступ. Обновление конфигурации базы данных с реструктуризацией требует, чтобы все пользователи вышли из программы, а фоновые задания и сеансы были завершены. В клиент-серверном варианте проверьте консоль кластера на предмет «зависших» сеансов.

Третье — внешние зависимости. Если база обменивается данными с другими конфигурациями, сайтом, складскими или кассовыми программами, уточните, какая длина кода ожидается на той стороне. Увеличение кода в 1С без согласования с приёмником приведёт к ошибкам обмена или обрезанию значений.

Пошаговое увеличение длины кода в конфигураторе

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

Порядок действий
  1. 1
    Сделайте резервную копию базы и завершите все сеансы пользователей
  2. 2
    Откройте конфигуратор и разблокируйте конфигурацию, если она на поддержке (потребуется включить возможность изменения)
  3. 3
    В дереве конфигурации найдите нужный объект, например Справочники → Номенклатура
  4. 4
    Откройте палитру свойств объекта (правый клик → Свойства)
  5. 5
    Найдите поле «Длина кода» и увеличьте значение, например с 9 до 11
  6. 6
    Сохраните конфигурацию (Ctrl+S)
  7. 7
    Выполните обновление конфигурации базы данных (F7 или меню Конфигурация → Обновить конфигурацию базы данных)
  8. 8
    Подтвердите реструктуризацию в окне со списком изменений и дождитесь завершения

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

Если конфигурация типовая и находится на полной поддержке, изменение длины кода снимет объект с поддержки. Это не критично, но усложнит будущие обновления: при обновлении платформа будет спрашивать, как поступить с изменённым объектом. Взвесьте, нельзя ли обойтись без изменения — об этом ниже.

Особенности для документов и нумераторов

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

Если номера документов уходят в буквы из-за обменов (каждый узел РИБ добавляет свой префикс), сначала проверьте настройки префиксов. Иногда проблему решает корректная настройка префиксации, а не увеличение длины.

Проверка результата после изменения

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

Контрольные точки

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

Создание нового элемента
Норма

Код присваивается автоматически, без букв и ошибок уникальности

Тревожный признак

Ошибка записи или код снова содержит буквы

Старые элементы
Норма

Открываются и редактируются, коды дополнены нулями

Тревожный признак

Элементы не открываются или коды отображаются обрезанными

Отчёты и печатные формы
Норма

Коды и номера выводятся полностью

Тревожный признак

Значения обрезаются в макетах с фиксированной шириной

Обмены данными
Норма

Синхронизация проходит без ошибок формата

Тревожный признак

Ошибки преобразования или отказ приёмника

Дополнительно полезно запустить тестирование и исправление информационной базы (для файлового варианта) в режиме проверки ссылочной целостности — это подтвердит, что реструктуризация прошла чисто и связи между объектами не нарушены.

Альтернативы увеличению длины кода

Не всегда нужно менять конфигурацию. Если типовую конфигурацию важно держать на полной поддержке, рассмотрите другие варианты.

Сравнение вариантов

Увеличение длины кода

Радикально решает проблему, но снимает объект с поддержки и требует реструктуризации

Очистка неиспользуемых элементов

Удаление помеченных объектов освобождает коды; подходит, если справочник раздут мусором, но эффект временный

Перенумерация с освобождением диапазонов

Помогает при «дырах» в нумерации; требует аккуратности, чтобы не сломать ссылки из внешних систем

Отказ от использования кода в обменах

Переход на GUID как ключ синхронизации снимает зависимость от длины кода, но требует доработки обменов

Выбор зависит от причины проблемы. Если элементов объективно много и они все нужны — увеличение длины единственный устойчивый вариант. Если справочник забит дублями и устаревшими позициями, начните с чистки: она может отодвинуть проблему на годы.

Типичные ошибки и ограничения

Типичные ошибки
01
Изменение без резервной копии — при сбое реструктуризации база остаётся неработоспособной
02
Увеличение длины только в одной базе при работающем обмене — приёмник отвергает данные или обрезает коды
03
Прерывание процесса реструктуризации кнопкой «Отмена» или закрытием конфигуратора — повреждение таблиц
04
Попытка уменьшить длину кода обратно при заполненном справочнике — ошибки реструктуризации из-за непомещающихся значений
05
Игнорирование внешних отчётов и обработок, где код объявлен строкой фиксированной длины — после изменения они работают некорректно

Отдельное ограничение: платформа позволяет безболезненно только увеличивать длину. Уменьшение возможно лишь если все существующие значения помещаются в новую длину, иначе реструктуризация завершится ошибкой. На практике уменьшать длину кода почти никогда не требуется и не рекомендуется.

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

Удобный приём — увеличивать длину кода с запасом, например сразу до 11–13 символов, даже если текущей нехватки хватило бы на один разряд. Повторная реструктуризация большой таблицы обходится дороже, чем один раз заложить запас на годы вперёд.
ПЗ
Практическое замечание

Частые вопросы

Почему в кодах справочника появились буквы?

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

Можно ли увеличить длину кода без снятия конфигурации с поддержки?

Нет, изменение длины кода — это правка объекта конфигурации, которая требует включения возможности изменений. Объект будет помечен как изменённый, и при обновлениях потребуется ручное сопоставление. Альтернатива — решить проблему данными: чисткой и перенумерацией.

Что будет со старыми кодами после увеличения длины?

Существующие значения сохраняются и дополняются лидирующими нулями до новой длины. Ссылки между объектами не нарушаются, так как внутренние идентификаторы не меняются.

Сколько времени занимает реструктуризация?

Зависит от размера таблицы и типа базы. На справочнике в несколько тысяч элементов — секунды или минуты; на таблицах с миллионами записей в файловой базе процесс может занять часы. Планируйте операцию на нерабочее время.

Можно ли потом уменьшить длину кода обратно?

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

Нужно ли менять длину кода в обеих базах при обмене?

Да, если код участвует в сопоставлении объектов. Длину следует согласованно увеличить во всех базах-участницах обмена, иначе возможны ошибки преобразования и обрезание значений на принимающей стороне.

Итог

Что важно запомнить

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