Как исправить ошибку «в базе данных отсутствует расчетный документ на который имеется ссылка...» в 1С:Бухгалтерия

Бухгалтер 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При работе в программе 1С:Бухгалтерия предприятия пользователи регулярно сталкиваются с процедурой проведения банковских документов. Одним из наиболее неприятных сюрпризов становится появление системного сообщения о невозможности проведения операции: «в базе данных отсутствует расчетный документ на который имеется ссылка...». При этом в скобках программа обычно выводит длинный набор символов — уникальный идентификатор отсутствующего объекта.

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

Выясним причину: почему возникает ошибка проведения

Для начала проанализируем ситуацию с технической точки зрения и развенчаем популярное заблуждение. Часто пользователи считают, что ошибка возникает непосредственно при проведении документа ПлатежноеПоручение. Однако важно понимать особенности архитектуры конфигурации 1С:Бухгалтерия. Документ ПлатежноеПоручение представляет собой лишь печатную форму (шаблонный формуляр). Он предназначен для передачи распоряжения в банк, сам по себе не формирует никаких бухгалтерских или налоговых проводок и, соответственно, физически не может быть проведен с отражением движений по регистрам.

Реальное проведение и отражение движения денежных средств происходят в момент регистрации банковской выписки с помощью документов СписаниеСРасчетногоСчета или ПоступлениеНаРасчетныйСчет. Именно в них при попытке провести документ система обращается к аналитике расчетов с контрагентами.

Если в настройках договора с контрагентом или непосредственно в самом платежном документе выбран способ погашения задолженности «По документу», программа требует указать конкретную сделку или документ расчетов (например, РеализацияТоваровУслуг, ПоступлениеТоваровУслуг или ДокументРасчетовСКонтрагентом). Если этот документ-основание был физически удален из базы данных (минуя стандартную процедуру пометки на удаление и контроля ссылочной целостности), в поле выбора образуется «битая ссылка». В интерфейсе пользователя она отображается как строка <Объект не найден>, за которой следует уникальный 36-значный идентификатор (UUID) удаленной записи.

При попытке провести списание или поступление по расчетному счету платформа пытается прочитать данные этого несуществующего объекта для формирования проводок по счетам расчетов (например, 60.01, 60.02, 62.01, 62.02). Не найдя запись в таблицах базы данных, СУБД блокирует проведение транзакции и сообщает об ошибке.

Проанализируем ситуацию: откуда берутся битые ссылки

Прежде чем переходить к лечению базы данных, разберем основные сценарии, которые приводят к возникновению подобных коллизий:

  1. Некорректная работа обменов и синхронизации. Если учет ведется в нескольких связанных базах (например, розничные продажи регистрируются в 1С:Розница или 1С:УправлениеТорговлей, а затем выгружаются в бухгалтерию), удаление или пересоздание документов в торговой базе может привести к замене ссылок. При очередном сеансе синхронизации объект-основание в бухгалтерии затирается, оставляя битую ссылку в табличной части банковского документа.
  2. Использование сторонних обработок очистки. Обычное удаление через стандартный интерфейс программы 1С не позволит стереть документ, если на него ссылается банковская выписка. Однако администраторы или программисты часто используют радикальные внешние обработки (например, непосредственное удаление объектов без контроля ссылок), что моментально разрушает целостность данных.
  3. Автоматическое сопоставление при импорте из Клиент-Банка. При загрузке банковских выписок встроенные алгоритмы распознавания пытаются автоматически подобрать документы-основания (например, счета на оплату). Если в процессе сопоставления произошел сбой или сопоставленный документ был впоследствии удален, выписка останется привязанной к «воздуху».
  4. Удаление технических документов ручного учета. При вводе начальных остатков или проведении корректировок долга часто создаются специализированные документы вида ДокументРасчетовСКонтрагентомРучнойУчет. Бухгалтеры нередко ошибочно принимают их за дубли или мусорные записи и удаляют, нарушая цепочки расчетов в выписках.

Разберем по шагам решение: способ 1. Ручное исправление в документе выписки

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

Выполним следующие действия по шагам:

  1. Перейдем в раздел Банк и касса и откроем журнал Банковские выписки.
  2. Найдем проблемный документ (СписаниеСРасчетногоСчета или ПоступлениеНаРасчетныйСчет), который отказывается проводиться, и откроем его форму.
  3. Обратим внимание на реквизит Погашение задолженности. Если там выбрано значение «По документу», то в табличной части или в отдельном поле Документ расчетов мы увидим надпись <Объект не найден>....
  4. Очистим это поле, нажав на крестик (кнопка «Очистить»), либо выберем другое значение.
  5. Переведем режим погашения задолженности в состояние Автоматически. В этом случае программа сама подберет актуальные остатки долга по FIFO при проведении выписки. Если же требуется привязать платеж к конкретной сделке, выберем из списка реально существующий, «живой» документ расчетов.
  6. Нажмем кнопку Провести и закрыть. Документ успешно проведется, сформировав корректные проводки.

Рассмотрим подробнее решение: способ 2. Групповое изменение реквизитов

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

Для массового исправления выполним следующую инструкцию:

  1. Перейдем в раздел Администрирование, далее выберем пункт Обслуживание, найдем подраздел Корректировка данных и откроем гиперссылку Групповое изменение реквизитов.
  2. В поле «Изменять» выберем тип объекта, например, Списание с расчетного счета.
  3. Обязательно настроим параметры отбора, чтобы не изменить лишние документы. Нажмем ссылку «Все элементы» рядом с полем отбора и добавим новое условие: реквизит Документ расчетов — вид сравнения Содержит — значение Объект не найден (или укажем отбор по конкретному периоду и контрагенту).
  4. В основном списке доступных реквизитов найдем строку Документ расчетов.
  5. В колонке «Новое значение» оставим поле пустым (чтобы полностью очистить битую ссылку) либо в строке Способ погашения задолженности установим значение Автоматически.
  6. Нажмем кнопку Изменить реквизиты. Программа в фоновом режиме обойдет отобранные документы, очистит некорректные связи и перепроведет их.

Альтернативный вариант: способ 3. Тестирование и исправление базы данных

Если битая ссылка зарыта глубоко в системных регистрах сведений или накопления и не отображается на форме документа напрямую, нам потребуется прибегнуть к стандартному механизму обслуживания базы данных в Конфигураторе.

Важное предупреждение: перед выполнением любых административных процедур в Конфигураторе обязательно создайте резервную копию (бэкап) вашей информационной базы! Обработка по исправлению ссылок работает в монопольном режиме и вносит необратимые изменения в таблицы данных.

Для запуска тестирования выполним следующие шаги:

  1. Запустим программу 1С в режиме Конфигуратор. Перед этим убедимся, что все пользователи вышли из информационной базы.
  2. В главном меню перейдем в раздел Администрирование и выберем пункт Тестирование и исправление....
  3. В открывшемся окне настроек установим флаг напротив пункта Проверка ссылочной целостности информационной базы. Также можно отметить пункт Реиндексация таблиц информационной базы для оптимизации работы СУБД.
  4. В правой части окна в группе параметров «При наличии ссылок на несуществующие объекты» выберем один из вариантов действий:
    • Очищать ссылки — система автоматически сотрет битые UUID во всех полях документов и регистров, заменив их на пустые значения. Это наиболее безопасный сценарий для восстановления возможности проведения выписок.
    • Создавать объекты — программа сгенерирует новые пустые документы-заглушки технического вида с теми самыми UUID, которые были утеряны. Это позволит вам впоследствии вручную дозаполнить эти документы реальным содержанием.
  5. Нажмем кнопку Выполнить и дождемся окончания процесса. По завершении система выдаст подробный отчет обо всех найденных и исправленных «сиротских» записях. После этого можно запускать программу в обычном режиме и проводить документы.

Для разработчиков: способ 4. Восстановление удаленного документа по UUID

Иногда возникают ситуации, когда документ расчетов был стерт случайно, но на него опирается множество взаимосвязанных отчетов и сложных цепочек закрытия месяца. Если у нас есть точный UUID удаленного объекта (его можно скопировать из текста сообщения об ошибке), мы можем восстановить этот документ программным путем, сохранив исходный уникальный идентификатор. В этом случае все битые ссылки в базе автоматически «оживут».

Посмотрим на пример программного кода, который решает эту задачу:


// Создадим новый документ с сохранением исходного UUID
УтерянныйИдентификатор = Новый УникальныйИдентификатор("12345678-1234-1234-1234-123456789012");
СсылкаНаДокумент = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(УтерянныйИдентификатор);

НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДокумент.УстановитьСсылкуНового(СсылкаНаДокумент);

// Заполним минимально необходимые реквизиты для корректной записи
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Организация = Справочники.Организации.ПустаяСсылка();
НовыйДокумент.Контрагент = Справочники.Контрагенты.ПустаяСсылка();

// Запишем документ без проведения
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);

После выполнения данного кода в системе появится пустой документ РеализацияТоваровУслуг с нужным внутренним ключом. Нам останется лишь зайти в него через стандартный интерфейс программы, заполнить табличную часть актуальными товарами или услугами и провести его. Ошибка в банковской выписке исчезнет сама собой.

Дополнительная рекомендация: способ 5. Очистка кэша платформы 1С

Бывают редкие случаи, когда документ расчетов физически присутствует в базе данных, без проблем открывается на других компьютерах, но на конкретном рабочем месте бухгалтера программа упрямо выдает ошибку о его отсутствии. Это явный признак локального сбоя кэша метаданных платформы 1С.

Проанализируем простейший способ устранения этой проблемы:

  1. Закроем все запущенные окна программы 1С.
  2. Откроем окно запуска 1С:Предприятия.
  3. Выделим нашу информационную базу в списке и нажмем кнопку Удалить. При этом сама база данных с диска или сервера не удалится, сотрется лишь ссылка на нее из списка.
  4. Нажмем кнопку Добавить, выберем пункт «Добавление в список существующей информационной базы» и заново пропишем путь к каталогу базы или параметры подключения к серверу.
  5. При повторном добавлении платформой создается новая папка временных файлов (кэша) с уникальным идентификатором. Это гарантирует очистку старых некорректных индексных файлов, и ошибка битой ссылки перестанет беспокоить пользователя.
← На главную