Нумерация в 1С:Предприятие — это основа упорядоченной работы с документами, справочниками и регистрами. Без правильной настройки номеров невозможно вести учет, формировать отчетность или интегрироваться с другими системами. Однако даже опытные пользователи сталкиваются с проблемами: дубли номера, пропуски в последовательности или ошибки при автоматическом присвоении. Эта статья поможет разобраться, как настроить нумерацию в разных объектах 1С, избежать типичных ошибок и восстановить порядок, если что-то пошло не так.
Мы рассмотрим не только стандартные сценарии (например, нумерацию документов "Поступление товаров"), но и нюансы работы со сквозной нумерацией, префиксами, а также случаи, когда система внезапно начинает присваивать номера с середины последовательности. Отдельное внимание уделим регламентным операциям, которые могут сбросить счетчики нумерации без предупреждения — это одна из самых распространенных причин сбоев в крупных базах.
Если вы администратор, бухгалтер или разработчик, работающий с 1С 8.3 (включая последнюю версию платформы), здесь вы найдете актуальные инструкции. Для удобства материал разбит на практические блоки: от базовых настроек до решения нестандартных ситуаций. Начнем с основ.
1. Виды нумерации в 1С: что можно настроить
В 1С:Предприятие существует три основных типа нумерации, каждый из которых применяется в разных объектах:
- 📌 Автоматическая нумерация — система присваивает номер при создании документа или элемента справочника. Используется по умолчанию в большинстве конфигураций (например,
Бухгалтерия 3.0илиУправление торговлей 11). - 🔢 Ручная нумерация — пользователь вводит номер самостоятельно. Актуально для внутренних документов, где требуется специальная кодировка (например, приказы по личному составу).
- 🔄 Сквозная нумерация — последовательность номеров не сбрасывается при начале нового периода (месяца, года). Часто применяется в
Зарплата и Управление Персоналомдля кадровых приказов.
Кроме того, нумерация может быть:
- 📅 Периодической — сброс счетчика в начале каждого месяца/квартала (типично для бухгалтерских документов).
- 🏷️ С префиксами/суффиксами — например,
ПК-001для приказов илиСЧ-2026/05для счетов-фактур. - 🔗 Связанной с другими объектами — когда номер документа формируется на основе данных из справочника (например, номер заказа клиента включает код контрагента).
В большинстве конфигураций 1С настройка нумерации доступна в свойствах объекта (документа или справочника). Однако в некоторых случаях (например, для Регистров накопления) требуется вмешательство в конфигуратор. Об этом подробнее в следующем разделе.
⚠️ Внимание: В конфигурациях на базе БСП (Библиотека стандартных подсистем) часть параметров нумерации может быть скрыта в настройках подсистемы "Нумераторы". Проверьте этот раздел, если не находите нужные опции в свойствах документа.
2. Настройка автоматической нумерации для документов
Автоматическая нумерация — самый распространенный вариант. Рассмотрим, как ее настроить на примере документа Поступление товаров и услуг в 1С:Управление торговлей 11:
- Откройте конфигуратор (
Файл → Конфигураторили через ярлык запуска с ключом/Config). - Перейдите в ветку
Документы → ПоступлениеТоваровУслуг. - В палитре свойств найдите поле
Нумератор(илиАвтонумерацияв зависимости от конфигурации). - Установите флажок
Автонумерацияи укажите параметры:- 📆 Периодичность: "В пределах года" или "В пределах месяца".
- 🔢 Длина номера: количество знаков (например,
5для номеров от00001до99999). - 🔤 Префикс: например,
ПТ-для поступлений.
Конфигурация → Обновить конфигурацию базы данных).Если документ уже существует в базе, но нумерация настроена неправильно, можно сбросить счетчик:
// Код для сброса нумерации (выполняется в режиме "Отладка" или через внешнюю обработку)
ДокументОбъект = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
ДокументОбъект.УстановитьНовыйНомер(1); // Сброс на 1
ДокументОбъект.Записать();
⚠️ Внимание: Сброс нумерации в работающей базе может привести к дублям номеров, если старые документы не архивированы. Перед выполнением операции сделайте резервную копию (Администрирование → Выгрузить информационную базу).
Изучите текущие номера документов в журнале|Создайте резервную копию базы|Проверьте права доступа (требуется роль "Администратор" или "Полные права")|Уточните требования к формату номеров (префиксы, длина) у бухгалтерии
-->
3. Ручное присвоение номеров и комбинированные схемы
В некоторых случаях автоматическая нумерация не подходит. Например, для внутренних приказов может требоваться ручное присвоение номеров с учетом департамента (ПР-ИТ-01, ПР-БУХ-01). Для этого:
- В конфигураторе откройте свойства документа (например,
ПриказПоПерсоналу). - Снимите флажок
Автонумерация. - В модуле объекта (
Модуль объектав дереве конфигурации) добавьте процедуру проверки номера при записи:Процедура ПередЗаписью(Отказ)Если НЕ ЗначениеЗаполнено(Номер) Тогда
Сообщить("Номер документа не заполнен!", СтатусСообщения.Важное);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
- Для удобства пользователей добавьте в форму документа кнопку "Сформировать номер" с логикой генерации (например, на основе даты и кода подразделения).
- 🔧 В свойствах документа оставьте
Автонумерациявключенной. - 📝 В модуле объекта добавьте обработчик события
ПриСозданииНаСервере, который будет формировать префикс:Процедура ПриСозданииНаСервере(Отказ)Префикс = "ПР-" + Формат(ТекущаяДата(), "ГГГГ") + "-";
Номер = Префикс + "001"; // Стартовое значение
КонецПроцедуры
Комбинированная схема подразумевает частичную автоматизацию. Например, префикс проставляется автоматически, а цифровую часть вводит пользователь. Для этого:
Такие схемы часто используются в 1С:Зарплата и Управление Персоналом для кадровых документов, где важно сохранять историческую нумерацию при переходе на новую версию программы.
Автоматическая (система присваивает номера сама)|Ручная (ввожу номера самостоятельно)|Комбинированная (префикс + ручной ввод)|Не знаю, как настроено у нас
-->
4. Нумерация в справочниках: особенности и ограничения
Справочники в 1С также поддерживают нумерацию, но с некоторыми нюансами. В отличие от документов, здесь нет жесткой привязки к датам, поэтому чаще используется сквозная нумерация или ручное присвоение кодов. Рассмотрим настройку на примере справочника Номенклатура:
- В конфигураторе откройте ветку
Справочники → Номенклатура. - В палитре свойств найдите поле
Автонумерацияи установите флажок. - Укажите параметры:
- 🔢 Длина кода: обычно
9или12(для крупных баз). - 🔤 Префикс: например,
НОМ-для номенклатуры. - 🔄 Контроль уникальности: включите, чтобы избежать дублей.
- 🔢 Длина кода: обычно
01.001 для группы и 01.002 для подгруппы), используйте свойство Иерархический справочник и настройте формат кода вручную.Для справочников с ручной нумерацией (например, Контрагенты) полезно добавить обработчик, который проверяет уникальность кода при записи:
Процедура ПередЗаписью(Отказ)
Если НЕ ПустаяСтрока(Код) Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ССЫЛКА КАК Ссылка
ИЗ Справочник.Контрагенты
ГДЕ Код = &Код И Ссылка <> &Ссылка";
Запрос.УстановитьПараметр("Код", Код);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Результат = Запрос.Выполнить();
Если Результат.Выбрать() Тогда
Сообщить("Код " + Код + " уже используется!", СтатусСообщения.Важное);
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
⚠️ Внимание: В справочниках с большим количеством элементов (более 100 000 записей) автоматическая нумерация может замедлять работу. В таких случаях используйте ГUID в качестве уникального идентификатора, а код присваивайте вручную или по специальному алгоритму.
| Тип объекта | Рекомендуемая нумерация | Примеры форматов |
|---|---|---|
| Документы (бухгалтерские) | Автоматическая, периодическая | СФ-2026/05-001, ПКО-00001 |
| Документы (кадровые) | Сквозная или ручная | ПР-24/01, ТД-001-2026 |
| Справочник "Номенклатура" | Автоматическая сквозная | НОМ-000001, 1000001 |
| Справочник "Контрагенты" | Ручная или комбинированная | КЛ-001, ПОСТ-01 |
| Регистры сведений | Без нумерации (используется период) | — |
5. Решение проблем с нумерацией: дубли, пропуски, сбросы
Даже в правильно настроенной базе могут возникать сбои нумерации. Рассмотрим типичные проблемы и способы их решения:
- 🔄 Дубли номеров:
Причина: одновременное создание документов несколькими пользователями или сбой при записи. Решение:
- Проверьте журнал регистрации (
Администрирование → Журнал регистрации) на ошибки. - Восстановите последовательность с помощью обработки
"Поиск и исправление дублей номеров"(доступна в 1С:ИТС). - Для документов с регламентными операциями (например,
Закрытие месяца) используйте блокировку на время выполнения:Объект.ЗаблокироватьДляИзменения();
- Проверьте журнал регистрации (
Причина: удаление документов или сброс счетчика. Решение:
- Используйте обработку
"Перенумерация документов"(доступна в 1С:Конвертация данных). - Для справочников выполните запрос на поиск "дыр" в последовательности:
ВЫБРАТЬ МАКСИМУМ(Код) КАК МаксКод ИЗ Справочник.Номенклатура
Причина: обновление конфигурации или регламентная операция. Решение:
- Проверьте настройки нумератора в
Библиотеке стандартных подсистем (БСП). - Восстановите счетчик из резервной копии или вручную установите актуальное значение:
ДокументОбъект.УстановитьНовыйНомер(ПоследнийНомер + 1);
Если проблема возникает регулярно, проверьте:
- 🔧 Права пользователей: у всех ли есть доступ к созданию документов?
- 🕒 Регламентные задания: не сбрасывают ли они счетчики (например,
ОбновлениеИБ). - 🔌 Интеграции: не передают ли внешние системы документы с ручной нумерацией?
- В конфигураторе откройте свойства регистра (например,
РегистрСведений.ЦеныНоменклатуры). - Добавьте реквизит
УникальныйИдентификатортипаСтрока(36)(дляGUID). - В модуле регистра добавьте обработчик записи:
Процедура ПередЗаписью(Отказ)Если ПустаяСтрока(УникальныйИдентификатор) Тогда
УникальныйИдентификатор = Новый УникальныйИдентификатор;
КонецЕсли;
КонецПроцедуры
Перед массовой перенумерацией документов всегда делайте резервную копию базы и тестируйте процесс на копии! В крупных базах (более 50 ГБ) операция может занять несколько часов.
6. Нумерация в регистрах и особенности для разработчиков
Регистры в 1С обычно не требуют явной нумерации, так как записываются по периоду. Однако в некоторых случаях (например, для Регистра сведений с уникальными записями) может потребоваться присвоение идентификаторов. Для этого:
Для разработчиков полезно знать:
- 🔧 Метод
УстановитьНовыйНомер()работает только для объектов с включенной автонумерацией. - 📊 Для получения текущего максимального номера используйте запрос:
Запрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ МАКСИМУМ(Номер) КАК МаксНомер ИЗ Документ.ПоступлениеТоваровУслуг";
- 🔄 Для сброса нумерации в коде используйте:
Документы.ПоступлениеТоваровУслуг.СброситьНумератор();
При работе с распределенными информационными базами (РИБ) нумерация должна быть согласована между узлами. Используйте:
- 🌐 Глобальные нумераторы — централизованное управление номерами.
- 🔗 Префиксы узлов — например,
МСК-001для московского офиса.
Как работает нумератор в БСП?
В Библиотеке стандартных подсистем (БСП) нумераторы хранятся в регистре сведений "Нумераторы". При создании документа система обращается к этому регистру, получает текущее значение и увеличивает его на 1. Если запись в регистре отсутствует (например, после обновления конфигурации), нумератор может сброситься. Чтобы этого избежать, проверяйте наличие записей в регистре после обновлений.
7. Оптимизация нумерации для крупных баз
В базах с высокой нагрузкой (более 1000 документов в день) стандартная нумерация может стать узким местом. Рекомендации по оптимизации:
- 📈 Разделение по периодам:
Используйте ежемесячную или ежеквартальную нумерацию вместо сквозной. Это уменьшает конкуренцию за блокировки.
- 🔧 Асинхронное присвоение номеров:
Для документов, создаваемых в фоновом режиме (например, через
Регламентные задания), присваивайте номера пачками:МассивДокументов = Новый Массив;Для Сч = 1 По 100 Цикл
Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Док.Номер = ""; // Пока не присваиваем
МассивДокументов.Добавить(Док);
КонецЦикла;
// Присваиваем номера пакетом
ТекущийНомер = ПолучениеТекущегоНомера();
Для Каждого Док Из МассивДокументов Цикл
Док.Номер = Формат(ТекущийНомер, "ЧГ=0; ДЛ=5");
Док.Записать();
ТекущийНомер = ТекущийНомер + 1;
КонецЦикла;
- 🗃️ Архивирование старых документов:
Переносите документы старше 3–5 лет в архивную базу. Это уменьшит размер основной таблицы нумераторов.
Для 1С:ERP и 1С:КА 2.4 актуальны дополнительные настройки:
- 🔄 Используйте распределенные нумераторы для филиалов.
- 📊 Настройте кеширование номеров в кластерном варианте работы.
⚠️ Внимание: В облачных решениях (1С:Fresh) часть параметров нумерации управляется на стороне сервера. Для изменений обращайтесь в поддержку с указанием ID вашей базы.
8. Проверка и аудит нумерации
Регулярный аудит нумерации помогает избежать проблем. Используйте следующие инструменты:
- 🔍 Стандартные отчеты:
В 1С:Бухгалтерии 3.0 откройте
Отчеты → Стандартные → Анализ нумерации документов. - 📊 Запросы для анализа:
Пример запроса для поиска дублей в документах
РеализацияТоваровУслуг:ВЫБРАТЬНомер,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
Документ.РеализацияТоваровУслуг
СГРУППИРОВАТЬ ПО
Номер
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
- 🛠️ Внешние обработки:
Используйте обработки из 1С:ИТС:
"Проверка нумерации документов""Поиск и исправление дублей""Анализ цепочек документов"
Для автоматизации аудита настройте регламентное задание, которое будет еженедельно проверять нумерацию и отправлять отчет на email:
Процедура ВыполнитьПроверкуНумерации()
// Формируем отчет
Отчет = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ...
|(ваш запрос для проверки нумерации)";
Результат = Запрос.Выполнить();
Отчет.Вывести(Результат);
// Отправляем по email
Почта = Новый Почта;
Сообщение = Новый СообщениеЭлектроннойПочты;
Сообщение.Текст = "Отчет по нумерации документов";
Сообщение.Тема = "Аудит нумерации 1С от " + ТекущаяДата();
Сообщение.Вложения.Добавить(Отчет.ЗаписатьВФайл());
Почта.Отправить(Сообщение, "admin@company.ru");
КонецПроцедуры
Регулярный аудит нумерации (раз в квартал) позволяет выявлять проблемы на ранних стадиях и избегать ошибок при сдаче отчетности.
FAQ: Частые вопросы по нумерации в 1С
Как сделать, чтобы номера документов начинались с определенного значения (например, 1000)?
В конфигураторе откройте свойства документа, найдите параметр Начальное значение нумерации и установите 1000. Если документ уже существует в базе, используйте код:
ДокументОбъект = Документы.ВашДокумент.СоздатьДокумент();
ДокументОбъект.УстановитьНовыйНомер(1000);
ДокументОбъект.Записать();
После этого новые документы будут нумероваться с 1001.
Можно ли использовать буквы в номерах документов (например, А001, А002)?
Да, но нужно учитывать:
- 🔤 В свойствах документа установите тип номера как
Строка(а неЧисло). - 📌 В модуле объекта добавьте логику генерации номера, например:
Процедура ПриСозданииНаСервере(Отказ)ПоследнийНомер = ПолучениеПоследнегоНомера();
Номер = "А" + Формат(ПоследнийНомер + 1, "ЧГ=0; ДЛ=3");
КонецПроцедуры
- ⚠️ Буквенные номера могут вызвать проблемы при обмене данными с внешними системами (например, Диадок или Контур.Диадок), если они ожидают числовые значения.
Почему после обновления 1С нумерация сбросилась на 1?
Это типичная проблема при обновлении конфигураций на базе БСП. Причины:
- 🔄 В новой версии изменилась структура нумераторов (регистр
БСП.Нумераторы). - 📦 При обновлении не были перенесены данные из старого регистра.
- Восстановите нумерацию из резервной копии.
- Или вручную установите актуальные значения через конфигуратор:
Нумератор = РегистрыСведений.БСП_Нумераторы.СоздатьМенеджерЗаписи();Нумератор.Объект = Метаданные.Документы.ВашДокумент;
Нумератор.ТекущийНомер = 1000; // Ваше актуальное значение
Нумератор.Записать();
Решение:
Как сделать сквозную нумерацию для документов разных типов (например, для всех расходных документов)?
Для этого нужно:
- Создать общий нумератор в регистре сведений (например,
ОбщийНумераторРасходныхДокументов). - В модуле каждого документа (например,
РасходныйКассовыйОрдер,СписаниеТоваров) добавить обработчик:Процедура ПередЗаписью(Отказ)Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ МАКСИМУМ(Номер) КАК МаксНомер
ИЗ РегистрСведений.ОбщийНумераторРасходныхДокументов";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Номер = 1;
Иначе
Номер = Результат.МаксНомер + 1;
КонецЕсли;
// Записываем новый номер в регистр
Запись = РегистрыСведений.ОбщийНумераторРасходныхДокументов.СоздатьМенеджерЗаписи();
Запись.Номер = Номер;
Запись.Записать();
КонецПроцедуры
Минус такого подхода — необходимость блокировки регистра при одновременной записи документов.
Можно ли изменить формат нумерации для уже существующих документов?
Да, но это требует осторожности:
- С