Исправление нумерации документов в 1С
Проблемы с нарушением нумерации документов весьма распространенная практика при работе в программе 1С. Для исправления данной ситуации имеется отдельный механизм «Экспресс-проверка ведения учета», но его возможности позволяют проводить проверку исключительно счетов-фактур и кассовой документации.
Ниже будут рассмотрены действия, направленные на исправление ситуации с нарушением последовательности операций.
Главное, перед началом любой работы с программой выполнить копирование данных, чтобы возможное появление ошибки не стало причиной безвозвратной потери данных в системе.
Перенумерация с использованием экспресс-проверки
Получить доступ к данной обработке пользователи могут через раздел «Отчеты» — «Анализ учета» — «Экспресс-проверка». Далее система выдает новую форму:
В ней необходимо только указать временной интервал, за который должна быть проведена сверка. Ее старт осуществляется командой «Выполнить проверку».
При условии обнаружения ошибок система будет выделять такие фрагменты красным цветом. Выглядит вариант с обнаружением ошибок следующим образом:
При обнаружении наличия ошибок система выступает с предложением автоматического устранения ошибки. Для этого достаточно нажать на ссылку:
В результате проведенной работы система проведет восстановление правильной последовательности нумерации документов, причем пользователи имеют возможность задать начальную величину номера, с которого осуществляется перенумерация. Это необходимо в случаях, когда изменения требуется внести не с начала года, а по ходу.
С учетом того, что после проведения процедуры изменения нумерации необходимо перепроведение всех документов. В случае наличия большого объема, данный процесс может занять значительное время.
После нажатия на кнопку «Продолжить» система стартует по обновлению существующей нумерации и устранению ранее выявленных ошибок.
Создание обработки для перенумерования силами программистов
В качестве примера можно рассмотреть раздел «Реализация (акты, накладные)».
Для них условно были включены дополнительные реквизиты:
- ДатаНачала;
- ДатаОкончания;
- НачальныйНомер;
- Организация.
Параметр «Организация» применяется только в случаях, когда учет в программе осуществляется одновременно для нескольких организаций. В противном случае имеется упростить поиск за счет установки критерия отбора «Префикс». В результате система выдает следующего вида форму:
Остается сформировать соответствующую серверную команду, так как запрос будет отправляться именно на сервер. «ВыполнитьНаСервере()».
Далее формируется запрос:
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка,
| РеализацияТоваровУслуг.Организация.Префикс
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Организация.Ссылка = &Организация
| И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания»;
Запрос.УстановитьПараметр(«ДатаНачала», НачалоДня(ЭтаФорма.ДатаНачала));
Запрос.УстановитьПараметр(«ДатаОкончания», КонецДня(ЭтаФорма.ДатаОкончания));
Запрос.УстановитьПараметр(«Организация», ЭтаФорма.Организация);
РезЗапроса = Запрос.Выполнить();
ВыборкаДетЗаписи = РезЗапроса.Выбрать();
Далее необходимо пройти по результатам выборки с целью внесения изменений в нумерацию:
НачНомер = ЭтаФорма.НачальныйНомер;
Пока ВыборкаДетЗаписи.Следующий() Цикл
Префикс = ВыборкаДетЗаписи.ОрганизацияПрефикс;
ДокОбъект = ВыборкаДетЗаписи.Ссылка.ПолучитьОбъект();
ДокОбъект.Номер = Префикс + Прав(«000000000000000000» + НачНомер, 11 — СтрДлина(Префикс));
НачНомер = НачНомер + 1;
Попытка
Если ДокОбъект.Проведен Тогда
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
КонецЦикла;
Указанный выше пример рассматривается в качестве упрощенного варианта, и при других исходных данных имеется возможность задачи иных документов или изменения нумерации справочников.
Например, до начала упорядочивания имелась нумерация подобного вида:
А после завершения работ она приобрела следующий внешний вид: