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

Справочники и Данные · 9 мин

Как изменить код справочника в 1С

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

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

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

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

Что такое код справочника и когда его нужно менять

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

Типичные ситуации, когда требуется изменить код:

  • после обмена данными коды «съехали» или появились дубли с префиксами;
  • компания переходит на сквозную нумерацию контрагентов или номенклатуры;
  • элемент создан с ошибочным кодом вручную;
  • нужно привести коды к формату внешней системы (например, сайта или учётной программы).

Важно понимать: код не является внутренним идентификатором объекта. Связи между объектами в 1С строятся по уникальной ссылке (GUID), а не по коду. Поэтому изменение кода само по себе не разрывает связи элемента с документами и регистрами — в отличие от удаления и пересоздания элемента.

Проверьте настройки нумерации справочника

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

Если включён контроль уникальности, платформа не даст записать два элемента с одинаковым кодом в одной серии. Если контроль отключён, дубли возможны, и поиск по коду будет возвращать первый найденный элемент — это частый источник путаницы.

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

Как изменить код вручную в пользовательском режиме

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

  1. Откройте нужный элемент справочника.
  2. Если поле «Код» видно, но недоступно, нажмите «Ещё» и поищите команду «Изменить код» или «Редактировать код» — в некоторых типовых решениях она есть.
  3. Если поля нет на форме, откройте «Ещё → Изменить форму», найдите в дереве элементов реквизит «Код» и включите его отображение.
  4. Введите новое значение с учётом типа и длины кода, запишите элемент.

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

Порядок действий при ручной смене кода
  1. 1
    Сделайте резервную копию базы или убедитесь, что есть актуальный бэкап
  2. 2
    Откройте элемент справочника и включите отображение поля «Код» через «Ещё → Изменить форму»
  3. 3
    Введите новый код с учётом длины и типа (число или строка)
  4. 4
    Запишите элемент и проверьте отсутствие дублей поиском по коду

Групповое изменение кодов через обработку

Когда коды нужно поменять у десятков или сотен элементов, ручная правка не подходит. В типовых конфигурациях на платформе «1С:Предприятие 8.3» есть стандартная обработка «Групповое изменение реквизитов» (в разделе «Администрирование» или через «Все функции»).

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

Изменение кода программно и через конфигуратор

Если штатных средств недостаточно, код меняют программно — через обработку или консоль кода. Объект получают по ссылке, присваивают новое значение свойству «Код» и записывают. При необходимости можно временно отключить контроль уникальности методом установки режима, но делать это нужно осознанно.

Элемент = Справочники.Номенклатура.НайтиПоНаименованию("Пример").ПолучитьОбъект();

Элемент.Код = "000123";

Элемент.Записать();

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

bsl
Элемент = Справочники.Контрагенты.НайтиПоКоду("000001").ПолучитьОбъект();
Элемент.Код = "000101";
Элемент.Записать();

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

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

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

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

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

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

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

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

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

Поиск по новому коду
Норма

Находится ровно один элемент

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

Несколько элементов или ни одного

Документы со ссылкой на элемент
Норма

Ссылка открывается, реквизит заполнен

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

Пустое значение или «Объект не найден»

Следующий новый элемент
Норма

Получает корректный следующий код

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

Код сбрасывается или конфликтует с существующим

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

Синхронизация без дублей

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

Появляются задвоенные элементы

Часто задаваемые вопросы

Почему поле «Код» недоступно для редактирования?

В большинстве типовых конфигураций код заблокирован на форме, чтобы не нарушить автонумерацию. Поле можно вывести через «Ещё → Изменить форму», но для редактирования могут потребоваться права администратора или специальная команда, предусмотренная конфигурацией.

Разорвутся ли связи с документами, если изменить код?

Нет. Связи строятся по внутренней ссылке объекта, а не по коду. Документы и регистры продолжат ссылаться на тот же элемент. Риск есть только если код используется внешними системами как ключ сопоставления.

Можно ли сделать код неуникальным?

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

Как поменять коды у всех элементов сразу?

Используйте обработку «Групповое изменение реквизитов» с произвольным алгоритмом или специальную обработку перенумерации. Перед запуском сделайте резервную копию и сначала проверьте алгоритм на небольшой выборке элементов.

Что делать, если коды сбились после загрузки из другой базы?

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

Можно ли изменить код предопределённого элемента?

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

Итог

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

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