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

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

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

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

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

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

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

Что такое префикс документа и где он хранится

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

В типовых конфигурациях (ERP, УТ, БП, КА) префикс информационной базы задаётся в разделе «Администрирование» → «Синхронизация данных» или «Префиксы информационных баз», а префикс организации — в карточке организации. При записи документа эти значения подставляются в номер механизмом префиксации.

Как посмотреть префикс в режиме предприятия

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

Чтобы увидеть или изменить настройку префиксации в типовой конфигурации, выполните следующее:

Порядок действий
  1. 1
    Откройте раздел Администрирование → Синхронизация данных (или Префиксы информационных баз)
  2. 2
    Найдите поле Префикс этой информационной базы — это значение подставляется в номера документов
  3. 3
    Если нужен префикс организации, откройте карточку организации и проверьте поле Префикс
  4. 4
    Создайте тестовый документ и убедитесь, что номер начинается с ожидаемого префикса

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

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

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

Функция ПолучитьПрефиксНомера(НомерДокумента)

Префикс = "";

Для Позиция = 1 По СтрДлина(НомерДокумента) Цикл

Символ = Сред(НомерДокумента, Позиция, 1);

Если СтрНайти("0123456789", Символ) > 0 Тогда

Прервать;

КонецЕсли;

Префикс = Префикс + Символ;

КонецЦикла;

Возврат Префикс;

КонецФункции

Вызов выглядит так: Префикс = ПолучитьПрефиксНомера(ДокументСсылка.Номер);. Функция вернёт, например, «ЦБ» для номера «ЦБ00-000123». Обратите внимание: если номер начинается сразу с цифр, результат будет пустой строкой — это нормальная ситуация, а не ошибка.

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

Получение префикса через типовые механизмы БСП

В конфигурациях на базе Библиотеки стандартных подсистем префиксацией управляет общий модуль ПрефиксацияОбъектов (в разных версиях — ПрефиксацияОбъектовСлужебный, ПрефиксацияОбъектовКлиентСервер). Эти модули содержат функции формирования номера с префиксом и обработчики события ПриУстановкеНовогоНомера.

Чтобы узнать префикс информационной базы, заданный в настройках, в типовых конфигурациях обычно используют получение константы или функциональной опции, например через Константы.ПрефиксУзлаРаспределеннойИнформационнойБазы.Получить() — точное имя зависит от конфигурации и версии. Проверить актуальное имя можно через конфигуратор: найдите в дереве констант элементы со словом «Префикс».

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

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

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

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

Практичные варианты:

  • выбрать номера запросом, а префикс вычислить в цикле по выборке функцией из раздела выше;
  • если префиксов немного и они известны заранее, классифицировать номера через ПОДОБНО: ГДЕ Документ.Номер ПОДОБНО "ЦБ%";
  • в СКД добавить вычисляемое поле и определить префикс в событии «ПриКомпоновкеРезультата» или через выражение на встроенном языке.

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

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

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

Отдельно стоит упомянуть ограничение длины: номер документа в 1С имеет ограничение по длине (типовое — 11 символов, в некоторых конфигурациях больше), и длинный префикс сокращает доступное пространство для цифровой части. При достижении максимального номера нумерация может остановиться с ошибкой.

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

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

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

Номер нового документа
Норма

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

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

Префикс отсутствует, отличается от настройки или номер не присваивается

Результат функции извлечения префикса
Норма

Для номера ЦБ00-000123 возвращается ЦБ, для цифрового номера — пустая строка

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

В префикс попадают цифры или функция обрезает нужные символы

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

В узлах обмена нет документов с одинаковыми номерами разного содержания

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

Появляются предупреждения о коллизиях или дубли документов

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

Итог

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

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

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

Можно ли получить префикс, не обращаясь к номеру документа?

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

Почему функция извлечения префикса возвращает пустую строку?

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

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

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

Изменятся ли номера старых документов после смены префикса?

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

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

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

Работает ли извлечение префикса для номеров с дефисами?

Да, если дефис стоит до первой цифры — он попадёт в префикс как нецифровой символ. Если же дефис стоит после цифр (например, «000123-А»), стандартный алгоритм его не обработает, и логику нужно адаптировать под конкретный формат номеров вашей конфигурации.