При попытке сформировать или распечатать накладную, счет или любой другой документ с использованием внешней печатной формы пользователи и разработчики нередко сталкиваются с системным сбоем. Платформа 1С выдает сообщение: «Не удалось сформировать внешнюю печатную форму! Ошибка при вызове метода контекста (Создать): Ошибка подключения внешних метаданных: Ошибка загрузки документа. Внешняя обработка не может быть прочитана текущей версией программы».
Проанализируем контекст возникновения данной неполадки в программном коде конфигурации. Обычно формирование печатной формы выполняется через выгрузку двоичных данных из базы во временный файл и последующее создание объекта внешней обработки:
Функция НапечататьВнешнююФорму(Ссылка, ИсточникМакета) Экспорт
ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить();
Если ДвоичныеДанные = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ИмяФайла = ПолучитьИмяВременногоФайла("epf");
Попытка
ДвоичныеДанные.Записать(ИмяФайла);
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Обработка.СсылкаНаОбъект = Ссылка;
ТабДокумент = Обработка.Печать();
УдалитьФайлы(ИмяФайла);
Исключение
ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Не удалось сформировать внешнюю печатную форму!");
КонецПопытки;
Возврат ТабДокумент;
КонецФункции
Сбой происходит ровно на строке вызова метода ВнешниеОбработки.Создать(ИмяФайла). Разберем детально причины этого поведения и пошаговый алгоритм устранения проблемы.
Выясним причину сбоя при подключении внешних метаданных. Ключевые факторы включают в себя:
ВнешниеОбработки.Создать() в режиме предприятия требует файл текущей версии и не производит его автоматическую фоновую конвертацию.ХранилищеЗначения. В таком случае метод ДвоичныеДанные.Записать() создает битый файл.%TEMP% на время фонового сканирования.Рассмотрим основной и самый надежный способ решения проблемы, когда файл обработки остался в формате предыдущей платформы. Наша задача — выгрузить файл на диск, открыть его в Конфигураторе нужной версии платформы для автоматической конвертации и загрузить обратно в систему.
.epf в удобную папку..epf. При открытии Конфигуратор автоматически распознает старый формат файла и выполнит его конвертацию под текущую версию платформы.Ctrl + S) и закрываем файл обработки в Конфигураторе..epf обратно в реквизит справочника.После выполнения этих шагов двоичные данные в реквизите ХранилищеВнешнейОбработки будут полностью соответствовать текущему формату используемой платформы, и метод ВнешниеОбработки.Создать() отработает без ошибок.
Разберем другие возможные варианты развития событий, если простое пересохранение не привело к желаемому результату:
AppData\Local\1C и AppData\Roaming\1C), а также добавим каталог %TEMP% и файлы с расширением .epf в список доверенных исключений локального антивируса.