При работе в программных продуктах на платформе «1С:Предприятие» пользователи и консультанты иногда сталкиваются с неожиданными техническими сбоями при выполнении простейших операций. Одной из таких проблем является ошибка выполнения запроса при попытке пометить на удаление документ Платежное поручение в конфигурации «1С:Управление холдингом» (1С:УХ). Система блокирует запись документа и выводит следующее сообщение:
{(7, 2)}: Таблица не найдена "Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование"
<<?>>Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование КАК ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование
В этой статье мы подробно проанализируем причины возникновения данной ошибки, разберем особенности архитектуры прикладного решения и рассмотрим два практических способа устранения неисправности: официальное обновление конфигурации и ручное исправление программного кода в Конфигураторе.
Для того чтобы понять природу этой ошибки, разберем структуру метаданных конфигурации. Программа «1С:Управление холдингом» разработана на базе типового решения «1С:Бухгалтерия предприятия КОРП». При этом разработчики значительно расширили функционал казначейского и бюджетного учета. В типовой бухгалтерии документ Платежное поручение является достаточно простым объектом и содержит лишь одну базовую табличную часть — РасшифровкаПлатежа.
Для обеспечения детального аналитического учета, связывающего платежи с бюджетами проектов, лимитами и заявками на расходование денежных средств, в структуру документа Платежное поручение в 1С:УХ была внедрена дополнительная табличная часть — РасшифровкаПлатежаБюджетирование.
В процессе планового рефакторинга конфигурации в ветке релизов 3.0.5 разработчики приняли решение отказаться от использования этой вспомогательной табличной части, объединив все аналитические разрезы внутри стандартной таблицы РасшифровкаПлатежа. При выпуске обновления 3.0.5.6.3 физическая таблица РасшифровкаПлатежаБюджетирование была удалена из метаданных документа.
Однако при этом в общих модулях или подписках на события, отвечающих за контроль целостности данных при удалении объектов, остался старый поисковый запрос. Платформа пытается обратиться к таблице, которой больше не существует в базе данных, что и вызывает аварийное завершение операции.
Рассмотрим важный нюанс: почему при отмене проведения документа Платежное поручение система работает штатно, а при попытке установить пометку удаления возникает ошибка? Это связано с логикой работы платформы «1С:Предприятие»:
ПометкаУдаления = Истина. В этот момент срабатывают встроенные обработчики событий (например, ПередЗаписью) и общие подписки на события казначейства. Система запускает алгоритмы проверки связей документа с другими объектами лимитирования и бюджетирования, чтобы освободить зарезервированные денежные средства под заявки. Именно в рамках этих проверок выполняется старый запрос, содержащий обращение к удаленной таблице РасшифровкаПлатежаБюджетирование.Поскольку данная проблема признана официальной ошибкой релиза от разработчиков фирмы «1С», наиболее надежным и безопасным способом решения является обновление вашей информационной базы. Ошибка была оперативно устранена в последующих релизах конфигурации «1С:Управление холдингом», начиная с версии 3.0.6.6 и выше.
Разберем по шагам, как выполнить обновление конфигурации:
.dt для файловых баз или средствами СУБД для клиент-серверных вариантов)..cfu) и следуйте указаниям помощника.F7 (или выберите пункт меню Конфигурация — Обновить конфигурацию базы данных) для применения изменений на уровне базы данных СУБД.После завершения процедур обновления откройте список платежных поручений и попробуйте повторно пометить на удаление проблемный документ. Ошибка должна полностью исчезнуть.
Если ваша конфигурация находится на нетиповой поддержке (существенно доработана программистами), оперативно выполнить обновление на новый релиз может быть затруднительно. В этом случае для решения проблемы потребуется привлечение квалифицированного программиста 1С, который исправит сбойный запрос вручную.
Проанализируем алгоритм ручной корректировки кода:
Ctrl + Shift + F.РасшифровкаПлатежаБюджетирование и нажмите кнопку Искать.КазначействоПереопределяемый или модуль подписки на событие записи документа ПлатежноеПоручение), в котором содержится текст сбойного SQL-подобного запроса.
Запрос.Текст =
"ВЫБРАТЬ
| ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование.Ссылка КАК Ссылка,
| ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств
|ИЗ
| Документ.ПлатежноеПоручение.РасшифровкаПлатежаБюджетирование КАК ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование
|ГДЕ
| ПлатежноеПоручениеРасшифровкаПлатежаБюджетирование.Ссылка В(&СписокДокументов)";
Поскольку табличной части РасшифровкаПлатежаБюджетирование больше нет, этот запрос возвращает ошибку. Нам необходимо скорректировать текст запроса так, чтобы он обращался к стандартной табличной части РасшифровкаПлатежа, где теперь хранятся нужные данные.
Рассмотрим исправленный вариант программного кода:
Запрос.Текст =
"ВЫБРАТЬ
| ПлатежноеПоручениеРасшифровкаПлатежа.Ссылка КАК Ссылка,
| ПлатежноеПоручениеРасшифровкаПлатежа.СтатьяДДС КАК СтатьяДвиженияДенежныхСредств
|ИЗ
| Документ.ПлатежноеПоручение.РасшифровкаПлатежа КАК ПлатежноеПоручениеРасшифровкаПлатежа
|ГДЕ
| ПлатежноеПоручениеРасшифровкаПлатежа.Ссылка В(&СписокДокументов)";
Обратите внимание: при изменении имени табличной части также могут измениться имена реквизитов внутри этой таблицы (например, вместо СтатьяДвиженияДенежныхСредств поле может называться сокращенно СтатьяДДС). Обязательно проверьте структуру актуальной табличной части РасшифровкаПлатежа документа ПлатежноеПоручение через дерево метаданных конфигурации, чтобы сопоставить правильные имена полей.
После корректировки кода сохраните изменения в конфигурации и выполните обновление базы данных, нажав клавишу F7. Запустите сеанс «1С:Предприятие» и проверьте работоспособность механизма пометки на удаление.
Для того чтобы минимизировать риски возникновения аналогичных ошибок при дальнейшей эксплуатации сложных систем уровня ERP и холдинговых решений, рекомендуем придерживаться следующих правил: