Иногда при работе в 1С, например, при проведении документов, мы можем столкнуться с очень странной ошибкой. Платформа сообщает о том, что поле объекта не обнаружено, но само имя этого поля или переменной выглядит как "обрезанное" или искаженное слово. Например, в конфигураторе написано ПланыСчетов.Хозрасчетный.ОборудованиеКУстановке, а в сообщении об ошибке система выдает:
Поле объекта не обнаружено (ОборудованиеКУстановБа)
Проанализируем эту ситуацию. На первый взгляд кажется, что проблема кроется в подключенных расширениях или закэшированных данных. Но если разобраться глубже, мы увидим классическое проявление повреждения метаданных или рассинхронизации конфигурации базы данных. Давайте разберем по шагам, почему возникает эта проблема и как ее грамотно устранить.
Такая ситуация чаще всего возникает в файловых базах данных (файл 1Cv8.1CD). Слово с окончанием "Ба" вместо "ке" — это результат "затирания" или смещения байтов в таблицах конфигурации. Система считывает текст модуля с небольшим сдвигом, из-за чего в коде появляются несуществующие обрывки строк или слова слипаются между собой.
Выясним, какие действия обычно предшествуют такой поломке:
Config и ConfigCashe.Система в конфигураторе может показывать вам правильный текст (так как он берется из одной служебной таблицы), а при исполнении (в режиме Предприятия) обращаться к скомпилированному кэшу или таблице базы данных, которая уже повреждена.
Перед тем как приступать к радикальным мерам, давайте исключим самые банальные причины. Выполним следующие шаги диагностики:
ИначеЕсли БухгалтерскийУчетПовтИсп.СчетВИерархии(СчетУчета, ПланыСчетов.Хозрасчетный.ОборудованиеКУстановБа) Тогда
Если очистка кэша и отключение расширений не помогли, а в коде действительно присутствует поврежденный текст, нам нужно заставить платформу перезаписать проблемный участок метаданных. Проанализируем несколько способов.
Если используется типовая конфигурация, самый быстрый и безопасный способ исправить "битый" модуль — обновить базу до следующего релиза или повторно накатить текущий. В процессе обновления платформа полностью перезапишет тексты измененных модулей и пересчитает их контрольные суммы. Именно этот шаг окончательно решает проблему с поврежденными байтами.
Если обновление по каким-то причинам сейчас недоступно, воспользуемся файлом поставщика:
.cf) из чистой, рабочей базы того же релиза..cf файл. Это приведет к полному замещению метаданных базы правильными объектами.Если проблема вызвана глубоким повреждением внутренних таблиц файловой базы, помогает полная выгрузка и загрузка данных. Создайте резервную копию, выгрузите информационную базу в файл .dt, создайте пустую файловую базу и загрузите .dt в нее. В процессе загрузки платформа заново создаст все служебные таблицы и индексы, очистив их от "мусора".
Если база полностью снята с поддержки и вы имеете возможность редактировать код напрямую, просто откройте поврежденный общий модуль, найдите искаженную строку, удалите ее и напишите заново корректно. После сохранения конфигурации платформа скомпилирует модуль без ошибок.
Подведем итог: Появление несуществующих или обрезанных слов в ошибках исполнения кода 1С — верный признак физического повреждения метаданных или кэша конфигурации БД. В таких ситуациях всегда начинайте с резервного копирования, а затем используйте механизмы перезаписи конфигурации (обновление или загрузку .cf файла), чтобы восстановить целостность системы.