Что делать, когда документ нарушает последовательность в 1С
Содержание
Чтобы документ перестал влиять на последовательность проведения, его нужно либо снять с проведения, либо сдвинуть границу последовательности за его дату, либо исключить весь вид документа из состава последовательности. Какой способ подойдёт — зависит от того, зачем документ вообще в неё попал.
Разберём последовательность как механизм платформы: где лежит её граница, почему один документ «заднего числа» откатывает её назад и как корректно вывести документ из-под контроля последовательности — руками в режиме «Предприятие», программно в Конфигураторе или отдельным расширением, не снимая конфигурацию с поддержки.
Почему один документ рвёт последовательность проведения
Последовательность — это объект конфигурации, который следит за правильным хронологическим порядком проведения документов. У неё есть две настройки: список видов документов, которые в неё входят, и список регистров, движения по которым на неё влияют.
Пока документы проводятся строго по возрастанию даты, граница последовательности двигается вперёд. Как только вы проводите или перепроводите документ с датой раньше текущей границы, платформа считает, что порядок нарушен, и откатывает границу назад — к дате этого документа. Всё, что было после, формально считается «проведённым не в том порядке» и требует восстановления.
Отсюда и запрос «удалить документ из последовательности». На практике за ним стоят разные ситуации:
- 🗓 документ задним числом (корректировка прошлого периода) каждый раз откатывает границу;
- ❌ ошибочный или задвоенный документ тянет границу на старую дату;
- 🔁 служебный документ, которому в этой последовательности не место, но его вид по ошибке включён в её состав;
- 🧩 документ из расширения или стороннего модуля, который не должен участвовать в контроле порядка.
Где посмотреть границу и состояние последовательности
Прежде чем что-то удалять, посмотрите, где именно стоит граница и какой документ её держит. Для этого есть стандартная форма платформы «Восстановление последовательностей ».
Откройте главное меню (кнопка со значком меню в левом верхнем углу интерфейса «Такси») → Все функции. Если пункта нет, включите его: главное меню → Сервис → Параметры → галочка Отображать команду "Все функции". Дальше — Все функции → раздел Стандартные → Восстановление последовательностей.
В открывшейся форме вы увидите:
- 📋 список всех последовательностей конфигурации;
- ✅ признак актуальности каждой (восстановлена / не восстановлена);
- 📅 дату, до которой последовательность актуальна, — это и есть граница.
Граница последовательности технически хранится как момент времени: дата плюс ссылка на конкретный документ. Если последовательность ведётся в разрезе измерений (например, по организациям), своя граница будет у каждого значения измерения — и восстанавливать их можно по отдельности.
В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) восстановление последовательностей встроено в закрытие периода, поэтому отдельно к этой форме обращаются редко. Но когда нужно разобраться именно с границей и конкретным документом — она самый прямой инструмент.
Как восстановить порядок в режиме «Предприятие»
Самый безопасный способ «убрать» проблемный документ — не трогая метаданные, довести границу до нужной даты средствами режима «Предприятие».
- В форме
Восстановление последовательностейотметьте нужную последовательность. - Задайте дату, до которой нужно восстановить порядок (обычно — конец закрытого месяца или текущая дата).
- Запустите восстановление. Платформа перепроведёт документы по порядку и сдвинет границу.
Если восстановление останавливается на одном и том же документе — именно он держит границу. Откройте его и решите, что с ним делать:
- документ ошибочный → пометьте на удаление и проведите удаление помеченных;
- документ нужен, но не должен влиять на порядок → снимите проведение (
Ещё→Отменить проведение), тогда он перестаёт создавать движения и выпадает из-под контроля последовательности; - документ корректен, просто стоит раньше границы → это нормальная ситуация, достаточно восстановить последовательность дальше его даты.
Восстановление перепроводит документы и меняет движения в рабочей базе. В многопользовательском режиме это создаёт нагрузку и может конфликтовать с работой коллег. Запускайте массовое восстановление в окно, когда в базе никто не работает, и только после резервной копии.
Снятие проведения — самый частый ответ на вопрос «как исключить один документ». Пока документ не проведён, движений он не создаёт, в регистрах, влияющих на последовательность, его нет, а значит, и границу он не держит.
Исключение документа и его вида через Конфигуратор
Если из последовательности нужно вывести не один документ, а целый вид документов, это уже уровень конфигурации.
Откройте Конфигуратор, найдите объект Последовательности → нужную последовательность. У неё две ключевые закладки:
- Входящие документы — виды документов, которые в неё входят. Уберите отсюда вид — и ни один документ этого вида больше не будет влиять на границу.
- Движения, влияющие на последовательность — регистры, по которым отслеживается порядок. Если убрать из списка регистр, движения документа по нему перестанут двигать границу.
Разница между двумя закладками важна. Убрав вид из «Входящих документов», вы исключаете документы полностью — они больше не участвуют в контроле порядка. Убрав регистр из «Движений, влияющих на последовательность», вы оставляете документы в составе, но перестаёте следить за порядком именно по этому регистру. Для задачи «вывести документ из-под контроля» обычно правят первую закладку.
После правки состава нужно обновить конфигурацию
базы данных (Обновить конфигурацию базы данных, F7). Это изменение структуры — оно требует монопольного доступа к базе, то есть всех пользователей придётся на время вывести из системы.
Границей можно управлять и программно — из обработки или модуля. Менеджер последовательности умеет читать и переустанавливать границу:
// получить текущую границу последовательности
Граница = Последовательности.ВзаиморасчетыПоДокументам.ПолучитьГраницу();
// сдвинуть границу на нужный момент времени,
// фактически выведя из-под контроля всё до этой даты
НовыйМомент = Новый МоментВремени(ДатаГраницы, ДокументСсылка);
Последовательности.ВзаиморасчетыПоДокументам.УстановитьГраницу(НовыйМомент);
Имя последовательности (ВзаиморасчетыПоДокументам) здесь условное — подставьте своё из дерева конфигурации. Точные сигнатуры методов объекта «МенеджерПоследовательности» и работу с измерениями сверьте в синтакс-помощнике Конфигуратора: наугад параметры не подставляйте, ошибка в границе рассыплет порядок по всей базе.
Прямая установка границы не перепроводит документы и не проверяет корректность движений. Вы просто говорите платформе «считай, что до этой даты всё в порядке». Применяйте это осознанно — например, когда точно знаете, что движения уже верны, а откат границы вызван технической правкой.
Как исключить документ через расширение конфигурации
Главная причина не лезть в основную конфигурацию — поддержка. Если вы меняете состав типовой последовательности напрямую, конфигурация частично снимается с поддержки, и каждое обновление превращается в ручное сравнение-объединение.
Расширения конфигурации
(появились в платформе 8.3.6) решают это: вы храните свои доработки отдельным файлом .cfe, а типовая конфигурация остаётся на полной поддержке и обновляется штатно.
Что реально сделать расширением, чтобы исключить документ из последовательности:
- ➕ добавить собственную обработку (внешнюю или в составе расширения), которая по кнопке снимает нужные документы с проведения или аккуратно сдвигает границу через методы менеджера последовательности;
- 🧷 добавить команду в форму документа — «Исключить из контроля последовательности» — чтобы ответственный делал это в один клик, без Конфигуратора;
- 🧮 добавить обработчик, который при проведении служебного документа не записывает движения в регистр, влияющий на последовательность.
У расширения есть предел: состав последовательности (список входящих документов) — это свойство самой конфигурации. Расширение удобно именно для того, чтобы добавить код и интерфейс для работы с границей, не трогая типовые объекты. Саму логику «что входит в последовательность» надёжнее менять на уровне конфигурации и только при реальной необходимости.
Порядок подключения расширения стандартный: Администрирование → Печатные формы, отчёты и обработки → Расширения → Добавить из файла, выбрать .cfe, затем перезапустить сеанс. Загрузка расширения и обновление конфигурации
базы данных — два разных шага; после подключения дайте платформе обновить структуру.
Какой способ выбрать
Три способа решают разные задачи. Коротко, когда что применять:
| Способ | Что делает | Когда применять | Риски |
|---|---|---|---|
| Снятие проведения | Выводит один документ из-под контроля, пока он не проведён | Разовый ошибочный или служебный документ держит границу | Пропадают движения документа во всех регистрах, не только в последовательности |
| Восстановление до даты | Двигает границу вперёд, перепроводя документы по порядку | Граница откатилась после правки прошлого периода | Нагрузка на базу, перепроведение множества документов |
| Исключение вида в Конфигураторе | Убирает весь вид документов из состава последовательности | Вид документов в принципе не должен влиять на порядок | Снятие с поддержки (если без расширения), нужен монопольный доступ |
| Сдвиг границы программно | Помечает период как корректный без перепроведения | Движения уже верны, откат вызван технической правкой | Платформа ничего не пересчитывает — легко «узаконить» неверный порядок |
Для разовой проблемы с конкретным документом почти всегда хватает первых двух строк — снять проведение и восстановить последовательность. К Конфигуратору и расширению переходят, когда проблема системная: вид документов регулярно ломает порядок без пользы для учёта.
Права доступа и профилактика конфликтов
Чтобы вопрос «как убрать документ из последовательности» возникал реже, закройте две двери.
Дата запрета изменения. Это главный инструмент профилактики. В разделе Администрирование → Настройки пользователей и прав → Даты запрета изменения закройте закрытые периоды. После этого рядовой пользователь не сможет провести документ
задним числом в закрытый месяц, а значит, не сможет откатить границу назад. Дату запрета можно задавать по организациям и по пользователям.
Права на восстановление. Массовое восстановление последовательностей и снятие проведения в чужих периодах стоит оставить ограниченному кругу — бухгалтеру, ответственному за закрытие, и администратору. В типовых конфигурациях доступ к регламентным операциям и закрытию периода регулируется ролями; не раздавайте эти роли всем подряд.
Ещё несколько привычек, которые держат последовательность в порядке:
- закрывайте период сразу после сдачи отчётности, не копите открытые месяцы;
- правки прошлых периодов делайте пакетно, одним заходом, а не по одному документу каждый день;
- служебные и технические документы не включайте в состав типовых последовательностей без необходимости.