При работе с платформой 1С 7.7 и компонентой для ускорения разработки TurboMD можно столкнуться со специфической ошибкой. Во время загрузки файлов в конфигурацию (команда /LoadFromFilesToMd/) система может выдать сообщение об ошибке, ссылающееся на внутренний идентификатор объекта, например, ReportNumber2532. При этом запуск в режиме "Конфигуратор" или "Предприятие" может проходить без проблем. Давайте разберемся, почему возникает такая ошибка и как ее эффективно устранить.
Сообщение об ошибке, содержащее идентификатор вида ReportNumber2532, DocumentNumber123 и т.п., указывает на то, что система не может корректно обработать конкретный объект метаданных. В нашем случае, префикс ReportNumber явно говорит о том, что проблема связана с одним из отчетов.
Каждому объекту в конфигурации 1С 7.7 (справочнику, документу, отчету) присваивается уникальный внутренний идентификатор. Ошибка при обращении к этому идентификатору чаще всего свидетельствует о нарушении структуры файла метаданных (1cv7.md) или связанных с ним внешних файлов.
Компонента TurboMD предназначена для ускорения разработки. Она позволяет загружать модули и формы объектов из внешних текстовых файлов, которые обычно хранятся в папке unpack, минуя долгий процесс сохранения всей конфигурации. Для управления этим процессом TurboMD использует ключевой файл:
turbomd.prm — это текстовый файл в каталоге информационной базы. Он содержит список-карту, который указывает, какой объект метаданных нужно загружать из какого внешнего файла.Таким образом, наиболее вероятная причина ошибки — это повреждение внешнего файла формы или модуля отчета в папке unpack, либо некорректная запись о нем в файле turbomd.prm. Система пытается загрузить "битый" компонент и выдает ошибку.
Рассмотрим два способа решения этой проблемы.
Этот метод является самым простым и быстрым, так как позволяет точечно найти и отключить загрузку проблемного объекта, не затрагивая основной файл конфигурации. Разберем его по шагам.
turbomd.prm. Обязательно сделайте его резервную копию, чтобы в любой момент можно было вернуться к исходному состоянию.turbomd.prm в любом текстовом редакторе (например, в Блокноте). Вы увидите список строк, каждая из которых связывает объект конфигурации с его внешним файлом.turbomd.prm и снова запускайте загрузку конфигурации из файлов.Что происходит в результате? Когда вы удаляете строку из turbomd.prm, вы даете команду компоненте TurboMD больше не подгружать этот объект из внешнего файла. При следующем запуске система обратится к "эталонной" версии объекта, которая хранится непосредственно в основном файле конфигурации 1cv7.md. Поскольку эта версия, скорее всего, не повреждена, ошибка исчезнет.
Чтобы восстановить работу с внешним файлом для этого отчета, можно выполнить его повторную выгрузку из конфигуратора. Это создаст новый, корректный файл в папке unpack и обновит запись в turbomd.prm.
Полная очистка или удаление файла turbomd.prm временно отключает весь механизм динамической загрузки TurboMD, заставляя 1С использовать только данные из 1cv7.md.
Этот метод более сложный и применяется, если есть подозрения на повреждение самого MD-файла или если нужно точно определить имя проблемного отчета по его внутреннему идентификатору. GComp — это сторонняя утилита для декомпиляции (разборки) и компиляции (сборки) файла 1cv7.md.
1cv7.md на множество текстовых файлов. Это создаст структуру каталогов с описанием всех объектов метаданных.ReportNumber2532. В одном из служебных файлов (часто это файл со списком всех метаданных в корне) вы найдете соответствие между этим внутренним идентификатором и реальным именем отчета, которое вы видите в конфигураторе. Так вы точно узнаете, какой отчет вызывает проблему.1cv7.md. После декомпиляции выполните обратную операцию — компиляцию, чтобы получить новый MD-файл.Важные замечания по работе с GComp:
1cv7.md.1cv7.md.В большинстве случаев для решения описанной проблемы достаточно первого, более безопасного способа через редактирование файла turbomd.prm.