Где хранится префикс базы 1С и как получить его в коде

· 9 мин

Содержание

Префикс информационной базы — это короткая приставка (обычно два символа), которую 1С добавляет в начало номеров документов и кодов справочников: ЦБ-000000045, где ЦБ и есть префикс. Посмотреть его в режиме «1С:Предприятие» можно в разделе Администрирование → Синхронизация данных — там лежит поле «Префикс информационной базы». В коде префикс берут из одноимённой константы: Константы.ПрефиксИнформационнойБазы.Получить().

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

Зачем базе нужен префикс и как он работает

Префикс решает одну задачу — уникальность номеров между базами. Представьте бухгалтерию в головном офисе и такую же базу в филиале. Обе независимо нумеруют реализации с единицы. При объединении данных документ 000000001 из офиса столкнётся с документом 000000001 из филиала.

Приставка разводит эти потоки. Офис получает префикс ЦО, филиал — ФЛ, и номера становятся сквозными: ЦО-000000001 и ФЛ-000000001 уже не конфликтуют.

Где префикс используется на практике:

  • 🔁 Распределённая информационная база (РИБ) — центральный узел и периферийные, каждый со своим префиксом.
  • 🔗 Синхронизация данных между разными конфигурациями (например, «Управление торговлей» ↔ «Бухгалтерия предприятия»).
  • 🧩 Обмен через универсальный формат EnterpriseData, где приставка помечает, в какой базе объект создан.

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

Когда префикс в принципе не нужен: если база одна и ни с кем не обменивается, приставку можно оставить пустой — коллизиям просто неоткуда взяться. Заводить префикс «на всякий случай» в одиночной базе смысла нет, он только удлинит номера. А вот при малейших планах на обмен или разворачивание РИБ лучше задать приставку заранее, пока в базе немного документов: разруливать уже выданные номера сложнее, чем договориться о префиксах на старте.

Важный момент для понимания всего остального: префикс — это не часть внутреннего идентификатора, а часть строкового номера (реквизита «Номер» или «Код»). Он виден пользователю и влияет на нумерацию, но не на ссылочную целостность.

Отсюда полезный практический приём. По приставке в номере сразу видно, в какой базе объект родился. Если в объединённой базе встречаете реализацию ФЛ-000000112, вы без всякого анализа понимаете: документ пришёл из филиала, а не создан в центральном офисе. Это экономит время при разборе расхождений и при поиске, где именно нужно что-то исправить. Чем осмысленнее подобраны приставки, тем проще читать такую «карту происхождения» документов.

Как посмотреть префикс в режиме «1С:Предприятие»

Самый быстрый способ — открыть любой документ и посмотреть на его номер. Два первых символа до дефиса и есть текущий префикс. Если номер идёт без приставки (000000045), значит префикс пустой.

Точное место настройки в «1С:Бухгалтерии 3.0» и большинстве типовых на БСП:

  1. Откройте раздел Администрирование → Синхронизация данных.
  2. Найдите поле «Префикс информационной базы» — в нём два символа.
  3. Рядом включается флажок синхронизации; само поле доступно и без активного обмена.

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

Если раздела «Синхронизация данных» на виду нет, проверьте, включена ли сама возможность: Администрирование → Настройки программы → Синхронизация данных (в разных релизах подраздел называется близко). В конфигурациях без подсистемы обмена отдельного поля префикса может не быть вовсе — тогда приставка задаётся уже при настройке конкретного плана обмена.

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

Префикс в клиент-серверной базе и причём тут консоль серверов

Частый запрос — «получить префикс через консоль администрирования серверов». Здесь важно не искать не там.

Консоль администрирования серверов 1С (оснастка или утилита rac) префикс не хранит и не показывает. Она управляет кластером: списком информационных баз, сеансами, соединениями, рабочими процессами. Префикс нумерации лежит внутри самой базы, в константе, а не в реестре кластера. Поэтому команды вида rac infobase ... вернут параметры подключения базы, но не приставку её документов.

Как тогда узнать префикс в клиент-серверном варианте, если под рукой только серверный доступ:

  • 🖥️ Зайти в базу обычным клиентом и посмотреть поле в Администрирование → Синхронизация данных (способ выше работает одинаково для файловой и серверной базы).
  • 🔧 Открыть Конфигуратор и выполнить запрос к константе через консоль запросов (внешнюю обработку ) — способ для администратора без прав на интерфейс пользователя.
  • 👩‍💻 Прочитать константу встроенным языком в обработке или в модуле — об этом следующий раздел.

Чтобы не искать зря: в оснастке «Администрирование серверов 1С Предприятия» и в выводе rac infobase info вы увидите имя базы в кластере, строку подключения к СУБД, блокировки сеансов и регламентных заданий — всё, что относится к инфраструктуре. Самого номера-приставки там нет и быть не должно. Поэтому администратору, которому поручили «узнать префикс», правильнее один раз зайти в базу клиентом, чем перебирать команды консоли кластера.

Тип СУБД (PostgreSQL, MS SQL) на способ получения префикса не влияет: приставка хранится в прикладной константе, а не в служебных таблицах платформы.

Как получить префикс программно: константа и запрос

В типовых конфигурациях на БСП префикс информационной базы хранится в константе с предсказуемым именем — ПрефиксИнформационнойБазы. Это самый надёжный способ достать значение в коде.

Встроенным языком:

Префикс = Константы.ПрефиксИнформационнойБазы.Получить();
Сообщить("Префикс базы: " + Префикс);

Тем же значением удобно пользоваться при формировании номеров или при проверках перед обменом. Метод Получить() возвращает строку (чаще два символа); если префикс не задан — пустую строку.

Если удобнее работать запросом (например, в консоли запросов), константа доступна как таблица Константа.<ИмяКонстанты> с полем Значение:

ВЫБРАТЬ
    ПрефиксИнформационнойБазы.Значение КАК Префикс
ИЗ
    Константа.ПрефиксИнформационнойБазы КАК ПрефиксИнформационнойБазы

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

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

Префикс = Константы.ПрефиксИнформационнойБазы.Получить();
Если ПустаяСтрока(Префикс) Тогда
    Сообщить("Префикс не задан — настройте его до обмена.");
КонецЕсли;

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

Файловая и SQL-база: отличается ли хранение префикса

Короткий ответ — нет, с точки зрения прикладного кода не отличается. И в файловой базе (.1CD), и в клиент-серверной на MS SQL или PostgreSQL префикс лежит в одной и той же прикладной константе. Способы выше работают одинаково.

Разница только в том, как не надо его доставать:

  • 🚫 Прямой SQL-запрос к таблицам платформы (к таблице константы _ConstNN) — плохая идея. Внутренние имена таблиц платформа не гарантирует, они меняются при реструктуризации, и чтение в обход платформы чревато блокировками и несогласованными данными.
  • 🚫 Открытие файла .1CD сторонними средствами ради одного значения — лишний риск повредить базу.

Правильно — через штатные средства 1С: интерфейс, встроенный язык, консоль запросов. Они одинаково доступны для файлового и серверного варианта.

Вариант базыГде префиксЧем читать
Файловая (.1CD)Константа внутри базыИнтерфейс, код, запрос
Клиент-серверная (MS SQL / PostgreSQL)Та же константаИнтерфейс, код, запрос

Строки _ConstNN или прямые запросы к СУБД в таблицу не добавляю намеренно — это не способ «получить префикс», а способ получить проблемы.

Отдельно про «получить префикс для обмена через универсальный формат» (EnterpriseData). Здесь приставка тоже берётся из той же константы и настроек узла — отдельной «таблицы префиксов формата» в базе нет. Если выгрузка в формат уходит с пустым префиксом, причину ищите в константе базы и в настройках узла-получателя, а не в структуре XML-сообщения: формат лишь переносит номер, который платформа уже сформировала с приставкой.

Сбои нумерации и дубли из-за префикса

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

Смена префикса не перенумеровывает старые документы. Если вы поменяли приставку, новые объекты пойдут с новым префиксом, а ранее созданные сохранят старый. Это нормально — платформа не трогает уже выданные номера. Ждать, что вся база «перепрошьётся», не нужно.

Самые частые причины дублей и странных номеров:

Диагностика: выберите симптом

Что сделать, чтобы к дублям не возвращаться:

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

Поиск и объединение дублей меняет ссылки по всей базе. Делайте это в монопольном режиме, с резервной копией и, по возможности, на копии базы с предварительной проверкой результата.

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

Сколько символов должно быть в префиксе?
Обычно два. Этого хватает, чтобы развести несколько баз. Берите буквы, по которым узел легко опознать: ЦО для центрального офиса, ФЛ для филиала.
Можно ли поменять префикс уже работающей базы?
Технически да, данные не пострадают. Но старые документы сохранят прежнюю приставку, а новые пойдут с новой — нумерация станет смешанной. Меняйте только при явной необходимости и лучше до начала активного обмена.
Префикс влияет на уникальность внутренних идентификаторов объектов?
Нет. Ссылочную уникальность обеспечивают внутренние GUID, а не номер. Префикс — часть видимого строкового номера и нужен для читаемой нумерации при обмене.
Как узнать префикс, если нет доступа к интерфейсу пользователя?
Через Конфигуратор: откройте консоль запросов (внешнюю обработку) и прочитайте значение константы запросом к Константа.ПрефиксИнформационнойБазы по полю Значение, либо кодом через Получить().
Почему в консоли администрирования серверов нет поля с префиксом?
Потому что префикс хранится внутри базы, а не в кластере. Консоль серверов управляет сеансами и подключениями, а приставку нумерации смотрят в самой базе — в интерфейсе или кодом.