Проблема сбившейся нумерации — одна из самых распространенных задач, с которой сталкиваются администраторы и программисты 1С. Ситуация, когда к привычному номеру внезапно добавляется новый префикс (например, «ДМ»), а счетчик сбрасывается на единицу, может парализовать работу бухгалтерии. Рассмотрим подробно, почему это происходит и как вернуть нумерацию в правильное русло.
Первым делом проанализируем, откуда в номере документа взялись лишние символы. В системе 1С итоговый номер формируется из нескольких составляющих. Если раньше номер выглядел как РЮ0000220, а стал ДМРЮ00001, это означает, что в структуру номера добавился еще один префикс. Разберем основные источники появления префикса «ДМ»:
Чтобы понять, почему нумерация «сбрасывается», нам нужно рассмотреть, как платформа 8.3 обрабатывает текстовое поле номера. Алгоритм работает следующим образом:
Программа берет строку номера, отсекает префиксную часть (все нецифровые символы в начале) и анализирует оставшуюся числовую часть. Если в числовую часть попадает буква (например, из-за того, что префикс стал длиннее или пользователь вставил символ в середину), алгоритм инкремента «ломается». Рассмотрим на примере:
Допустим, длина номера составляет 11 символов.
Старый формат: РЮ000000220 (Префикс «РЮ» — 2 знака, номер — 9 знаков).
Новый формат: ДМРЮ0000001 (Префикс «ДМРЮ» — 4 знака, номер — 7 знаков).
Для системы ДМРЮ0000001 — это совершенно новая серия номеров. Поскольку документов, начинающихся на «ДМРЮ», в старом периоде не было, 1С начинает отсчет с 1. Именно поэтому обычное ОбновитьНумерациюОбъектов не помогает: оно лишь очищает кэш свободных номеров, но не исправляет логику, заложенную в уже записанных данных.
Проанализируем ситуацию и выполним последовательные действия для восстановления порядка.
Проверим, не установлен ли префикс «ДМ» на уровне всей базы. Для этого перейдем в меню Администрирование — Синхронизация данных. Посмотрим на поле «Префикс этой информационной базы». Если там указано «ДМ», и это было сделано ошибочно, префикс следует удалить или изменить на корректный. Однако помните: простое удаление префикса в настройках не исправит уже созданные документы.
Нам необходимо найти документ, с которого началась «неправильная» серия. Обычно это самый ранний документ с префиксом «ДМ». Проверим его движения и историю изменений, если это возможно. Если документ был изменен вручную, нам придется перенумеровать всю цепочку после него.
Метод ОбновитьНумерациюОбъектов полезен, когда в системе возникли «дырки» или когда номера перестали назначаться автоматически при наличии свободных значений. Рассмотрим пример кода, который можно запустить во внешней обработке:
// Обновление нумерации для конкретного типа документа
ВыборкаМетаданных = Метаданные.Документы.БанковскаяВыписка; // Укажите нужный тип
ОбновитьНумерациюОбъектов(ВыборкаМетаданных);
Сообщить("Нумерация объектов обновлена успешно");
Важно: Этот метод сработает только в том случае, если вы уже удалили или исправили документы с «неправильными» номерами. Пока в базе есть документ ДМРЮ00001, система будет считать его эталоном для следующего номера в этой серии.
Если документов с ошибочными номерами много, ручное исправление неэффективно. Проанализируем алгоритм массового исправления с помощью обработки «Универсальный подбор и обработка объектов»:
ПлатежноеПоручениеВходящее).ДМРЮ00001 превратить в РЮ0000222 (продолжив старую последовательность).Рассмотрим пример логики, которую можно применить в коде для исправления префиксов, или воспользоваться универсальным редактором объектов:
Процедура ИсправитьПрефикс(ДокументОбъект)
СтарыйНомер = ДокументОбъект.Номер;
// Удаляем первые два символа "ДМ", если они есть
Если Лев(СтарыйНомер, 2) = "ДМ" Тогда
НовыйНомер = Сред(СтарыйНомер, 3);
ДокументОбъект.Номер = НовыйНомер;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецПроцедуры
Иногда визуально номера выглядят одинаково, но нумерация все равно сбивается. Проанализируем причину — это могут быть символы из разных раскладок (например, латинская «P» вместо русской «Р» в префиксе). Для системы это разные строковые последовательности.
Также обратим внимание на длину номера, установленную в конфигураторе. Если вы добавили префикс, длина которого вместе с числовой частью превышает установленный предел (например, 11 символов), 1С «откусит» знаки с конца или начала, что приведет к дублированию номеров и ошибке "Номер не уникален".
Чтобы ситуация не повторилась, рекомендуем придерживаться следующих правил:
Таким образом, решение проблемы всегда кроется в приведении всех документов текущего периода к единому формату префикса и очистке кэша нумерации. После массового исправления номеров обязательно выполните ОбновитьНумерациюОбъектов, чтобы платформа «подхватила» актуальное максимальное значение.