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