Что делать, когда документ нарушает последовательность в 1С

· 9 мин

Содержание

Чтобы документ перестал влиять на последовательность проведения, его нужно либо снять с проведения, либо сдвинуть границу последовательности за его дату, либо исключить весь вид документа из состава последовательности. Какой способ подойдёт — зависит от того, зачем документ вообще в неё попал.

Разберём последовательность как механизм платформы: где лежит её граница, почему один документ «заднего числа» откатывает её назад и как корректно вывести документ из-под контроля последовательности — руками в режиме «Предприятие», программно в Конфигураторе или отдельным расширением, не снимая конфигурацию с поддержки.

Почему один документ рвёт последовательность проведения

Последовательность — это объект конфигурации, который следит за правильным хронологическим порядком проведения документов. У неё есть две настройки: список видов документов, которые в неё входят, и список регистров, движения по которым на неё влияют.

Пока документы проводятся строго по возрастанию даты, граница последовательности двигается вперёд. Как только вы проводите или перепроводите документ с датой раньше текущей границы, платформа считает, что порядок нарушен, и откатывает границу назад — к дате этого документа. Всё, что было после, формально считается «проведённым не в том порядке» и требует восстановления.

Отсюда и запрос «удалить документ из последовательности». На практике за ним стоят разные ситуации:

  • 🗓 документ задним числом (корректировка прошлого периода) каждый раз откатывает границу;
  • ❌ ошибочный или задвоенный документ тянет границу на старую дату;
  • 🔁 служебный документ, которому в этой последовательности не место, но его вид по ошибке включён в её состав;
  • 🧩 документ из расширения или стороннего модуля, который не должен участвовать в контроле порядка.
Диагностика: выберите симптом

Где посмотреть границу и состояние последовательности

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

Откройте главное меню (кнопка со значком меню в левом верхнем углу интерфейса «Такси») → Все функции. Если пункта нет, включите его: главное меню → Сервис → Параметры → галочка Отображать команду "Все функции". Дальше — Все функции → раздел Стандартные → Восстановление последовательностей.

В открывшейся форме вы увидите:

  • 📋 список всех последовательностей конфигурации;
  • ✅ признак актуальности каждой (восстановлена / не восстановлена);
  • 📅 дату, до которой последовательность актуальна, — это и есть граница.

Граница последовательности технически хранится как момент времени: дата плюс ссылка на конкретный документ. Если последовательность ведётся в разрезе измерений (например, по организациям), своя граница будет у каждого значения измерения — и восстанавливать их можно по отдельности.

В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) восстановление последовательностей встроено в закрытие периода, поэтому отдельно к этой форме обращаются редко. Но когда нужно разобраться именно с границей и конкретным документом — она самый прямой инструмент.

Как восстановить порядок в режиме «Предприятие»

Самый безопасный способ «убрать» проблемный документ — не трогая метаданные, довести границу до нужной даты средствами режима «Предприятие».

  1. В форме Восстановление последовательностей отметьте нужную последовательность.
  2. Задайте дату, до которой нужно восстановить порядок (обычно — конец закрытого месяца или текущая дата).
  3. Запустите восстановление. Платформа перепроведёт документы по порядку и сдвинет границу.

Если восстановление останавливается на одном и том же документе — именно он держит границу. Откройте его и решите, что с ним делать:

  • документ ошибочный → пометьте на удаление и проведите удаление помеченных;
  • документ нужен, но не должен влиять на порядок → снимите проведение (Ещё → Отменить проведение), тогда он перестаёт создавать движения и выпадает из-под контроля последовательности;
  • документ корректен, просто стоит раньше границы → это нормальная ситуация, достаточно восстановить последовательность дальше его даты.

Восстановление перепроводит документы и меняет движения в рабочей базе. В многопользовательском режиме это создаёт нагрузку и может конфликтовать с работой коллег. Запускайте массовое восстановление в окно, когда в базе никто не работает, и только после резервной копии.

Снятие проведения — самый частый ответ на вопрос «как исключить один документ». Пока документ не проведён, движений он не создаёт, в регистрах, влияющих на последовательность, его нет, а значит, и границу он не держит.

Исключение документа и его вида через Конфигуратор

Если из последовательности нужно вывести не один документ, а целый вид документов, это уже уровень конфигурации.

Откройте Конфигуратор, найдите объект Последовательности → нужную последовательность. У неё две ключевые закладки:

  • Входящие документы — виды документов, которые в неё входят. Уберите отсюда вид — и ни один документ этого вида больше не будет влиять на границу.
  • Движения, влияющие на последовательность — регистры, по которым отслеживается порядок. Если убрать из списка регистр, движения документа по нему перестанут двигать границу.

Разница между двумя закладками важна. Убрав вид из «Входящих документов», вы исключаете документы полностью — они больше не участвуют в контроле порядка. Убрав регистр из «Движений, влияющих на последовательность», вы оставляете документы в составе, но перестаёте следить за порядком именно по этому регистру. Для задачи «вывести документ из-под контроля» обычно правят первую закладку.

После правки состава нужно обновить конфигурацию базы данных (Обновить конфигурацию базы данных, F7). Это изменение структуры — оно требует монопольного доступа к базе, то есть всех пользователей придётся на время вывести из системы.

Границей можно управлять и программно — из обработки или модуля. Менеджер последовательности умеет читать и переустанавливать границу:

// получить текущую границу последовательности
Граница = Последовательности.ВзаиморасчетыПоДокументам.ПолучитьГраницу();

// сдвинуть границу на нужный момент времени,
// фактически выведя из-под контроля всё до этой даты
НовыйМомент = Новый МоментВремени(ДатаГраницы, ДокументСсылка);
Последовательности.ВзаиморасчетыПоДокументам.УстановитьГраницу(НовыйМомент);

Имя последовательности (ВзаиморасчетыПоДокументам) здесь условное — подставьте своё из дерева конфигурации. Точные сигнатуры методов объекта «МенеджерПоследовательности» и работу с измерениями сверьте в синтакс-помощнике Конфигуратора: наугад параметры не подставляйте, ошибка в границе рассыплет порядок по всей базе.

Прямая установка границы не перепроводит документы и не проверяет корректность движений. Вы просто говорите платформе «считай, что до этой даты всё в порядке». Применяйте это осознанно — например, когда точно знаете, что движения уже верны, а откат границы вызван технической правкой.

Как исключить документ через расширение конфигурации

Главная причина не лезть в основную конфигурацию — поддержка. Если вы меняете состав типовой последовательности напрямую, конфигурация частично снимается с поддержки, и каждое обновление превращается в ручное сравнение-объединение.

Расширения конфигурации (появились в платформе 8.3.6) решают это: вы храните свои доработки отдельным файлом .cfe, а типовая конфигурация остаётся на полной поддержке и обновляется штатно.

Что реально сделать расширением, чтобы исключить документ из последовательности:

  • ➕ добавить собственную обработку (внешнюю или в составе расширения), которая по кнопке снимает нужные документы с проведения или аккуратно сдвигает границу через методы менеджера последовательности;
  • 🧷 добавить команду в форму документа — «Исключить из контроля последовательности» — чтобы ответственный делал это в один клик, без Конфигуратора;
  • 🧮 добавить обработчик, который при проведении служебного документа не записывает движения в регистр, влияющий на последовательность.

У расширения есть предел: состав последовательности (список входящих документов) — это свойство самой конфигурации. Расширение удобно именно для того, чтобы добавить код и интерфейс для работы с границей, не трогая типовые объекты. Саму логику «что входит в последовательность» надёжнее менять на уровне конфигурации и только при реальной необходимости.

Порядок подключения расширения стандартный: Администрирование → Печатные формы, отчёты и обработки → Расширения → Добавить из файла, выбрать .cfe, затем перезапустить сеанс. Загрузка расширения и обновление конфигурации базы данных — два разных шага; после подключения дайте платформе обновить структуру.

Перед тем как исключать документ из последовательности
Выполнено: 0 / 5

Какой способ выбрать

Три способа решают разные задачи. Коротко, когда что применять:

СпособЧто делаетКогда применятьРиски
Снятие проведенияВыводит один документ из-под контроля, пока он не проведёнРазовый ошибочный или служебный документ держит границуПропадают движения документа во всех регистрах, не только в последовательности
Восстановление до датыДвигает границу вперёд, перепроводя документы по порядкуГраница откатилась после правки прошлого периодаНагрузка на базу, перепроведение множества документов
Исключение вида в КонфигуратореУбирает весь вид документов из состава последовательностиВид документов в принципе не должен влиять на порядокСнятие с поддержки (если без расширения), нужен монопольный доступ
Сдвиг границы программноПомечает период как корректный без перепроведенияДвижения уже верны, откат вызван технической правкойПлатформа ничего не пересчитывает — легко «узаконить» неверный порядок

Для разовой проблемы с конкретным документом почти всегда хватает первых двух строк — снять проведение и восстановить последовательность. К Конфигуратору и расширению переходят, когда проблема системная: вид документов регулярно ломает порядок без пользы для учёта.

Права доступа и профилактика конфликтов

Чтобы вопрос «как убрать документ из последовательности» возникал реже, закройте две двери.

Дата запрета изменения. Это главный инструмент профилактики. В разделе Администрирование → Настройки пользователей и прав → Даты запрета изменения закройте закрытые периоды. После этого рядовой пользователь не сможет провести документ задним числом в закрытый месяц, а значит, не сможет откатить границу назад. Дату запрета можно задавать по организациям и по пользователям.

Права на восстановление. Массовое восстановление последовательностей и снятие проведения в чужих периодах стоит оставить ограниченному кругу — бухгалтеру, ответственному за закрытие, и администратору. В типовых конфигурациях доступ к регламентным операциям и закрытию периода регулируется ролями; не раздавайте эти роли всем подряд.

Ещё несколько привычек, которые держат последовательность в порядке:

  • закрывайте период сразу после сдачи отчётности, не копите открытые месяцы;
  • правки прошлых периодов делайте пакетно, одним заходом, а не по одному документу каждый день;
  • служебные и технические документы не включайте в состав типовых последовательностей без необходимости.
Что произойдёт, если просто удалить границу последовательности?
Последовательность станет неактуальной с самого начала, и при следующем закрытии периода платформа попробует перепровести все документы заново. На большой базе это долго и тяжело. Лучше не сбрасывать границу, а довести её до нужной даты восстановлением.
Чем снятие проведения отличается от исключения вида документа?
Снятие проведения выводит из-под контроля один конкретный документ, пока он не проведён. Исключение вида из состава последовательности в Конфигураторе убирает из-под контроля сразу все документы этого вида — и прошлые, и будущие.
Можно ли исключить документ, не заходя в Конфигуратор?
Да. Снять документ с проведения и запустить восстановление последовательности можно прямо в режиме «Предприятие». В Конфигуратор идут только тогда, когда нужно поменять состав последовательности или выполнить программную правку границы.
Почему последовательность откатывается каждый раз при закрытии месяца?
Значит, в течение месяца кто-то проводит документы задним числом. Найдите эти документы (они будут на дате отката границы) и закройте прошлый период датой запрета изменения.
Безопасно ли двигать границу программно в рабочей базе?
Только если вы уверены, что движения документов уже корректны. Прямая установка границы ничего не пересчитывает — она лишь помечает период как «в порядке». Перед правкой сделайте резервную копию.