Очистка последовательности: сброс границы и повторное проведение
Содержание
Очистить последовательность документов — значит удалить все записи о регистрации документов в ней и обнулить границу. После этого программа считает, что в правильном порядке не проведён ни один документ: граница пустая, и учёт по этой последовательности придётся пересчитать проведением заново.
Нужно это не всегда. Чаще достаточно восстановить последовательность — перепровести документы от текущей границы к концу периода. Очистку применяют, когда граница «застряла», восстановление зацикливается или базу переносят и старые записи регистрации только мешают. Ниже — чем отличаются эти операции, как подготовиться и как выполнить очистку в типовых конфигурациях на платформе 8.3 (интерфейс «Такси»). Конкретные названия и пути меню зависят от конфигурации — где это важно, я на это укажу.
Что такое граница последовательности и зачем её сбрасывать
Последовательность в 1С — это служебный объект конфигурации, который следит за порядком проведения документов. Типовые конфигурации содержат одну или несколько последовательностей: для партионного учёта, взаиморасчётов, начисления амортизации — набор зависит от конфигурации.
У каждой последовательности есть граница — точка (дата и документ), до которой все документы проведены в хронологическом порядке. Пока вы работаете «вперёд», граница ползёт к концу периода. Как только вы проводите или меняете документ задним числом — раньше границы, — программа понимает, что порядок нарушен, и отодвигает границу назад к этому документу. Всё, что после него, считается проведённым «не по порядку».
Здесь и расходятся две операции:
- 🔁 Восстановление — перепровести документы от границы к концу, чтобы она снова дошла до актуальной даты. Данные сохраняются, пересчёт идёт мягко.
- 🧹 Очистка — удалить записи регистрации полностью и обнулить границу. Это радикальнее: после неё в последовательности «чисто», как в новой базе.
Документы, движения и проводки при очистке не трогаются. Чистятся только служебные записи о регистрации в последовательности — то есть информация о порядке, а не сам учёт.
Выбор между двумя операциями проще показать по ситуации:
Почему рвётся последовательность проведения документов
Граница сбивается всегда по одной причине — документ встал в прошлое. А вот поводов для этого несколько:
- 🗓 Проведение задним числом. Бухгалтер провёл поступление или реализацию за прошлый месяц — граница отъехала на эту дату.
- ✏️ Правка проведённого документа в закрытом периоде: изменили сумму, номенклатуру, склад — и документ перепровёлся «в прошлом».
- 📥 Загрузка данных из обмена, из другой базы или из внешней обработки, когда документы приходят вперемешку по датам.
- ❌ Отмена проведения старого документа, а затем повторное проведение.
- 🔧 Технический сбой при закрытии месяца: регламентная операция по восстановлению последовательности оборвалась, и граница осталась в середине периода.
Пример, как это выглядит на практике. Граница стояла на 31 марта — весь квартал проведён по порядку. Бухгалтер провёл поступление задним числом, 15 января. Граница откатывается к 15 января, и всё, что проведено позже этой даты — вторая половина января, февраль, март, — программа отмечает как требующее перепроведения.
Само по себе нарушение границы — не ошибка в учёте. Это сигнал, что часть документов нужно перепровести, чтобы последовательные расчёты (себестоимость, партии, взаиморасчёты) учли изменения. Проблемой это становится, когда граница не двигается вперёд при закрытии месяца — тогда и возникает вопрос про очистку.
Подготовка информационной базы перед очисткой
Очистка необратима в том смысле, что прежние записи регистрации вернуть нельзя — только построить заново проведением. Поэтому пара минут на подготовку экономит разбор последствий.
Перед очисткой обязательно сделайте резервную копию базы. Это единственная страховка, если после операции результат окажется не тем, что ожидали.
Несколько пояснений к пунктам:
- Монопольный доступ не нужен. Очистка последовательности — это запись служебных данных, а не изменение структуры базы. Блокировать всех пользователей необязательно. Но не стоит очищать и перепроводить документы , с которыми в эту минуту работают коллеги — чужие проведения перемешаются с вашими.
- Имена последовательностей посмотрите заранее (как — в разделе про конфигуратор). Их бывает несколько, и чистить, как правило, нужно конкретную, а не все подряд.
- Запас времени. После очистки граница пустая, и до повторного проведения последовательные расчёты будут неполными. Планируйте очистку и проведение одним заходом.
Если база клиент-серверная и за ней работает отдел, выполняйте очистку в нерабочее время или на технологическом окне. Так вы не оборвёте чужие операции с документами.
Восстановление вместо очистки: групповое перепроведение
Прежде чем чистить, попробуйте штатный путь — он решает большинство случаев без радикальных действий.
В типовых конфигурациях на 8.3 восстановление последовательностей встроено в закрытие месяца : при выполнении регламентных операций программа сама перепроводит документы и двигает границу. Если закрытие месяца проходит до конца — отдельная очистка вам, скорее всего, не нужна.
Для точечного перепроведения пригодится обработка группового перепроведения документов. Найти её можно через раздел Операции либо через главное меню → Все функции (пункт Все функции включается в Настройки → Параметры → галочка отображения команды «Все функции»). В обработке задают период и виды документов и запускают перепроведение — граница после этого доходит до конца выбранного диапазона.
Перепроводите порциями: сначала один месяц, потом следующий. Если на каком-то месяце процесс встанет с ошибкой — вы сразу локализуете проблемный документ, а не будете искать его во всём периоде.
В клиент-серверной базе большое перепроведение лучше запускать в нерабочее время: оно идёт заметной нагрузкой на сервер и может тянуться долго при большом количестве документов. Если последовательностей несколько, восстанавливайте их по очереди, а не все разом, — так понятнее, на какой из них возникла проблема.
Очистку оставляют на случай, когда перепроведение не помогает: обрывается ошибкой, зацикливается, или вы сознательно начинаете последовательность «с нуля» после переноса базы.
Как очистить последовательность в режиме «Предприятие»
Отдельной кнопки «очистить последовательность» в стандартном интерфейсе типовой конфигурации, как правило, нет — это техническая операция. Выполняют её внешней обработкой, запущенной в режиме 1С:Предприятие под пользователем с полными правами.
Суть обработки — вызвать у нужной последовательности метод очистки на встроенном языке. Минимальный код выглядит так:
// Полная очистка последовательности и сброс границы
Последовательности.ИмяПоследовательности.Очистить();
Вместо ИмяПоследовательности подставьте точное имя из конфигуратора. Если нужно не стирать записи полностью, а лишь отодвинуть границу на начало (чтобы заставить перепровести всё), используйте работу с границей:
// Прочитать текущую границу
ТекущаяГраница = Последовательности.ИмяПоследовательности.ПолучитьГраницу();
// Сбросить границу на условное начало
НоваяГраница = Новый Граница(Дата(1, 1, 1), ВидГраницы.Включая);
Последовательности.ИмяПоследовательности.УстановитьГраницу(НоваяГраница);
Разница простая: Очистить() стирает сами записи регистрации, а УстановитьГраницу() оставляет их, но сдвигает точку отсчёта. Для «чистого старта» перед повторным проведением берут первый вариант.
Если последовательностей в базе несколько и нужно обнулить сразу все, перебирают их коллекцию из метаданных:
// Очистить все последовательности базы
Для Каждого ПоследовательностьМД Из Метаданные.Последовательности Цикл
Последовательности[ПоследовательностьМД.Имя].Очистить();
КонецЦикла;
Чистить все сразу стоит с осторожностью: после этого перепроводить придётся документы по всем последовательностям. Если проблема в одной — ограничьтесь ею.
Порядок работы в режиме «Предприятие»:
- Откройте внешнюю обработку:
Файл→Открытьи выберите файл.epf(или запустите её изВсе функции, если обработка добавлена в базу). - Убедитесь, что выбрана нужная последовательность, а не все сразу.
- Запустите очистку.
- Сразу после — проведите документы заново (групповым перепроведением или закрытием месяца).
Готовую обработку берите из проверенного источника или пишите сами. Чужой «универсальный чистильщик» может очистить не ту последовательность или задеть лишнее. Резервная копия из предыдущего шага — на этот случай.
Что проверить в конфигураторе
Конфигуратор здесь нужен не для самой очистки, а чтобы действовать прицельно и безопасно.
Узнать точные имена. Откройте дерево конфигурации и разверните ветку Последовательности. Там перечислены все последовательности базы с их именами — именно эти имена подставляют в код обработки. Заодно видно, что движет каждую из них.
Понять состав регистрации. У последовательности на вкладках свойств указаны документы, которые в ней регистрируются, и наборы записей, по которым она восстанавливается. Это подсказывает, какие документы придётся перепровести после очистки.
Собрать внешнюю обработку. Саму .epf с кодом из предыдущего раздела создают в конфигураторе: новая внешняя обработка → модуль → код очистки → сохранить файл. Запускают её потом уже в режиме «Предприятие».
Менять структуру конфигурации для очистки последовательности не требуется. Монопольный доступ к базе нужен только для операций со структурой (обновление, загрузка .dt, тестирование) — к очистке последовательности это не относится.
Не редактируйте служебные таблицы последовательности напрямую через внешние инструменты. Работайте только штатными средствами платформы — методами объекта и стандартными обработками.
Проверка результата и профилактика
После очистки граница пустая — это нормально и ожидаемо. Главная проверка в том, чтобы её снова «догнать» проведением и убедиться, что учёт сошёлся.
Посмотреть текущую границу проще всего той же обработкой: метод ПолучитьГраницу() возвращает дату и документ, на которых стоит точка отсчёта. Если метод вернул пустое значение сразу после очистки — всё отработало верно. Если после повторного проведения граница так и осталась пустой или замерла на старой дате — проведение где-то прервалось.
Что проверить:
- ✅ Граница дошла до конца периода. После повторного проведения или закрытия месяца граница должна встать на актуальную дату. Если она снова застряла в середине — ищите документ, на котором спотыкается проведение.
- ✅ Учёт пересчитался. Для конфигураций с бухгалтерией запустите
Экспресс-проверку ведения учётаи перепроверьте себестоимость, партии, взаиморасчёты за период — именно их считают последовательные операции. - ✅ Закрытие месяца проходит до конца без зацикливания на восстановлении последовательности.
Чтобы граница рвалась реже:
- 🗓 Закрывайте периоды и запрещайте редактирование закрытых месяцев через даты запрета изменения.
- 🔁 Если провели документ задним числом — сразу перепроводите последующие или запускайте закрытие месяца, не копите «хвост».
- 📥 После массовой загрузки данных перепроводите загруженный период целиком.
- 👥 Договоритесь в команде, кто и когда проводит документы прошлых периодов: хаотичные правки задним числом рвут границу чаще всего.
Такой порядок работы держит границу у конца периода, и возвращаться к очистке приходится редко — обычно только при переносе базы или после серьёзного сбоя.