Из mxl в xml

Бухгалтерские программы и системы на их основе уже давно используются на предприятиях. Но даже специалисты, которые имеют большой опыт работы с 1С сталкиваются с разнообразными проблемами. К таким проблемам относится ошибка формата потока.

Почему возникает ошибка

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

Поскольку 1С – клиент-серверное приложение, клиент получает всю информацию от сервера. А кэш, в этом случае, служит буфером и позволяет уменьшить количество обращений клиента к нему.

Если по какой-либо причине сеанс работы в 1С будет завершен некорректно (отключение ПК из сети, неправильное завершение работы с программой, потеря связи с сервером) – файл кэша может быть поврежден, что вызовет ошибку формата потока. Именно из-за повреждения кэша и возникает ошибка формата потока.

Также могут быть неверно сохранены документы, либо другие объекты системы. Также ошибка формата потока может сопровождаться сообщениями – неверный формат файла для загрузки информационной базы или произошла ошибка создания файлового потока.

Разновидности ошибки:

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

Устранение ошибки

Чистка кэша

Чаще всего проблема с кэшем устраняется его удалением. Следует перейти по пути Системный Диск:\ Пользователи\Текущий пользователь\AppData\Roaming\1С. Затем найти директории с названиями «1Cv8» и «1Cv82», выделить все файлы и папки, хранящиеся в них, кликнуть правой кнопкой мыши (ПКМ) и выбрать из списка пункт «Удалить».

Никаких негативных последствий этой операции не возникнет, служебные файлы и конфигурации хранятся в других папках.

Этот способ практически всегда помогает, если ошибка возникает при открытии конфигурации.

Тест и исправление

Для исправления ошибки формата потока при запуске 1С следует провести регламентированную операцию «Тест и исправление неисправностей»:

  1. Перейти в режим конфигуратора и выбрать пункт «Администрирование» и затем «Тестирование и исправление».
  2. Отметить первый и второй пункты в поле «Проверки и режимы». Кликнуть по кнопке «Выполнить». Произойдет автоматическая проверка, поиск ошибок и их исправление с выводом отчета. В случае необходимости можно сделать проверку ссылочной целостности.

Проверка с помощью chdbfl.exe

В случае, если запустить диагностику предыдущим способом возможности нет, нужно зайти в директорию с программой, найти в ней папку «BIN», затем запустить «chdbfl.exe». В открывшемся окне выбрать файл с БД, активировать галочкой «Исправлять обнаруженные ошибки» и нажать «Выполнить».

Произойдет проверка файлов, система сама найдет и устранит проблемы. Во время проверки работать в 1С нельзя. Способ доступен только для файловой БД.

Удаление базы из списка

Для удаления и добавления базы заново, при старте работы выбрать нужную базу данных, кликнуть по кнопке «Удалить…».

Затем, внести заново из меню «Добавить…».

Внимание! Перед удалением стоит нажать кнопку изменить и нажатием «Далее» пролистать все станицы настройки, записав их содержимое.

Этот способ также поможет произвести очистку кэша.

Выгрузка и загрузка базы

Этот способ представляет собой создание архивной копии базы данных. Нужно:

  1. Открыть конфигуратор, выбрать «Администрирование», затем «Выгрузить информационную базу». Указать путь к директории, в которую нужно сохранить бэкап.
  2. После окончания выгрузки создать новую базу на ПК, затем загрузить выгруженный ранее бэкап из меню администрирования.

Но этот способ не сработает, если ошибка формата потока возникает при загрузке файла бэкапа с расширением dt.

Выгрузить и загрузить XML

Отличие от предыдущего способа заключается в том, что происходит выгрузка не всей базы, а только данных из нее. Производится она с помощью функции «Выгрузка и загрузка данных XML». Для этого нужна специализированная обработка, которую можно найти на диске ИТС или в папке приложения:

  1. Перейти в меню «Файл» — «Открыть». Указать директорию, где лежит вышеуказанная обработка. Как правило, это главная папка программы.
  2. После ее подключения, в списке отметить все пункты галочками и нажать «Выгрузить данные».

Загрузка происходит точно так же, на расположенной рядом одноименной вкладке.

Обновление платформы

Если ошибка возникает при обновлении конфигурации, можно попробовать обновить платформу. Для этого нужно зайти на сайт 1С, обязательно ввести логин и пароль. Найти нужную версию платформы и скачать ее.

Затем сделать выгрузку БД, как было указано выше, чтобы сделать резервную копию.

После этого запускаем скачанный файл и следуем подсказкам мастера.

Другие способы

В большинстве случаев проблема будет решена с помощью вышеописанных способов. Если же, все-таки, ошибка формата потока не исчезла, следует искать причины в оборудовании используемого ПК.

Может помочь чистка временных файлов, диагностика с помощью «Check Disk», проверка проверку на вирусы. Можно перенести базу данных на другой ПК, чтобы убедиться в целостности данных.

При написании обмена между 1С 7.7 и «Меркурием» через ВЕТИС.API я впервые вплотную столкнулся с форматом XML. За основу взял существующую обработку «Обмен с системой Меркурий через Ветис.API» (//v8book.ru/public/665865/). Обработка использует внешнюю компоненту V7PLUS.DLL, которая позволяет генерировать XML для запроса и читать XML ответа.

По мере погружения в более сложные XML-запросы и дешифровки всё более сложных ответов в формате XML я понял, что становится всё тяжелее «переварить» ответный XML с помощью навигации по узлам, тем более, что у разных запросов XML-ответ приходит в разном формате с разной «глубиной залегания» узлов. Просмотр сложных XML-файлов в браузере помогал в понимании структуры XML, но окончательно не устраивал.

Пришлось самому осваивать свойства и методы внешней компоненты V7PLUS.DLL для навигации по узлам XML и конвертации узла XML в объекты 1С. В результате была написана функция «ПолучитьТаблицуПодчиненныхУзловXML()», которой на вход подаётся узел XML или весь XML-документ, а на выходе возвращается таблица значений, которая содержит подчинённые узлы, их характеристики, и для каждого подчинённого узла, имеющего свои подчинённые узлы — свою таблицу подчинённых узлов. И так до самого глубокого уровня. Атрибуты узлов содержатся в списке атрибутов, который доступен в отдельной колонке. Таким образом, подавая на вход функции любой XML-файл заранее неизвестной структуры мы получаем его автоматический перевод в объекты 1С (таблицу значений со вложенными таблицами и списками значений), что позволяет поручать разбор любого XML 1С-специалисту, который может быть не знаком со свойствами и методами «чтения» узлов XML.

При разборе сложноподчинённой таблицы значений, получаемой на выходе функции «ПолучитьТаблицуПодчиненныхУзловXML()», желательно наглядно представлять её структуру, количество вложений и т. д. Для этого используется универсальная функция «ОтладочныйПросмотрТаблицы()», которая позволяет вывести в печатную форму любую таблицу значений с возможностью интерактивного открытия и отладочного просмотра вложенных таблиц и списков значений. Пример использования отладочного просмотра таблицы значений с составом XML-файла показан на рис. 2. Однако на больших XML-файлах отладочный просмотр может приводить к «вылетанию» 1С. То есть сама таблица значений нормально возвращается из функции «ПолучитьТаблицуПодчиненныхУзловXML()», её перебор возможен, но невозможен отладочный просмотр.

Для наглядного анализа XML-файла заранее неизвестной структуры в обработке имеется возможность конвертации XML-файла в печатную форму формата MXL древовидной структуры (см. рис. 3). Кроме того, с помощью внешней компоненты «Йоксель» (SpreadSheet.dll) в обработке есть возможность вывода иерархической печатной формы со свёрткой строк по узлам (см. рис. 4).

Кроме того, наряду с конвертацией XML-файла в печатную форму MXL, в обработке предусмотрена конвертация XML-файла в файл формата Excel (XLS) (см рис. 5). В случае использования внешней компоненты «Йоксель» — Excel-файл сохраняется сразу иерархическим, а при отсутствии внешней компоненты «Йоксель» — происходит попытка добавить иерархию в Excel-файл через VBA-операторы. Однако для этого на клиентском компьютере должно быть установлено приложение «Excel» (тестирование проводилось на Microsoft Office Excel 2007 (12.0.6611.1000) SP3 MSO (12.0.6662.5000)).

Обработка позволяет сохранять полученные файлы MXL и/или XLS по заданным путям.

Таким образом, обработка «ОтладочныйПросмотрXML.ert» позволяет:

  • преобразовать XML-файл неизвестной структуры в таблицу значений для дальнейших манипуляций с ней средствами встроенного языка 1С (конвертер XML в Таблицу значений)
  • вывести полученную из XML-файла таблицу значений на просмотр с возможностью «погружения» в более глубокие узлы XML
  • вывести XMLфайл неизвестной структуры в древовидную печатную форму формата MXL с возможностью свёртки строк по узлам XML (конвертер XML в MXL)
  • вывести XMLфайл неизвестной структуры в древовидную печатную форму формата Excel (XLS) с возможностью свёртки строк по узлам XML (конвертер XML в XLS)

Обработка использует внешние компоненты V7PLUS.DLL и SpreadSheet.dll, которые можно положить в каталог внешнего отчёта, каталог базы или каталог программы.

Тестирование обработки проводилось на релизе 1С 7.7 (7.70.025) как в DBF, так и в SQL версии.

Срок бесплатной технической поддержки — 1 месяц.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *