Ошибка «в списке движений обнаружены ссылки на объекты, которые не могут быть подключены в качестве движения» появляется в 1С:Предприятие при проведении документа, когда в наборе движений обнаруживается регистр, не входящий в список разрешённых движителей данного вида документа. Типичный сценарий: после обновления конфигурации, доработки документа или переноса данных программный код пытается записать движения по регистру, который в метаданных не отмечен как движение этого документа — и платформа прерывает проведение с этим сообщением.
Проблема относится к разряду конфигурационных, а не аппаратных: она возникает из-за расхождения между программным кодом модуля документа и настройками метаданных. Ниже разберём, почему появляется это сообщение, как найти «лишний» регистр и как устранить ошибку без риска для учётных данных.
Что означает это сообщение об ошибке
Каждый документ в конфигурации 1С имеет фиксированный список регистров, по которым он может формировать движения. Этот список задаётся в конфигураторе на вкладке «Движения» в свойствах документа. Платформа контролирует соответствие: если код в модуле объекта обращается к регистру, не включённому в этот список, проведение блокируется.
Сообщение формируется именно на этапе записи набора движений. Платформа проверяет ссылки в наборе и обнаруживает объект, который не может быть подключён как движение — отсюда формулировка. Важно понимать: это защитный механизм целостности, а не случайный сбой.
На практике ошибка чаще всего всплывает в трёх ситуациях: после обновления типовой конфигурации с доработками, после самостоятельного изменения модуля проведения и после обмена данными между базами с разными версиями конфигурации.
Основные причины появления ошибки
Чтобы выбрать правильный способ исправления, нужно определить первопричину. Возможные варианты:
- 🔧 В модуле документа есть код записи движений по регистру, который не отмечен в свойствах документа как движение.
- 📦 После обновления конфигурации список движителей документа изменился, а доработанный код остался прежним.
- 🔀 Регистр был переименован или удалён, но ссылки на него остались в коде общих модулей или подписок на события.
- 🧩 Внешняя обработка или расширение конфигурации добавляет движения, не согласованные с метаданными.
- 💾 При переносе данных из другой базы загружены наборы записей по регистрам, отсутствующим в текущей конфигурации.
Отдельный случай — подписки на события. Если обработчик подписки «ПриЗаписи» или «ОбработкаПроведения» формирует дополнительные движения, ошибка может проявляться даже у типового документа без видимых доработок. Поэтому проверять нужно не только модуль самого документа.
Как найти проблемный регистр
Первый шаг диагностики — определить, какой именно регистр вызывает конфликт. Откройте конфигуратор, найдите документ в дереве метаданных и перейдите на вкладку Движения. Здесь перечислены все регистры, разрешённые для этого вида документа.
Далее откройте модуль объекта документа и найдите процедуру ОбработкаПроведения. Выполните поиск по модулю и по связанным общим модулям строк вида Движения.ИмяРегистра. Каждое найденное имя сверьте со списком на вкладке движений. Регистр, который есть в коде, но отсутствует в списке, — и есть источник ошибки.
Если движения формируются косвенно, через общие процедуры, полезен полнотекстовый поиск по конфигурации: Правка → Найти с указанием имени регистра. Так вы обнаружите обращения из подписок на события и внешних источников.
Способы исправления ошибки
Выбор метода зависит от того, какое поведение является правильным для вашего учёта. Возможны два противоположных решения, и оба корректны — вопрос в том, что задумано.
Добавление регистра в список движений документа
Если документ действительно должен формировать движения по этому регистру (например, доработка добавила новый учётный разрез), исправление делается в метаданных. В конфигураторе откройте свойства документа, перейдите на вкладку Движения и установите флажок напротив нужного регистра. После этого обновите конфигурацию базы данных через Конфигурация → Обновить конфигурацию базы данных.
☑️ Добавление регистра в движения документа
⚠️ Внимание: добавление регистра в движители изменяет структуру учёта. Если база работает в режиме поддержки типовой конфигурации, правка может потребовать снятия объекта с поддержки — это усложнит будущие обновления. Оцените последствия до изменения.
После правки перепроведите документ, на котором возникала ошибка, и проверьте сформированные движения через отчёт по движениям документа. Если записи появились и корректны — проблема решена.
Удаление лишнего кода из модуля проведения
Обратная ситуация: регистр в списке движений не нужен, а код обращения к нему — устаревший «хвост» от старой доработки. Тогда правильное решение — убрать или закомментировать фрагменты кода, формирующие движения по этому регистру. Ищите строки вида:
Движения.ИмяРегистра.Записывать = Истина;
Также проверьте процедуры, которые заполняют таблицы движений и вызывают Записать() для наборов записей. Удалять код следует аккуратно: сначала закомментируйте блок, убедитесь, что проведение проходит и учётные отчёты не сломались, и только потом удаляйте окончательно.
⚠️ Внимание: если ошибка возникла после обновления типовой конфигурации, не спешите править типовой код. Возможная причина — доработка, которая конфликтует с новой версией. Сравните модуль с предыдущей версией конфигурации через механизм сравнения и объединения.
Когда виноваты расширения и обмены данными
Если конфигурация типовая и не дорабатывалась, источником могут быть расширения конфигурации. Откройте список подключённых расширений и временно отключите их по одному, проверяя проведение документа после каждого отключения. Так вы локализуете расширение, добавляющее конфликтные движения.
При обмене данными между базами с разными версиями конфигурации возможна загрузка наборов записей по регистрам, которых нет в принимающей базе. В этом случае проверьте правила конвертации и убедитесь, что обе базы обновлены до совместимых версий. Расхождение версий конфигураций в узлах обмена — одна из самых коварных причин, потому что ошибка проявляется не сразу, а при первой попытке проведения загруженного документа.
Как проверить движения документа без конфигуратора
В пользовательском режиме откройте проведённый документ и используйте команду показа движений (обычно доступна через меню «Ещё» в форме документа, если права позволяют). Список регистров, по которым документ реально делает записи, поможет сопоставить фактическое поведение с ожидаемым. Если кнопка недоступна, попросите администратора с полными правами.
Сравнение подходов к решению
| Ситуация | Действие | Риск |
|---|---|---|
| Доработка требует новый регистр | Добавить регистр в движители документа | Изменение поддержки типовой конфигурации |
| Устаревший код в модуле | Удалить или закомментировать обращения к регистру | Потеря части учётных записей при ошибочном удалении |
| Конфликт после обновления | Сравнение модулей со старой версией, адаптация доработки | Трудоёмко, требует доступа к прежней версии |
| Ошибка из расширения | Отключить или доработать расширение | Отключение функциональности расширения |
| Обмен между разными версиями | Синхронизация версий конфигураций в узлах | Требует планового обновления всех баз |
Как видно из таблицы, универсального «одного клика» не существует: каждый сценарий требует своего подхода. Общее правило — сначала диагностика и резервная копия, затем минимально необходимое изменение.
Профилактика повторного появления ошибки
Чтобы проблема не возвращалась, встройте несколько простых практик в процесс работы с конфигурацией:
- 🧪 После каждой доработки проведения тестируйте проведение документа на копии базы до переноса в рабочую среду.
- 📋 При обновлении типовой конфигурации используйте сравнение и объединение с сохранением протокола изменений доработанных модулей.
- 🔍 Периодически выполняйте тестирование и исправление информационной базы с проверкой логической целостности.
- 🗂 Документируйте, какие регистры добавлены в движители документов доработками, — это сильно ускорит диагностику в будущем.
Если вы не ведёте конфигурацию самостоятельно, имеет смысл передать диагностику специалисту по 1С с доступом к конфигуратору: правка метаданных и модулей требует опыта, а ошибка может затронуть учётные данные.
Часто задаваемые вопросы
Можно ли исправить ошибку без конфигуратора?
Как правило, нет: причина лежит в метаданных или коде конфигурации, которые изменяются только в конфигураторе. Исключение — ошибка, вызванная расширением: его можно отключить из пользовательского режима без изменения основной конфигурации.
Пропадут ли данные, если я уберу регистр из движений?
Наборы записей, уже созданные по этому регистру, при изменении метаданных могут быть удалены при реструктуризации базы. Поэтому перед правкой обязательно сделайте резервную копию и проверьте, есть ли в регистре нужные данные.
Почему ошибка появилась сразу после обновления?
Вероятная причина — доработка, которая обращалась к регистру, изменённому или исключённому из движителей в новой версии конфигурации. Сравните доработанный модуль с типовым и адаптируйте код под новую структуру.
Ошибка возникает только у одного документа из множества. Это нормально?
Да, это типично: конфликт привязан к конкретному виду документа и его набору движений. Другие виды документов с собственными списками движителей могут работать корректно.
Поможет ли тестирование и исправление базы?
Само по себе — нет, поскольку проблема в структуре конфигурации, а не в повреждении данных. Но проверка логической целостности полезна как дополнительный шаг, чтобы исключить сопутствующие ошибки после исправления метаданных.