Справочники и Данные · 10 мин
Как установить префикс кода справочника в 1С
Как установить префикс кода справочника в 1С: настройка префикса базы в обмене данными, автонумерация, программное назначение префикса и типичные ошибки.
Префикс кода справочника в 1С — это символы, которые добавляются перед номером элемента при его создании. Чаще всего префиксы используются в распределённых базах и при обмене данными между несколькими информационными базами: каждая база получает свой префикс, и коды элементов не пересекаются. Например, центральная база создаёт контрагентов с кодами «ЦБ-000001», а филиал — «ФЛ-000001».
Установить префикс можно двумя путями. Первый — штатный: задать префикс информационной базы в настройках обмена данными или в параметрах нумерации, тогда платформа будет автоматически добавлять его к кодам всех справочников и документов. Второй — программный: переопределить формирование кода в обработчиках событий конкретного справочника, если нужна нестандартная логика.
Выбор способа зависит от задачи. Если нужно просто разделить нумерацию между базами — достаточно штатного префикса. Если требуется, чтобы разные группы элементов одного справочника имели разные префиксы (например, по видам номенклатуры), придётся дорабатывать механизм нумерации в конфигураторе.
Как работает префикс и автонумерация кодов в 1С
У каждого справочника в 1С есть реквизит «Код». Если у справочника включена автонумерация (свойство объекта конфигурации), платформа сама присваивает код новому элементу. Когда задан префикс информационной базы, он автоматически подставляется в начало кода: сначала идёт префикс, затем разделитель (обычно дефис или ноль) и порядковый номер.
Тип кода может быть числовым или строковым. Для работы с префиксами код должен быть строковым — числовой код не может содержать буквы. В типовых конфигурациях коды справочников почти всегда строковые именно по этой причине. Длина кода определяется свойством «Длина кода» в конфигураторе, и префикс расходует часть этой длины.
Важно понимать: префикс применяется только к новым элементам. Уже созданные элементы сохраняют старые коды, и платформа их не перенумеровывает. Если нужно изменить коды существующих элементов, это делается отдельной обработкой или вручную.
Установка префикса через настройки обмена данными
В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP и других) префикс задаётся централизованно. Путь может немного отличаться между версиями, но общая логика такая: откройте раздел «Администрирование», найдите подсистему «Обмен данными» или «Синхронизация данных» и в настройках укажите поле «Префикс информационной базы».
- 1Откройте раздел «Администрирование» → «Обмен данными» (или «Синхронизация данных»).
- 2Найдите поле «Префикс информационной базы» (иногда «Префикс этой информационной базы»).
- 3Введите короткий уникальный префикс, например «ЦБ» или «Ф1».
- 4Сохраните настройку и создайте тестовый элемент справочника.
- 5Проверьте, что код нового элемента начинается с заданного префикса.
Префикс должен быть коротким — обычно 1–3 символа, потому что он занимает часть длины кода. Если длина кода справочника, например, 9 символов, а префикс занимает 3, на порядковый номер останется 6 знаков. Используйте буквы и цифры, избегайте специальных символов: некоторые из них могут некорректно обрабатываться при обмене или поиске.
После сохранения настройки создайте новый элемент любого справочника и проверьте код. Если префикс не появился, убедитесь, что у справочника включена автонумерация и код является строковым. Также проверьте, не переопределена ли нумерация программно в модуле объекта — в таком случае штатный механизм может не срабатывать.
Программная установка префикса для конкретного справочника
Когда нужно задать префикс не глобально, а для отдельного справочника или отдельной группы элементов, используют обработчики событий в модуле объекта. Ключевое событие — ПриУстановкеНовогоКода. В нём можно изменить параметр Префикс до того, как платформа сформирует код.
Пример простой реализации: в конфигураторе откройте справочник, перейдите в его модуль объекта и добавьте обработчик. Внутри можно задать произвольный префикс или вычислить его по реквизитам элемента.
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
Префикс = "ТМЦ";
КонецПроцедуры
Если нужно полностью контролировать код, установите СтандартнаяОбработка = Ложь и сформируйте код вручную через УстановитьНовыйКод() или прямым присваиванием. Но помните: при отключении стандартной обработки вся ответственность за уникальность кодов ложится на ваш алгоритм.
Префикс по группе или виду элемента
Частая задача — разные префиксы для разных групп внутри одного справочника. Например, у номенклатуры типа «Товар» префикс «ТВ», а у «Услуга» — «УС». В обработчике ПриУстановкеНовогоКода реквизиты элемента уже доступны, поэтому можно построить условие:
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
Если ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Услуга Тогда
Префикс = "УС";
Иначе
Префикс = "ТВ";
КонецЕсли;
КонецПроцедуры
Учтите ограничение: если элемент потом переместят в другую группу, код автоматически не изменится. Перенумерация при смене группы — отдельная логика, которую нужно реализовывать осознанно, потому что изменение кода может нарушить связи в печатных формах и во внешних системах.
Проверка результата и контроль уникальности
После установки префикса проверьте результат на нескольких элементах. Создайте новый элемент справочника, запишите его и посмотрите присвоенный код. Убедитесь, что префикс стоит в начале, разделитель соответствует ожиданиям, а порядковый номер продолжает нужную последовательность.
Как проверить результат
Начинается с заданного префикса, номер увеличивается
Префикс отсутствует или номер начинается заново
Сохранили прежние коды
Коды изменились без отдельной обработки перенумерации
Элементы из разных баз имеют разные префиксы
Встречаются одинаковые коды из разных баз
Особое внимание уделите ситуации, когда нумерация «сбрасывается». Если префикс изменился, платформа начинает отсчёт номеров для нового префикса с единицы — это нормально. Но если номер сбрасывается при неизменном префиксе, проверьте, не редактировал ли кто-то код вручную: ручной ввод «некруглого» кода может сбить автонумерацию.
Типичные ошибки при работе с префиксами
Отдельно выделим проблему ручного ввода. Если пользователь вручную вводит код, например «000000099», а затем создаётся ещё один элемент, платформа попытается продолжить нумерацию от максимального значения. При достижении предела длины кода автонумерация останавливается, и новые элементы нельзя записать без ручного указания кода. Лечится это обработкой перенумерации или увеличением длины кода в конфигураторе.
Когда префикс не нужен и какие есть альтернативы
В одиночной базе без обменов префикс часто избыточен. Если справочник небольшой и интеграций нет, проще оставить стандартную нумерацию без префикса — коды будут короче и читабельнее. Префикс оправдан, когда есть обмен между базами, планируется слияние данных или код используется как человекочитаемый идентификатор во внешних документах.
Как выбрать действие
Альтернатива префиксу — использование отдельного реквизита для принадлежности (например, «Организация» или «Подразделение») вместо кодирования информации в коде. Это гибче: реквизит можно менять без перенумерации, а код остаётся простым порядковым номером.
Что важно запомнить
Штатный префикс задаётся в настройках обмена данными и действует на все новые элементы. Для отдельных справочников и нестандартной логики используется обработчик ПриУстановкеНовогоКода. Старые коды не меняются автоматически, а ручное редактирование кодов сбивает автонумерацию.
Частые вопросы
Почему префикс не появляется в коде нового элемента?
Проверьте три вещи: задан ли префикс информационной базы в настройках обмена данными, включена ли автонумерация у справочника и является ли код строковым. Также убедитесь, что нумерация не переопределена программно в модуле объекта — там может игнорироваться стандартный префикс.
Можно ли изменить префикс у уже созданных элементов?
Автоматически — нет, платформа не перенумеровывает существующие элементы. Нужно либо вручную редактировать коды, либо написать обработку, которая обойдёт элементы и присвоит новые коды. Перед массовой перенумерацией сделайте резервную копию и проверьте, не используется ли код во внешних системах.
Какой длины должен быть префикс?
Оптимально 1–3 символа. Префикс занимает часть общей длины кода, заданной в конфигураторе, поэтому длинный префикс сокращает доступный диапазон порядковых номеров и приближает исчерпание нумерации.
Что делать, если автонумерация сбилась после ручного ввода кода?
Найдите элемент с максимальным кодом и при необходимости исправьте его, затем проверьте присвоение следующего номера. Если нумерация упёрлась в предел длины кода, потребуется перенумерация элементов или увеличение длины кода в конфигураторе с последующим обновлением конфигурации базы данных.
Влияет ли смена префикса на обмен данными?
Да. При обмене элементы часто сопоставляются по уникальному идентификатору, но коды с префиксами используются для поиска и контроля дублей. Резкая смена префикса в базе, участвующей в обмене, может усложнить диагностику, поэтому менять префикс следует до начала обменов или после согласования со всеми участниками интеграции.
Можно ли задать префикс только для документов, не трогая справочники?
Штатный префикс информационной базы применяется и к справочникам, и к документам одновременно. Если нужно разделить поведение, для конкретного вида документов или справочника переопределите нумерацию в обработчике ПриУстановкеНовогоНомера или ПриУстановкеНовогоКода соответственно.