Как исправить ошибку «Таблица не найдена Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование» при пометке на удаление в 1С:Управление холдингом

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

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

{(7, 2)}: Таблица не найдена "Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование"

<<?>>Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование КАК ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование

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

Выясняем причину: архитектурные особенности «1С:Управление холдингом»

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

Для обеспечения детального аналитического учета, связывающего платежи с бюджетами проектов, лимитами и заявками на расходование денежных средств, в структуру документа Платежное поручение в 1С:УХ была внедрена дополнительная табличная часть — РасшифровкаПлатежаБюджетирование.

В процессе планового рефакторинга конфигурации в ветке релизов 3.0.5 разработчики приняли решение отказаться от использования этой вспомогательной табличной части, объединив все аналитические разрезы внутри стандартной таблицы РасшифровкаПлатежа. При выпуске обновления 3.0.5.6.3 физическая таблица РасшифровкаПлатежаБюджетирование была удалена из метаданных документа.

Однако при этом в общих модулях или подписках на события, отвечающих за контроль целостности данных при удалении объектов, остался старый поисковый запрос. Платформа пытается обратиться к таблице, которой больше не существует в базе данных, что и вызывает аварийное завершение операции.

Почему проведение документа отменяется без ошибок, а пометка на удаление вызывает сбой?

Рассмотрим важный нюанс: почему при отмене проведения документа Платежное поручение система работает штатно, а при попытке установить пометку удаления возникает ошибка? Это связано с логикой работы платформы «1С:Предприятие»:

  1. При отмене проведения: система выполняет стандартную очистку движений документа по регистрам накопления, сведений и бухгалтерии. Для этого механизма не требуется анализировать внутренний состав табличных частей удаленного периода, так как очистка происходит по регистратору.
  2. При установке пометки на удаление: платформа инициирует запись объекта с новым признаком ПометкаУдаления = Истина. В этот момент срабатывают встроенные обработчики событий (например, ПередЗаписью) и общие подписки на события казначейства. Система запускает алгоритмы проверки связей документа с другими объектами лимитирования и бюджетирования, чтобы освободить зарезервированные денежные средства под заявки. Именно в рамках этих проверок выполняется старый запрос, содержащий обращение к удаленной таблице РасшифровкаПлатежаБюджетирование.

Способ 1. Обновление конфигурации (Рекомендуемый метод)

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

Разберем по шагам, как выполнить обновление конфигурации:

  1. Создание резервной копии: перед проведением любых обновлений в обязательном порядке создайте резервную копию информационной базы (файл .dt для файловых баз или средствами СУБД для клиент-серверных вариантов).
  2. Получение дистрибутива: скачайте актуальный релиз обновления (например, 3.0.6.6 или выше) с официального портала поддержки пользователей 1С.
  3. Запуск Конфигуратора: откройте информационную базу в режиме «Конфигуратор» под учетной записью администратора с полными правами.
  4. Поиск обновлений: перейдите в меню Конфигурация — Поддержка — Обновить конфигурацию.
  5. Установка файлов: выберите источник обновления (каталог шаблонов или файл обновления .cfu) и следуйте указаниям помощника.
  6. Обновление базы данных: после успешного объединения конфигураций нажмите клавишу F7 (или выберите пункт меню Конфигурация — Обновить конфигурацию базы данных) для применения изменений на уровне базы данных СУБД.
  7. Запуск предприятия: запустите информационную базу в режиме «1С:Предприятие» и дождитесь окончания выполнения всех регламентных процедур обновления (обработчиков обновления данных).

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


Способ 2. Временное ручное исправление запроса (Для нетиповых конфигураций)

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

Проанализируем алгоритм ручной корректировки кода:

  1. Откройте базу данных в режиме «Конфигуратор».
  2. Если конфигурация находится на поддержке без возможности редактирования, включите возможность изменения: перейдите в меню Конфигурация — Поддержка — Настройка поддержки, нажмите кнопку Включить возможность изменения. Установите правила поддержки с сохранением возможности изменений.
  3. Выполните глобальный поиск по всей конфигурации. Для этого нажмите сочетание клавиш Ctrl + Shift + F.
  4. В поле поиска введите поисковый запрос: РасшифровкаПлатежаБюджетирование и нажмите кнопку Искать.
  5. Среди результатов поиска найдите общий модуль (обычно связанный с подсистемой казначейства, например, КазначействоПереопределяемый или модуль подписки на событие записи документа ПлатежноеПоручение), в котором содержится текст сбойного SQL-подобного запроса.
  6. Откройте найденный модуль и найдите текст запроса. Он будет выглядеть примерно так:

Запрос.Текст = 
"ВЫБРАТЬ
|	ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование.Ссылка КАК Ссылка,
|	ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
|ИЗ
|	Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование КАК ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование
|ГДЕ
|	ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование.Ссылка В(&СписокДокументов)";

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

Рассмотрим исправленный вариант программного кода:


Запрос.Текст = 
"ВЫБРАТЬ
|	ПлатежноеПоручениеРасшифровкаПлатежа.Ссылка КАК Ссылка,
|	ПлатежноеПоручениеРасшифровкаПлатежа.СтатьяДДС КАК СтатьяДвиженияДенежныхСредств
|ИЗ
|	Документ.ПлатежноеПоручение.РасшифровкаПлатежа КАК ПлатежноеПоручениеРасшифровкаПлатежа
|ГДЕ
|	ПлатежноеПоручениеРасшифровкаПлатежа.Ссылка В(&СписокДокументов)";

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

После корректировки кода сохраните изменения в конфигурации и выполните обновление базы данных, нажав клавишу F7. Запустите сеанс «1С:Предприятие» и проверьте работоспособность механизма пометки на удаление.

Рекомендации по предотвращению подобных сбоев

Для того чтобы минимизировать риски возникновения аналогичных ошибок при дальнейшей эксплуатации сложных систем уровня ERP и холдинговых решений, рекомендуем придерживаться следующих правил:

← На главную