Администрирование · 11 мин
Где хранятся номера документов в 1С и как ими управлять
Где хранятся номера документов в 1С: метаданные, таблицы SQL, механизм автонумерации, сброс и восстановление номеров, типичные ошибки и проверка результата.
Номер документа в 1С — это не просто надпись в печатной форме, а полноценный реквизит объекта, который хранится в базе данных вместе с датой, проведённостью и ссылкой. Понимание того, где именно он физически размещён и как формируется, нужно при переносе данных, исправлении дублей, настройке префиксов и поиске «потерянных» документов.
Механика хранения зависит от режима работы: в файловой базе номера лежат внутри файла 1Cv8.1CD, в клиент-серверном варианте — в таблицах MS SQL, PostgreSQL или Oracle. При этом логика автонумерации всегда одна: платформа берёт последний использованный номер в пределах периода и префикса и увеличивает его на единицу.
Ниже разобрано, где искать номера на уровне конфигуратора, СУБД и пользовательского интерфейса, как работает автонумерация, почему возникают дубли и как безопасно исправить нумерацию без повреждения базы.
Где физически хранится номер документа
Каждый вид документа в 1С — это отдельная таблица в базе данных. В ней есть служебные поля: ссылка (IDRRef), дата (Date_Time), признак проведения (Posted) и номер (Number). Поле Number и есть то самое место, где хранится номер документа. Никакого отдельного «справочника номеров» платформа не ведёт — значение лежит прямо в строке документа.
В файловом режиме вся база — это файл 1Cv8.1CD, и таблицы документов находятся внутри него в собственном формате платформы. Открыть его сторонними средствами и прочитать номера напрямую нельзя: доступ идёт только через платформу 1С. В клиент-серверном режиме таблицы имеют системные имена вида _Document123, и поле номера можно увидеть запросом к СУБД, хотя делать это стоит только в режиме чтения.
Важно понимать: номер хранится как строка, а не как число. Поэтому возможны номера с префиксами («БП-000123», «00ЦБ-0015») и лидирующими нулями. Сортировка и поиск по номеру учитывают именно строковое представление, что объясняет часть «странностей» при подборе следующего номера.
Как платформа формирует следующий номер
При создании документа платформа анализирует уже существующие номера того же вида документа в пределах периодичности нумерации (обычно год) и с тем же префиксом. Из числовой части максимального номера вычисляется следующее значение, а недостающие разряды дополняются нулями слева до длины, заданной в метаданных.
Периодичность нумерации задаётся в конфигураторе в свойствах вида документа: «В пределах года», «В пределах квартала», «В пределах месяца», «В пределах дня» или «Непериодический». От этого параметра зависит, когда счётчик «обнуляется»: при нумерации в пределах года первый документ следующего года получит номер 1.
Длина номера тоже фиксируется в метаданных. Если задана длина 11, а фактически используется 6 значащих символов, остальное заполняется нулями. При превышении длины платформа не сможет записать номер — это одна из причин, почему нельзя бездумно увеличивать префиксы.
Где посмотреть и изменить настройки нумерации в конфигураторе
Откройте конфигуратор, найдите нужный вид документа в дереве конфигурации (ветка «Документы») и откройте его свойства. На закладке «Нумерация» находятся ключевые параметры: длина номера, периодичность, признак автонумерации и контроль уникальности.
Флажок «Автонумерация» включает автоматическое присвоение. Если его снять, пользователь обязан вводить номер вручную — так иногда делают для документов, номера которых приходят из внешних систем. Флажок «Контроль уникальности» запрещает запись документа с уже существующим номером в пределах периода.
Изменение этих свойств требует обновления конфигурации базы данных. На живой базе меняйте настройки только после резервной копии: смена периодичности или длины номера затрагивает все документы вида и может сломать привычную нумерацию для бухгалтерии.
Как найти номер документа в SQL-базе
В клиент-серверном режиме администратор иногда хочет посмотреть номера напрямую в СУБД — например, для сверки после миграции. Имена таблиц и полей системные, их соответствие объектам конфигурации показывает функция встроенного языка ПолучитьСтруктуруХраненияБазыДанных(). Она возвращает таблицу, где для каждого вида документа указано имя таблицы в СУБД и имена полей.
Для чтения можно выполнить простой запрос к таблице документа, выбрав поля даты и номера. Это безопасно, если соединение открыто только на чтение и не используются блокировки. Ниже пример получения структуры хранения через консоль кода.
Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
Для Каждого Строка Из Структура Цикл
Если СтрНайти(Строка.Метаданные, "Документ.РеализацияТоваровУслуг") > 0 Тогда
Сообщить(Строка.ИмяТаблицыХранения + " | " + Строка.ИмяПоляХранения);
КонецЕсли;
КонецЦикла;
Помните: номер в SQL хранится в виде строки фиксированной длины с лидирующими нулями. Если вы выгружаете данные для отчёта, не преобразуйте номер в число на стороне SQL — потеряете префиксы и нули, и сверка с 1С не сойдётся.
Почему возникают дубли и «дырки» в нумерации
Дубли появляются, когда документы создаются параллельно в разных базах (например, при обмене между филиалами) с одинаковым префиксом, либо когда пользователь вручную вводит уже занятый номер при отключённом контроле уникальности. Ещё одна типичная причина — загрузка документов из внешних систем без правил согласования номеров.
Пропуски в нумерации — нормальное явление: номер резервируется при создании документа, и если пользователь закрыл форму без записи или документ был помечен на удаление, в последовательности образуется разрыв. Для бухгалтерии критичны не сами пропуски, а дубли и нарушение хронологии «дата — номер».
Хронологическое рассогласование возникает, когда документ задним числом получает новый номер, больший, чем у более поздних документов. Штатная обработка перенумерации или ручная правка с учётом даты решают проблему, но перед массовой перенумерацией убедитесь, что документы не участвуют в обменах — иначе рассинхронизируете связанные базы.
Как восстановить или перенумеровать документы
Для точечного исправления откройте документ, разблокируйте поле номера (в типовых конфигурациях оно может быть недоступно — тогда используйте «Ещё → Изменить форму» или права администратора) и введите корректное значение. Платформа сама предложит перенумеровать документ при смене даты, если номер выходит за пределы периода.
Для массовой перенумерации используйте обработку: программно выберите документы за период, отсортируйте по дате и времени, присвойте номера по порядку с нужным префиксом и запишите в транзакции. Тестируйте такую обработку на копии базы и проверяйте результат сверкой: количество документов до и после должно совпадать, дублей быть не должно.
В типовых конфигурациях есть штатные механизмы: например, сервис «Перенумерация документов» или функции исправления нумерации в разделе администрирования. Они предпочтительнее самописных обработок, потому что учитывают особенности конфигурации — префиксы организаций, обмены и подчинённые документы.
- 1Сделайте резервную копию базы или выгрузку .dt.
- 2Проверьте, что документы вида не участвуют в активных обменах, либо остановите синхронизацию.
- 3Запустите штатную обработку перенумерации или проверенную обработку на копии базы.
- 4Сверьте результат: количество документов, отсутствие дублей, соответствие номеров датам.
- 5Только после проверки выполните перенумерацию на рабочей базе и возобновите обмены.
Проверка результата и контрольные точки
После любых операций с номерами выполните базовую проверку. Сформируйте список документов за период с сортировкой по номеру и убедитесь, что последовательность непрерывна там, где это требуется, и дублей нет. Универсальный отчёт или простой запрос с группировкой по номеру и подсчётом количества быстро покажет повторяющиеся значения.
Дополнительно сверьте номера с печатными формами и данными, ушедшими во внешние системы: счета-фактуры, УПД и отчётность должны соответствовать номерам в базе. Если документ уже был отправлен контрагенту или в ФНС, менять его номер нельзя — исправляйте только невыгруженные документы.
Как проверить результат
Каждому номеру соответствует один документ
Есть номера с двумя и более документами
Номера идут по возрастанию, хронология дат соблюдена
Новые номера стоят раньше старых по дате
Номер в базе совпадает с номером в PDF/бумажном документе
Расхождения с уже выгруженными документами
Часто задаваемые вопросы
Можно ли посмотреть номера документов напрямую в файле 1Cv8.1CD?
Нет. Файловая база хранится в закрытом формате платформы, и таблицы внутри 1Cv8.1CD недоступны для сторонних инструментов. Чтение возможно только через платформу: запросом, консолью кода или списком документов. Попытки открыть файл сторонними редакторами почти гарантированно приводят к его повреждению.
Почему новый документ получил номер меньше, чем у существующих?
Чаще всего причина в префиксе: автонумерация считает максимум в пределах своего префикса, и если документы с другим префиксом имеют бо́льшие номера, новый документ продолжит свою ветку. Вторая причина — смена периода нумерации: при периодичности «в пределах года» первый документ нового года начинается с единицы.
Опасно ли удалять документы с точки зрения нумерации?
Удаление создаёт пропуск в последовательности номеров, что само по себе не ошибка, но может вызвать вопросы при проверках, если речь о счетах-фактурах или кассовых документах. Платформа не переиспользует освободившийся номер автоматически — следующий документ всё равно получит номер после максимального из существующих.
Как узнать имя таблицы документа в SQL-базе?
Используйте функцию встроенного языка ПолучитьСтруктуруХраненияБазыДанных() — она возвращает соответствие объектов метаданных и имён таблиц и полей в СУБД. Определять имена «на глаз» по номеру вроде _Document456 нельзя: после реструктуризации соответствие может измениться.
Что делать, если после обмена появились дубли номеров?
Проверьте настройки префиксов в узлах обмена: у каждой базы должен быть свой уникальный префикс. Дубли, которые ещё не ушли в отчётность, перенумеруйте штатной обработкой, а уже выгруженные документы оставьте как есть и зафиксируйте расхождение. После исправления префиксов выполните тестовую синхронизацию и сверку.
Можно ли сделать номер документа неизменяемым для пользователей?
Да. На уровне конфигурации поле номера делают недоступным в форме, а права на его изменение убирают через роли. В типовых конфигурациях дополнительно действует механизм запрета редактирования данных после закрытия периода — он блокирует и смену номера в закрытых датах без специальных прав.
Что важно запомнить
Номер документа — строковый реквизит в таблице документа базы: внутри 1Cv8.1CD в файловом режиме и в таблице _DocumentXXX на SQL-сервере в клиент-серверном. Правила формирования задаются в конфигураторе (длина, периодичность, префикс), исправления выполняются только средствами платформы после резервной копии, а результат проверяется отсутствием дублей и сверкой с печатными формами.