Увеличение длины кода справочников и документов в 1С
Содержание
Длина кода справочника задаётся в Конфигураторе — это свойство Длина кода в палитре свойств справочника. У документов отдельного «кода» нет, его роль играет номер, а длину задаёт свойство Длина номера. Чтобы увеличить код в 1С 8.3, нужно поднять это число и обновить конфигурацию
базы данных.
Операция простая на пустой базе и чуть сложнее на рабочей: обновление структуры требует монопольного доступа, а в типовых конфигурациях справочник ещё и защищён поддержкой. Ниже — порядок действий для обычной конфигурации и для типовой, что происходит с индексами и как не сломать обмен между базами.
Где хранится длина кода и как узнать текущую
У каждого справочника есть служебное поле «Код» — короткий идентификатор элемента. Его параметры лежат в свойствах самого справочника, а не в реквизитах:
- 🔢
Длина кода— сколько символов вмещает поле. По умолчанию в типовых часто 9 или 11. - 🔤
Тип кода—СтрокаилиЧисло. От него зависит и предельная длина, и порядок сортировки. - 📐
Серии кодов— нумерация сквозная по всему справочнику или в пределах подчинения владельцу/группе. - ✅
Контроль уникальностииАвтонумерация— как платформа выдаёт и проверяет новые коды.
Чтобы посмотреть текущее значение в работающей базе: откройте любой элемент справочника и взгляните на поле «Код». Если коды упёрлись в предел и новые элементы получают тот же номер или нумерация «съехала» — длины не хватает. Ещё один признак: автонумерация выдаёт код, который визуально короче ожидаемого, или повторяет уже занятый.
Точное значение видно только в Конфигураторе. Откройте дерево конфигурации, разверните ветку Справочники, выделите нужный справочник и посмотрите палитру свойств — группа Данные, строка Длина кода. Там же рядом Тип кода.
Строковый код сортируется лексикографически: «10» идёт раньше «9». Числовой сортируется как число. Если автонумерация строковых кодов выглядит «не по порядку» — причина в типе, а не в длине.
Понять, упёрлись ли вы в предел, помогает простой расчёт. При числовом коде длиной 5 максимум — 99999, то есть около ста тысяч элементов на одну серию. Для крупной номенклатуры этого мало, и как только серия исчерпана, платформе некуда писать новый код. Именно это обычно и приводит к запросу «как увеличить код в 1С».
Как увеличить длину кода справочника в Конфигураторе
Порядок для обычной (не типовой) конфигурации или собственной разработки:
- Сделайте резервную копию базы
(выгрузка в
.dtчерезАдминистрирование → Выгрузить информационную базуили копия средствами СУБД). - Откройте Конфигуратор. Убедитесь, что в базе нет активных пользователей — обновление структуры потребует монопольного доступа.
- В дереве конфигурации найдите ветку
Справочникии выделите нужный справочник. - В палитре свойств откройте группу
Данныеи увеличьте значениеДлина кода— например, с9до15. - При необходимости смените
Тип коданаСтрока: строковый код допускает заметно большую длину, чем числовой, и в него можно вписать буквы и артикулы. - Сохраните изменения и выполните
Конфигурация → Обновить конфигурацию базы данных(горячая клавишаF7). - Платформа покажет окно реструктуризации. Проверьте список изменений и подтвердите.
Обновление конфигурации базы данных перезапишет структуру таблицы и оборвёт сеансы пользователей. Выполняйте его вне рабочего времени и только с актуальной резервной копией.
После обновления длина увеличена. Старые коды не изменятся — они просто перестанут упираться в прежний предел, а новые элементы получат больше места.
Сколько займёт реструктуризация, зависит от режима работы и объёма данных. В файловой базе на небольшом справочнике это секунды. В клиент-серверном варианте на таблице в миллионы строк платформа перестраивает физическую структуру, и операция может идти минуты или дольше. На время обновления база недоступна, поэтому крупные справочники перестраивают в технологическое окно, а не между делом.
Уменьшать длину кода опаснее, чем увеличивать. Если в базе уже есть коды длиннее нового предела, реструктуризация либо обрежет их, либо откажется выполняться. Перед уменьшением убедитесь, что все существующие коды короче.
Увеличение длины номера у документов
В документах роль кода выполняет номер. Логика та же, но свойства называются иначе:
| Что меняем | Справочник | Документ |
|---|---|---|
| Длина поля | Длина кода | Длина номера |
| Тип значения | Тип кода | Тип номера |
| Период нумерации | Серии кодов | Периодичность |
Чтобы увеличить номер документа, выделите нужный документ в ветке Документы, в палитре свойств откройте группу Нумерация и поднимите значение Длина номера. Дальше — то же обновление конфигурации базы данных через F7.
Отдельно обратите внимание на Периодичность: если выбрано «В пределах года», нумерация обнуляется в начале года, и короткого номера часто хватает. При сквозной нумерации («Непериодический») номер растёт постоянно, и запас длины нужен больше.
Ещё один нюанс документов — префиксы. В типовых конфигурациях к номеру часто добавляется префикс организации или информационной базы, и он занимает часть длины. Если видимый номер выглядит как ОРГ-000000123, учитывайте, что символы префикса тоже считаются: увеличивать Длина номера нужно с учётом этой приставки, иначе места под сам счётчик снова не хватит.
Серии кодов и автонумерация: почему номер заканчивается
Иногда код упирается в предел не из-за реальной нехватки длины, а из-за настройки серий. Прежде чем менять структуру, стоит проверить именно это — возможно, увеличивать длину вообще не придётся.
Свойство Серии кодов определяет, в каких границах код уникален и нумеруется:
- 🌐
Во всём справочнике— сквозная нумерация, один общий счётчик на весь справочник. - 📁
В пределах подчинения— у каждой группы или владельца своя серия, нумерация начинается заново.
Если выбрано «В пределах подчинения владельцу», а элементов у одного владельца много, короткая серия исчерпывается быстрее, чем кажется по общему числу записей. В таком случае помогает либо увеличение длины, либо пересмотр схемы серий.
Автонумерация выдаёт следующий свободный код на основе уже существующих. Если вы вручную проставили элементам крупные коды, автонумерация подхватит максимум и продолжит от него — и запас длины «съестся» быстрее. Держите ручные и автоматические коды в разных диапазонах, чтобы не провоцировать досрочное переполнение.
Отдельная ситуация — удалённые элементы. Если справочник чистили пометкой на удаление, коды таких записей освобождаются не сразу: пока элемент физически не удалён стандартной обработкой «Удаление помеченных объектов» (в типовых — раздел Администрирование → Обслуживание), номер считается занятым. Иногда достаточно вычистить помеченный мусор, чтобы освободить коды, и увеличение длины не потребуется.
Особенности типовых конфигураций: поддержка и расширения
В типовых БП 3.0, ЗУП 3.1, УТ 11 справочники стоят на поддержке поставщика — рядом с объектом в дереве висит «замок». Пока он закрыт, свойства редактировать нельзя.
Чтобы изменить длину кода в типовой конфигурации:
- Откройте
Конфигурация → Поддержка → Настройка поддержки. - Найдите нужный справочник и включите для него возможность изменения (снимите замок у объекта).
- После этого
Длина кодастанет доступна для редактирования, и дальше действуете по шагам из предыдущего раздела.
Снятие объекта с полной поддержки усложняет будущие обновления: по изменённому справочнику при каждом обновлении платформа будет просить сравнение и объединение вручную. Для одного-двух объектов это терпимо, но взвесьте последствия.
Чаще всего длину кода приходится увеличивать именно у справочника «Номенклатура» — под длинные артикулы, и у «Контрагентов» в крупных базах. Это самые наполненные справочники, и запас по умолчанию исчерпывается первым. Перед правкой убедитесь, что меняете нужный объект, а не одноимённый справочник из другой подсистемы.
Частый вопрос — можно ли обойтись расширением конфигурации, не трогая основную. Длину стандартного кода справочника расширением изменить нельзя: это свойство основной конфигурации. Расширения появились в платформе 8.3.6 и хорошо подходят для добавления новых реквизитов, форм и печатных макетов, но не для изменения размера служебного поля «Код». Если без увеличения длины не обойтись — это правка основной конфигурации со снятием поддержки.
Что будет с индексами и скоростью работы
Поле «Код» индексируется платформой, потому что по нему идёт контроль уникальности и поиск. Увеличение длины отражается на индексе:
- 📊 Размер индекса немного растёт — для справочника на сотни или тысячи элементов это незаметно.
- 🐢 На справочниках с миллионами элементов заметно увеличение занимаемого места и чуть более медленный поиск по коду.
- 🔁 Смена типа с
ЧислонаСтрокаменяет способ сравнения: строковые сравнения обычно тяжелее числовых.
Для абсолютного большинства баз разница в производительности после увеличения длины кода неощутима. Думать об индексах стоит только на очень крупных справочниках (номенклатура на миллионы позиций и т.п.) — и там выигрыш от строкового кода с артикулами обычно важнее микроскопической просадки.
Отдельно стоит помнить про контроль уникальности. Если он включён, платформа при каждом создании элемента проверяет, что код ещё не занят. На длинном строковом коде такая проверка чуть дороже, чем на коротком числовом, но для оперативного ввода это по-прежнему незаметно. Отключать контроль уникальности ради скорости не нужно — так вы рискуете получить дубли кодов, что хуже любой просадки.
Обмен данными и синхронизация между базами
Если база участвует в обмене (синхронизация, РИБ, обмен с сайтом), длина кода — не локальный параметр. Коды переносятся между базами как есть.
- В распределённой информационной базе (РИБ) структуру задаёт главный узел. Меняйте длину кода в нём, изменение разойдётся по периферийным узлам штатно.
- При обмене между самостоятельными базами (например, УТ ↔ БП) длина кода и правила сопоставления должны быть согласованы. Если в одной базе код длиннее, чем принимающее поле в другой, при загрузке возможна ошибка или обрезка.
- Проверьте правила конвертации в настройках синхронизации: сопоставление элементов часто идёт по коду или по уникальному идентификатору, и несогласованная длина ломает сопоставление.
Перед изменением длины кода в базе с обменом проверьте, не завязана ли синхронизация именно на код. Если сопоставление идёт по внутреннему идентификатору (GUID), длина кода на обмен не влияет.
После того как длина увеличена во всех базах, прогоните пробный обмен на копии и убедитесь, что элементы сопоставляются как раньше, а новые длинные коды переносятся целиком. Особенно это важно для РИБ: периферийные узлы получают структуру из главного автоматически, но порядок выгрузки и загрузки изменений в узлах лучше проверить до того, как длинные коды появятся в рабочем контуре.
Частые ошибки при изменении длины кода
F7 и подтвердите реструктуризацию — правка свойства без обновления структуры в базу не попадает.Длина кода с запасом или переведите Тип кода в Строка.00123 нужен строковый Тип кода.Частые вопросы
Чем «код» справочника отличается от «номера» документа?
Длина кода, у документов — «Номер» и свойством Длина номера.