Как восстановить и извлечь утерянный XML-файл правил обмена из 1С?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

В практике работы с платформой 1С периодически возникает ситуация, когда файл правил конвертации или обмена данными (в формате XML) оказывается случайно удален или утерян с диска. При этом в самой информационной базе или в загруженной внешней обработке V8Exchan82.epf обмен продолжает успешно функционировать. Рассмотрим подробнее, какими способами можно извлечь и восстановить исходный XML-файл правил обмена.

1. Выгрузка из стандартных объектов информационной базы

Разберем первоочередные места в самой конфигурации 1С, где могут храниться загруженные ранее правила конвертации:

  1. Справочник "Настройки обмена данными": перейдем в меню настройки обмена, найдем нужный элемент обмена и откроем его на редактирование. На первой вкладке, где указываются правила обмена, расположена кнопка выгрузки правил в отдельный XML-файл.
  2. Регистр сведений "Правила для обмена данными": в типовых конфигурациях правила часто записываются в служебный регистр сведений (название может варьироваться, например, ПравилаДляОбменаДанными). Из этого регистра двоичные данные правил можно сохранить на диск.
  3. Макеты планов обмена в Конфигураторе: если обмен типовой или встроен разработчиками прямо в конфигурацию, правила могут располагаться в макетах. Откроем Конфигуратор и перейдем по пути: Общие -> Планы обмена -> [Наименование обмена] -> Макеты. Найдем макет с именем ПравилаОбмена или ПравилаОбменаКорреспондента, скопируем его содержимое и сохраним в текстовый файл с расширением XML.

2. Извлечение правил из ранее выгруженного файла данных

Проанализируем структуру XML-файла выгрузки данных, если обмен уже выполнялся ранее. Если при настройке выгрузки через обработку V8Exchan82.epf был установлен флаг включения правил обмена в итоговый файл, то полный текст правил конвертации интегрируется непосредственно в сформированный файл обмена.

Для восстановления выполним следующие шаги:

  1. Откроем сформированный XML-файл данных в любом текстовом редакторе (например, Notepad++).
  2. Найдем служебные теги, содержащие правила конвертации.
  3. Скопируем текстовый блок правил и сохраним его в отдельный файл с расширением .xml.

3. Поиск во временных файлах операционной системы

При чтении и распаковке правил обработка выгрузки может создавать временные копии на локальном диске пользователя. Выясним, где именно их искать:

Перейдем в каталог временных файлов операционной системы (папка %TEMP%). Если сеанс 1С еще не закрывался или ПК не перезагружался, в этой папке можно обнаружить временные файлы с расширениями .tmp или .xml, содержащие структуру правил обмена.

4. Извлечение правил из оперативной памяти и отладка обработки

Если внешняя обработка V8Exchan82.epf открыта в текущем сеансе, дерево правил и структура обмена находятся в оперативной памяти объекта обработки. В таком случае выгрузить их можно несколькими техническими способами:

  1. Отладка в Конфигураторе: откроем обработку V8Exchan82.epf в Конфигураторе и найдем программный код обработчика кнопки выгрузки или загрузки правил. Установим точку останова в месте, где правила считываются в оперативную память. Запустив сеанс в режиме отладки, поймаем момент, когда XML-структура находится в переменной, и сохраним её на диск.
  2. Программная выгрузка через объект ЗаписьXML: вызовем внешний контекст исполнения кода (например, через внешнюю консоль кода) и обратимся к заполненным реквизитам объекта открытой обработки. Используя объект ЗаписьXML, выгрузим дерево правил обратно в файл:

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\Rules.xml", "UTF-8");
// Программно записываем структуру правил из реквизита обработки
// ...
ЗаписьXML.Закрыть();

Важные ограничения и особенности

Обратим внимание на следующие важные особенности работы внешней обработки обмена:

Внешняя обработка V8Exchan82.epf работает с правилами в оперативной памяти текущего сеанса. Если правила не сохранялись в справочниках базы данных или встроенных макетах, то после закрытия формы обработки и завершения сеанса 1С восстановить их из оперативной памяти будет невозможно. Поэтому извлечение данных необходимо выполнять до закрытия обработки.

← На главную