Перенумерация документов в 1С 8.3 — как исправить нумерацию

Довольно часто в программе 1С встречаются ситуации, когда происходит нарушение нумерации документов. Изменить положение можно как штатными средствами, так и написав обработку. Стандартный функционал 1С 8.3 производить перенумерацию не всех документов (приходный/расходный кассовый ордер и счет-фактура).

Перед запуском перенумерации документов всегда делайте резервные копии ваших данных!

Исправление нумерации в 1С Бухгалтерия 3.0 штатной обработкой

Рассмотрим как исправить нумерацию в типовой конфигурации 1С 8.3 Бухгалтерия 3.0. В меню «Отчеты» выберите пункт «Экспресс–проверка».

быстрая проверка

В открывшейся форме выберите организацию и период. Далее нажмите «Выполнить проверку».

выполнение проверки

Программа выведет отчет с результатами проверки ведения учета. В данном примере мы перешли в группировку «Операции по кассе» и раскрыли пункт «Соблюдение нумерации ПКО». Надпись «Обнаружены ошибки» в колонке справа свидетельствует в 1С 8.3 о том, что в приходных кассовых документах нарушена последовательность нумерации документов.

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

Программа рекомендует нам совершить автоматическую перенумерацию документов, что мы собственно и сделаем, нажав по одноименной гиперссылке в отчете. Данная операция доступна только с полными правами.

Некоторое время 1С 8.3 будет анализировать данные. Обычно это происходит не долго, но все зависит от количества документов.

Далее программа выведет окно с теми документами, перенумерацию которых необходимо произвести. Начальный номер подставляется по умолчанию, но его можно изменить. В левой колонке табличной части отображаются текущие номера документов, а в правой – те, которые будут присвоены после выполнения перенумерации.

перенумерация ПКО

В принципе, нас все устраивает, и мы оставим настройки по умолчанию. Далее нажмем на кнопку «Продолжить».

В нашем случае обработка документов была произведена довольно быстро. В результате программа вывела окно с информацией об измененных данных.

результат работы обработки

Создание обработки для перенумерации (для программистов)

Данный способ используется в том случае, когда у вас сбилась нумерация в других документах и штатными средствами ее исправить нельзя. Вы можете написать обработку самостоятельно, либо заказать ее у специалиста. Скачать обработку можно по ссылке (только для ознакомления).

Рассмотрим самый простой пример алгоритма перенумерации документа. В качестве документа будем использовать требование – накладную.

Для начала расположим на форме те же элементы, что были в штатном механизме перенумерации.

расположение элементов на форме 1С 8.3

Команда «Выполнить» будет вызывать серверную процедуру.

Сначала необходимо получить все требования накладные за указанный период по организации.

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

ЗапросТН.УстановитьПараметр("НачалоПериода", НачалоДня(Объект.НачалоПериода));
ЗапросТН.УстановитьПараметр("КонецПериода", КонецДня(Объект.КонецПериода));
ЗапросТН.УстановитьПараметр("Орг", Объект.Организация);
РезультатЗапроса = ЗапросТН.Выполнить();
ВыборкаТН = РезультатЗапроса.Выбрать();

Далее в цикле перебирается каждая накладная и у нее меняется номер. Он зависит от установленного префикса в организации и начального номера, указанного на форме обработки. Режим записи (запись или проведение) зависит от того, был ли изначально проведен документ.

ННомер = Объект.НачальныйНомер;

Пока ВыборкаТН.Следующий() Цикл
ПРФ = ВыборкаТН. ПРФ;
ДокументОбъект = ВыборкаТН.Ссылка.ПолучитьОбъект();
ДокументОбъект.Номер = ПРФ + Прав("000000000000000000" + ННомер, 11 - СтрДлина(ПРФ));
ННомер = ННомер + 1;

Попытка
Если ДокументОбъект.Проведен Тогда
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки

КонецЦикла;

Изначально у нас было два документа «Требование – накладная». Как мы видим на рисунке, номера указаны не правильно. Чем раньше создан документ, тем меньше у него должен быть номер.

некорректная нумерация

В результате запуска описанного выше алгоритма номера восстановили правильную последовательность. Первый документ остался проведенным, а второй просто записанным.

исправленная нумерация

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