← На главную
Причины ошибки формата и механика понижения версии
Рассмотрим ситуацию, когда необходимо открыть внешнюю обработку (файлы .epf) или внешний отчет (файлы .erf), созданный в платформе «1С:Предприятие 8.2», в более старой версии платформы — 8.1. Штатно платформа 1С поддерживает конвертацию файлов только от старых версий к новым. Конфигураторы младших версий не умеют читать структуру файлов, сохраненных в старших версиях, и при попытке их открытия выдают ошибку формата хранилища.
Выясним причину этой проблемы. Файлы .epf и .erf представляют собой сжатые бинарные контейнеры. Каждая версия платформы записывает в заголовки этих контейнеров и во внутренние структуры метаданных собственные идентификаторы и спецификации формата.
Алгоритм обратной конвертации
Разберем по шагам механику понижения версии внешней обработки без использования встроенного Конфигуратора версии 8.2:
- Распакуем бинарный контейнер внешней обработки
.epf с помощью утилит работы с внутренним форматом файлов 1С (на специализированных языках, например Python, или сторонних консольных утилит).
- В полученных текстовых файлах структуры метаданных и заголовков подменим идентификаторы формата на значения, понятные целевой платформе 8.1.
- Скорректируем или удалим специфичные для платформы 8.2 блоки метаданных.
- Упакуем отредактированную структуру обратно в бинарный контейнер.
- Обязательно откроем полученный файл в Конфигураторе платформы 8.1 и повторно сохраним его для финальной проверки и корректного формирования структуры.
Технические ограничения и особенности кода
Проанализируем ключевые различия платформ, которые могут помешать корректной работе обработки после понижения версии:
- Типы форм: Платформа 8.1 поддерживает исключительно обычные формы. Если внешняя обработка в 8.2 создана с использованием управляемых форм, они не смогут запуститься в 8.1. Такие формы требуется перерабатывать в обычные вручную.
- Директивы компиляции: В коде обработок из 8.2 и 8.3 часто встречаются директивы
&НаКлиенте или &НаСервере. В платформе 8.1 они вызывают синтаксические ошибки, поэтому их необходимо вручную комментировать или удалять.
- Особенности макетов: Макеты типа «Текстовый документ» и «Табличный документ» обычно переносятся без потерь. Однако макеты «Схема компоновки данных» (СКД) и «Графическая схема» существенно отличаются по своей структуре и при автоматическом понижении версии могут терять настройки.
Альтернативные варианты переноса обработок
Если автоматическая конвертация контейнера завершается ошибкой, разберем альтернативные пути решения задачи:
- Ручная сборка из исходников: Разберем исходную обработку на составляющие (текстовые модули, макеты, реквизиты). В Конфигураторе 8.1 создадим чистую внешнюю обработку и вручную перенесем туда реквизиты, макеты и код модулей.
- Понижение через промежуточную версию: Если исходный файл сохранен в платформе 8.3, прямое понижение до 8.1 может не сработать. В таком случае сначала сохраним файл в формате 8.2, и только после этого выполним конвертацию в 8.1.