Справочники и Данные · 12 мин
Как сбросить нумерацию справочника в 1С
Как сбросить нумерацию справочника в 1С: обработка «Универсальный подбор и обработка объектов», код в консоли, типовые механизмы. Риски, проверка результата, FAQ.
Нумерация элементов справочника в 1С хранится как отдельный счётчик внутри информационной базы: платформа запоминает последний присвоенный код и при создании нового элемента увеличивает его на единицу. Если элементы удалялись, тестовые записи засорили диапазон или коды «убежали» после обмена данными, возникает потребность сбросить нумерацию — вернуть счётчик к началу или задать конкретное значение.
Штатной кнопки «сбросить нумерацию» в пользовательском интерфейсе большинства конфигураций нет. Задача решается тремя путями: типовой обработкой «Универсальный подбор и обработка объектов», небольшим кодом в консоли кода (внешней обработкой) или перенумерацией существующих элементов с последующим сдвигом счётчика. Выбор зависит от того, нужно ли просто обнулить счётчик или ещё и привести в порядок сами коды.
Прежде чем менять нумерацию, важно понимать последствия: код — это часть ссылочной целостности данных, и при неаккуратном сбросе возможны дубли кодов, ошибки обмена и путаница в печатных формах. Ниже разобраны безопасные способы, ограничения и проверка результата.
Почему нумерация «сбивается» и когда её нужно сбрасывать
Счётчик кодов справочника ведётся платформой автоматически и не уменьшается при удалении элементов. Если создать и удалить сто тестовых контрагентов, следующий реальный элемент получит код с учётом всех удалённых. Это нормальное поведение, но в ряде случаев оно мешает: в печатных формах выводятся коды с большими «дырами», руководство требует сквозную нумерацию, а при обмене с внешними системами длинные коды не помещаются в отведённые поля.
Типичные ситуации, когда сброс нумерации оправдан: начало нового учётного периода, завершение тестирования базы перед вводом в эксплуатацию, перенос данных с последующей чисткой, восстановление после сбоя обмена, когда коды «убежали» вперёд. Если же пропуски кодов никому не мешают, трогать счётчик не стоит — рисков больше, чем пользы.
Подготовка: что проверить до сброса нумерации
Первый шаг — резервная копия. Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей; для клиент-серверной — сделать выгрузку в dt через конфигуратор или средствами СУБД. Любая операция с нумерацией относится к изменению данных, и откат без копии невозможен.
Второй шаг — анализ зависимостей. Проверьте, где используются коды справочника: участвует ли справочник в планах обмена (дубли кодов могут вызвать коллизии), выводится ли код в печатных формах и отчётах, есть ли внешние системы, которые ссылаются на элементы по коду. Также уточните настройки справочника в конфигураторе: длину кода, признак автонумерации и контроль уникальности.
Третий шаг — права доступа. Операции с нумерацией требуют прав администратора или полных прав на справочник. В клиент-серверной базе убедитесь, что во время работы с нумерацией нет активных сеансов пользователей, которые могут параллельно создавать новые элементы, — иначе счётчик снова сместится.
Способ 1: сброс через обработку «Универсальный подбор и обработка объектов»
Наиболее безопасный путь без программирования — типовая обработка «Универсальный подбор и обработка объектов» (UniversalSelectionAndProcessing.epf), которую можно найти на диске ИТС или в составе стандартных инструментов разработчика. Она работает и в обычном, и в управляемом приложении.
Порядок действий: откройте обработку через «Файл → Открыть», выберите нужный справочник, перейдите на вкладку обработки и найдите действие, связанное с установкой номера (в разных версиях оно называется «Установить номер», «Перенумеровать объекты» или подобно). Укажите начальное значение — например, 1 — и выполните операцию. Обработка перезапишет коды существующих элементов и установит счётчик на заданную позицию.
- 1Сделайте резервную копию базы
- 2Откройте обработку «Универсальный подбор и обработка объектов»
- 3Выберите нужный справочник и настройте отбор при необходимости
- 4Выберите действие «Перенумеровать объекты» или «Установить номер»
- 5Укажите начальное значение счётчика и выполните
- 6Проверьте коды нескольких элементов и создайте тестовый элемент
Если задача — только сбросить счётчик без перенумерации существующих элементов, обработка не всегда подходит: большинство её режимов меняют коды самих записей. В этом случае используйте способ с кодом, описанный ниже.
Способ 2: сброс нумерации кодом в консоли
Быстрый и точечный вариант — выполнить несколько строк встроенного языка через консоль кода (входит в «Инструменты разработчика») или любую внешнюю обработку с редактором кода. Платформа предоставляет метод УстановитьНовыйКод() у менеджера справочника, который сбрасывает счётчик автонумерации.
// Сброс счётчика автонумерации справочника «Контрагенты»
Справочники.Контрагенты.УстановитьНовыйКод("000000001");
// Альтернатива: создать элемент с нужным кодом вручную —
// счётчик подтянется к этому значению
НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйЭлемент.УстановитьНовыйКод("000000001");Метод УстановитьНовыйКод() у менеджера справочника устанавливает счётчик в указанное значение, не трогая существующие элементы. Код указывается строкой с учётом длины кода, заданной в конфигураторе: если длина 9 символов, передавайте «000000001», а не «1». Следующий созданный элемент получит код на единицу больше установленного.
Обратите внимание: если в справочнике уже есть элементы с кодами больше устанавливаемого значения, при включённом контроле уникальности платформа при создании новых элементов будет перебирать свободные коды, и нумерация может вести себя неочевидно. Поэтому сброс счётчика без перенумерации имеет смысл только когда существующие коды заведомо меньше нового стартового значения или справочник пуст.
Способ 3: полная перенумерация существующих элементов
Когда нужно не только сбросить счётчик, но и привести в порядок коды уже записанных элементов (убрать «дыры», начать с единицы), выполняется полная перенумерация. В типовых конфигурациях на базе БСП есть готовый механизм префиксации и перенумерации, а для произвольных случаев пишется простая обработка.
Логика перенумерации: запросом выбираются все элементы, упорядоченные по нужному признаку (по дате создания, наименованию или текущему коду), затем в цикле каждому элементу присваивается новый код через УстановитьНовыйКод() объекта с последующей записью. После завершения цикла счётчик автонумерации устанавливается на последний присвоенный код.
Для иерархических справочников и справочников с владельцами перенумерация выполняется так же — коды независимы от иерархии. Но учитывайте, что изменение кода объекта фиксируется в планах обмена как изменение данных и уйдёт в другие узлы при следующей синхронизации.
Особенности для разных конфигураций и режимов
В файловых базах все описанные операции выполняются напрямую. В клиент-серверном варианте рекомендуется проводить сброс нумерации в монопольном режиме или в нерабочее время: параллельное создание элементов пользователями во время перенумерации приводит к конфликтам блокировок и непредсказуемым кодам.
В конфигурациях на управляемых формах (УТ 11, ERP, БП 3.0, ЗУП 3.1) часть справочников имеет нестандартную длину кода и автоматическую подстановку префиксов организации или информационной базы. Префикс хранится в коде, поэтому при ручной установке счётчика передавайте значение с учётом префикса, иначе следующие коды получатся без него или с неверным смещением.
Сравнение способов сброса нумерации
Подходит без навыков программирования; меняет коды существующих элементов; требует файла обработки с ИТС
Самый быстрый сброс счётчика без изменения данных; требует консоли кода и понимания длины кода
Убирает «дыры» и приводит коды в порядок; самый рискованный вариант, обязательна копия и монопольный режим
Проверка результата и типичные ошибки
После сброса создайте тестовый элемент справочника и проверьте присвоенный код: он должен соответствовать ожидаемому значению (например, «000000002» после установки счётчика на «000000001»). Тестовый элемент затем удалите — помните, что счётчик при этом не уменьшится, и при необходимости скорректируйте его ещё раз.
Как проверить результат
Соответствует ожидаемому следующему значению
Код снова большой или с пропуском — счётчик не применился
Дублей нет, запись проходит без ошибок
Ошибка «Код не уникален» при создании элемента
Коды выводятся корректно
Старые коды в формах — где-то остались ссылки на прежние значения
Если после сброса нумерация ведёт себя странно (коды перескакивают, появляются дубли), проверьте, нет ли в конфигурации подписок на события «ПриУстановкеНовогоКода», которые переопределяют стандартное поведение, — в доработанных конфигурациях это частая причина.
Если цель — только красивые коды в новом периоде, часто проще не сбрасывать счётчик, а включить периодическую нумерацию с префиксом года через механизм префиксации БСП: коды вида «00-000001» обновляются ежегодно без риска для существующих данных.
Часто задаваемые вопросы
Можно ли сбросить нумерацию справочника без программирования?
Да, если у вас есть обработка «Универсальный подбор и обработка объектов» с диска ИТС — в ней есть действие перенумерации. Полностью штатной кнопки в пользовательском интерфейсе типовых конфигураций для сброса счётчика нет, поэтому без внешних инструментов задача не решается.
Что будет с уже созданными элементами после сброса счётчика?
Ничего: метод УстановитьНовыйКод() у менеджера справочника меняет только счётчик автонумерации. Существующие элементы сохраняют свои коды. Если новые коды начнут совпадать со старыми, при включённом контроле уникальности платформа будет выдавать ошибку или подбирать свободные значения.
Опасен ли сброс нумерации для обмена данными?
Да, это самый рискованный сценарий. Если справочник участвует в РИБ или обмене с другими системами, дубли кодов после сброса приводят к коллизиям: объекты могут сопоставиться неправильно или синхронизация остановится с ошибкой. Перед сбросом согласуйте действия с ответственным за интеграции.
Почему после удаления элементов нумерация не начинается заново?
Так устроена платформа: счётчик кодов хранится отдельно и при удалении элементов не уменьшается. Это защищает от повторного использования кодов, на которые могли остаться ссылки в других данных. Вернуть счётчик назад можно только вручную одним из описанных способов.
Как сбросить нумерацию, если код справочника содержит префикс?
Передавайте в УстановитьНовыйКод() значение вместе с префиксом, например «УТ-000001», с соблюдением полной длины кода из настроек справочника. Если передать только числовую часть, следующие коды создадутся без префикса, что нарушит единообразие нумерации.
Нужен ли монопольный режим для сброса нумерации?
Для простого сброса счётчика через УстановитьНовыйКод() — желателен, но не обязателен. Для полной перенумерации существующих элементов монопольный режим или нерабочее время настоятельно рекомендуются: параллельная работа пользователей вызовет блокировки и конфликты кодов.
Что важно запомнить
Сброс нумерации справочника в 1С выполняется обработкой «Универсальный подбор и обработка объектов» или кодом Справочники.Имя.УстановитьНовыйКод() с учётом длины кода и префикса. Перед операцией обязательны резервная копия и проверка участия справочника в обменах. После сброса создайте тестовый элемент и убедитесь, что код присваивается корректно.