Часто в работе с типовыми конфигурациями, такими как 1С:Управление нашей фирмой (УНФ), возникают ситуации, когда нумерация документов «сбивается» — для решения этой проблемы есть готовая настройка автоматической нумерации документов в 1С. Это происходит, если пользователь вручную вводит «кривой» номер документа, и система запоминает его как последний использованный. В результате последующие документы начинают создаваться с нежелательными префиксами или неверными числовыми значениями.
Давайте разберем, как исправить эту проблему и вернуть нумерацию в нормальное русло.
Платформа 1С для ускорения работы использует внутренний кэш — своего рода счетчик, который хранит информацию о последнем использованном номере. Когда вы меняете номер документа вручную, система фиксирует это значение в своем регистре — для защиты от ошибок есть расширение для контроля ввода данных в 1С. В дальнейшем автоматическая генерация номеров отталкивается именно от этого «сбитого» значения, игнорируя реальную максимальную нумерацию, имеющуюся в базе данных.
Для приведения нумерации в соответствие с фактическим состоянием базы данных в 1С предусмотрен встроенный метод ОбновитьНумерациюОбъектов. Этот метод анализирует все документы соответствующего типа, находит максимальный номер и обновляет внутренний кэш платформы.
Рассмотрим, как его применить на практике.
Если вам нужно оперативно исправить ситуацию и у вас есть права администратора, воспользуйтесь стандартным инструментом Групповая обработка справочников и документов. Это самый быстрый путь, не требующий создания внешних обработок.
СчетНаОплату).
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетНаОплату);
После этого выполните обработку. Система пересчитает нумерацию, опираясь на реальные данные в таблице документов. Теперь при создании нового счета программа подхватит корректный номер.
Если вы хотите иметь под рукой готовый инструмент для периодического обслуживания базы, создайте внешнюю обработку. Это удобно, если проблема возникает регулярно.
В модуле формы обработки добавьте команду, которая будет вызывать обновление нумерации. Пример кода:
&НаСервере
Процедура ВыполнитьОбновлениеНаСервере()
// Укажите нужный вам объект метаданных
ОбновитьНумерациюОбъектов(Метаданные.Документы.СчетНаОплату);
КонецПроцедуры
Этот метод является наиболее надежным и рекомендуемым способом синхронизации данных.
Важно понимать, что в некоторых средах, таких как облачные сервисы (например, 1С:Фреш), запуск произвольного кода через внешние обработки ограничен политиками безопасности. Если вы работаете в таком облаке, выполнить описанные действия самостоятельно через Групповую обработку или внешние файлы не получится.
В подобных случаях мы рекомендуем следующие шаги:
ОбновитьНумерациюОбъектов на уровне платформы.Использование ОбновитьНумерациюОбъектов позволяет эффективно восстановить порядок в нумерации документов без необходимости внесения изменений в конфигуратор или переписывания логики работы нумераторов.