Номера документов в 1С пошли с дырами или скачком: правим вручную и обработкой

· 11 мин

Содержание

Один документ в 1С 8.3 перенумеровывают вручную: открывают его, исправляют поле «Номер» в шапке и записывают. Если нужно перенумеровать десятки документов подряд (например, все реализации за год), типовая Бухгалтерия 3.0 отдельной команды для этого не даёт. Тогда пишут небольшую внешнюю обработку : она проходит документы по дате и присваивает номера в два прохода, чтобы не упереться в контроль уникальности.

Типичная ситуация: менеджер вбил номер 000900 руками, и все следующие накладные пошли с 901-го, хотя до этого было 214. Или удалили пачку ошибочных счетов, и в журнале образовалась дыра. Оба случая исправляются без программиста, если соблюдать порядок действий.

Как 1С 8.3 нумерует документы и откуда берутся скачки

Перед правкой полезно понимать, как платформа выдаёт номер. Иначе исправленная нумерация снова «уедет» на следующий день.

Каждый вид документа в конфигурации имеет свойства нумерации. Их видно в Конфигураторе, в свойствах объекта:

  • 🔢 Тип номера — строка или число. В типовых конфигурациях на БСП почти всегда строка.
  • 📏 Длина номера — в Бухгалтерии 3.0 это 11 символов, например 00БП-000123.
  • 📅 Периодичность — в пределах какого периода номер уникален: год, квартал, месяц, день или вся база. Для большинства документов БП 3.0 — год.
  • 🔒 Контроль уникальности — запрещает записать второй документ с тем же номером в одном периоде.
  • ⚙️ Автонумерация — номер присваивается при первой записи.

Как устроен номер с префиксом

В типовых конфигурациях номер состоит из двух частей: префикса и порядкового номера. Префикс собирается из префикса информационной базы и префикса организации. Поэтому номер 00БП-000123 читается так: 00 — префикс базы, БП — префикс организации, 000123 — порядковый номер.

Префикс организации задают в карточке организации, поле «Префикс». Префикс базы — в настройках синхронизации данных, раздел Администрирование → Синхронизация данных.

💡 На печать типовые формы выводят номер без префикса и ведущих нулей. В накладной клиент увидит просто «123».

Почему номер вдруг скачет

Автонумерация берёт следующий номер после наибольшего существующего в этом периоде и с этим префиксом. Отсюда три частых эффекта:

  • 📈 Скачок вперёд. Кто-то ввёл номер вручную (000900) или загрузил документ из другой базы с большим номером. Следующий документ получит 901.
  • 🕳 Дыра. Документы удалили из середины. Освободившиеся номера автоматически не занимаются: новый документ всё равно получит «максимум + 1».
  • 🔁 Повтор. Удалили последний документ периода. Следующий получит его номер снова.

Документы, помеченные на удаление, по-прежнему занимают свои номера. Пока пометку не удалили окончательно, номер считается занятым.

Как изменить номер одного документа вручную

Ручная правка подходит, когда нужно исправить 1–5 документов. Порядок для Бухгалтерии 3.0, УТ 11 и других конфигураций с интерфейсом «Такси»:

  1. Откройте документ из журнала.
  2. Найдите поле «Номер» в шапке, рядом с датой.
  3. Введите новый номер в том же формате, что у соседних документов, — с префиксом и ведущими нулями: 00БП-000215, а не 215.
  4. Нажмите «Записать». Если документ проведён, достаточно записи: номер не влияет на движения по регистрам.
  5. Обновите журнал и проверьте, что документ встал на место.

Если поля «Номер» в шапке не видно, откройте Ещё → Изменить форму и включите его видимость. Права на изменение формы обычно есть у пользователя с полными правами.

Если ввести номер без префикса (215), документ формально запишется, но выпадет из общей последовательности. Сортировка строк в журнале пойдёт не по порядку, а следующий автоматический номер посчитается по-старому.

Когда программа отказывается записывать документ из-за неуникального номера, значит, такой номер в этом периоде уже занят. Найдите документ-«двойник» через поиск по номеру в журнале, освободите номер (дайте двойнику временный) и только потом повторите запись.

Как вернуть нумерацию после ручного скачка

Вернёмся к примеру с 000900. Последний «правильный» номер — 000214, затем идёт ошибочный 000900 и, допустим, два документа после него: 000901 и 000902.

  1. Документу 000900 поставьте номер 00БП-000215.
  2. Документам 000901 и 000902 — 000216 и 000217.
  3. Создайте тестовый документ и запишите его без номера. Он должен получить 000218. Удалите тестовый документ.

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

Массовая перенумерация документов внешней обработкой

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

Главная трудность — контроль уникальности. Если сразу присвоить документу номер 000005, а в периоде уже есть другой документ с 000005, запись упадёт. Решение — два прохода:

  1. Всем документам выборки дать временные номера, которых точно нет в базе.
  2. Затем раздать окончательные номера по порядку дат.

Пример кода

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

Процедура ПеренумероватьРеализации(Организация, Год) Экспорт

    НачалоПериода = Дата(Год, 1, 1);

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Док.Ссылка КАК Ссылка,
    |    Док.Номер КАК Номер
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК Док
    |ГДЕ
    |    Док.Организация = &Организация
    |    И Док.Дата МЕЖДУ &Начало И &Конец
    |
    |УПОРЯДОЧИТЬ ПО
    |    Док.Дата,
    |    Док.Номер";
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Начало", НачалоПериода);
    Запрос.УстановитьПараметр("Конец", КонецГода(НачалоПериода));

    Таблица = Запрос.Выполнить().Выгрузить();

    НачатьТранзакцию();
    Попытка

        // Проход 1: временные номера вида Я0000000001
        Для Индекс = 0 По Таблица.Количество() - 1 Цикл
            Строка = Таблица[Индекс];
            Длина = СтрДлина(СокрЛП(Строка.Номер));
            Объект = Строка.Ссылка.ПолучитьОбъект();
            Объект.Номер = "Я" + Формат(Индекс + 1,
                "ЧЦ=" + Формат(Длина - 1, "ЧГ=0") + "; ЧВН=; ЧГ=0");
            Объект.ОбменДанными.Загрузка = Истина;
            Объект.Записать();
        КонецЦикла;

        // Проход 2: окончательные номера с исходным префиксом
        Для Индекс = 0 По Таблица.Количество() - 1 Цикл
            Строка = Таблица[Индекс];
            СтарыйНомер = СокрЛП(Строка.Номер);
            Префикс = Лев(СтарыйНомер, СтрНайти(СтарыйНомер, "-"));
            Цифр = СтрДлина(СтарыйНомер) - СтрДлина(Префикс);
            Объект = Строка.Ссылка.ПолучитьОбъект();
            Объект.Номер = Префикс + Формат(Индекс + 1,
                "ЧЦ=" + Формат(Цифр, "ЧГ=0") + "; ЧВН=; ЧГ=0");
            Объект.ОбменДанными.Загрузка = Истина;
            Объект.Записать();
        КонецЦикла;

        ЗафиксироватьТранзакцию();

    Исключение
        ОтменитьТранзакцию();
        ВызватьИсключение;
    КонецПопытки;

КонецПроцедуры

Что здесь происходит:

  • 📋 Запрос выбирает документы и сортирует их по дате. Время внутри даты тоже учитывается, поэтому документы одного дня встанут в порядке создания.
  • 🧷 ОбменДанными.Загрузка = Истина записывает документ без обработчиков конфигурации. Программа не перепроводит документ и не пересчитывает табличные части.
  • 🔄 Транзакция гарантирует, что при ошибке на середине все номера откатятся. Наполовину перенумерованного года не будет.
  • ✂️ Номер собирается под ту же длину, что был. Номер 00БП-000123 даёт префикс 00БП- и шесть цифр.

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

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

Запуск перенумерации под администратором

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

Подготовка

  • 💾 Сделайте резервную копию базы перед массовой перенумерацией. Откатить чужие номера вручную потом почти невозможно.
  • 👥 Выберите время, когда в базе никто не создаёт документы этого вида. Монопольный режим для перенумерации не нужен, но если кто-то запишет новую реализацию посреди процесса, транзакция может упасть на блокировке.
  • 🧪 Прогоните обработку сначала на копии базы и сравните журнал до и после.

Как открыть внешнюю обработку

Есть два способа:

  1. Разово. Главное меню (кнопка с тремя полосками) → Файл → Открыть, выберите файл .epf. Платформа покажет предупреждение о безопасности: подтвердите, что доверяете файлу. У пользователя должно быть право на интерактивное открытие внешних обработок — у полных прав оно есть.
  2. Через справочник. Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Так делают, если обработку будут запускать регулярно и другие пользователи. Для этого обработке нужен регистрационный блок по правилам БСП.

Нельзя ли просто изменить свойства нумерации

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

Нумерация документов в распределённой базе и при обменах

В распределённой информационной базе (РИБ) каждый узел имеет свой префикс. Именно он не даёт двум филиалам выдать одинаковые номера: в центральной базе номер будет ЦБ00-000045, в филиале — Ф100-000045, и это разные номера.

Правила для РИБ

  • 🌐 Перенумеровывайте документы только в одном узле, обычно в центральном. Изменения уйдут в остальные узлы при синхронизации, как любая другая правка документа.
  • 🔄 Перед перенумерацией выполните полную синхронизацию со всеми узлами. Иначе узел может прислать старую версию документа со старым номером.
  • 🏷 Не делайте префиксы узлов одинаковыми. Если два узла работают с одним префиксом, номера рано или поздно совпадут, и при загрузке возникнет конфликт уникальности.
  • ✅ После синхронизации откройте журнал в другом узле и сверьте пару номеров.

Обмены между разными конфигурациями

При обмене Управление торговлей 11 → Бухгалтерия 3.0 документы обычно приходят с номерами из источника. Если в УТ и БП один и тот же префикс базы, номера реализаций из УТ могут совпасть с номерами документов, созданных в БП вручную.

Выход — разнести префиксы баз: например, УТ в торговой базе и БП в бухгалтерской. Менять префикс лучше в начале года или квартала, чтобы новые документы сразу пошли с новым префиксом.

Восстановление нумерации после удаления документов или сбоя

Номера «плывут» не только из-за ручного ввода. Пять ситуаций, которые встречаются чаще других:

Диагностика: выберите симптом

Дыры после окончательного удаления

Если документы удалили через Администрирование → Обслуживание → Удаление помеченных объектов, их номера освободились. Закрывать ли дыру, решает учётная политика, а не программа. Требования к сплошной нумерации без пропусков в законодательстве установлены не для всех документов. Для первички по закону о бухучёте номер вообще не входит в обязательные реквизиты.

После сбоя базы

Тестирование и исправление информационной базы номера документов не меняет. Если после сбоя запустили проверку в Конфигураторе и в журнале что-то изменилось, причина не в нумерации, а в восстановленных или удалённых битых объектах. Сравните журнал с резервной копией до сбоя, прежде чем что-то перенумеровывать.

Когда перенумеровывать документы нельзя

Технически 1С позволяет поменять номер любого документа. Юридически это не всегда безопасно.

ДокументМожно ли менять номерПочему
Документ ещё не отдан контрагентуДаНомер видят только внутри компании
Накладная или акт уже подписаныНежелательноУ контрагента бумага со старым номером
Счёт-фактура выставленНет, если он отражён в книге продаж за сданный кварталНомер попадает в книгу продаж и в книгу покупок покупателя
Документ закрытого периодаТолько после снятия даты запретаИначе программа не даст записать

Счёт-фактура в 1С — отдельный документ со своим номером. Перенумерация реализаций его номер не трогает. Порядковый номер счёта-фактуры — обязательный реквизит по статье 169 НК РФ, а книга продаж формируется по правилам, утверждённым постановлением № 1137. Если номер в базе изменить после сдачи декларации по НДС, данные в базе разойдутся с тем, что уже ушло в налоговую и к покупателю.

Если документы попали в закрытый период, программа откажется записать изменения. Дату запрета задают в разделе Администрирование, настройка «Даты запрета изменения». Снимать её ради перенумерации стоит только по согласованию с главным бухгалтером и с возвратом сразу после работы.

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

Можно ли начинать нумерацию документов с единицы каждый год?
Да. В Бухгалтерии 3.0 у большинства документов периодичность номера — год, поэтому первый документ января сам получит номер 1. Для счетов-фактур порядок нумерации закрепите в учётной политике.
Почему в журнале номер с префиксом, а в печатной форме без него?
Типовые печатные формы убирают префикс базы, префикс организации и ведущие нули. В базе хранится полный номер 00БП-000123, на бумаге будет «123».
Влияет ли перенумерация на проводки?
Нет. Номер документа не участвует в движениях по регистрам, поэтому суммы и проводки останутся прежними. Перепроводить документы после смены номера не нужно.
Можно ли поменять номер у проведённого документа без отмены проведения?
Да. Исправьте номер и нажмите «Записать». Проведение не снимается, а движения не меняются.
Как найти документ с подозрительно большим номером?
Откройте журнал нужного вида, отсортируйте его по колонке «Номер» по убыванию и установите отбор по организации и году. Верхняя строка покажет, откуда пошёл скачок.

Источники

  • Налоговый кодекс РФ, статья 169
  • Постановление Правительства РФ от 26.12.2011 № 1137