helpf.pro
Регистрация
 +7 
Распечатать

Импорт - экспорт данных через XML. Обработка обмена документами

Восстановление документов 1С из архива в рабочую базу (XML обмен)
Не редко требуется восстановить данные испорченного документа 1С из архива базы после не умышленных, а зачастую ошибочных, действий удачливого пользователя. Самым простым способом является выгрузка данных из базы архива 1с в XML, а затем загрузка этого XML файла в рабочую базу. Данное решение целиком и полностью опирается на внутренние XML алгоритмы работы конфигурации 1С. При помощи предлагаемой обработки в рабочую базу загружаются все реквизиты документа и его табличные части в том виде, в котором они существовали в архиве.
Исключение составляют движения документа. Данные о движениях не сохраняются при XML сериализации. Хотя документ и восстанавливается проведенным, но все регистры учета и накопления не трогаются. По этому, после восстановления документа следует его провести, либо воспользоваться обработкой, которая позволяет восстановить утерянный или испорченный документ со всеми его движениями.

Импорт - экспорт данных через XML. Обработка обмена данными.
Начало работы с обработкой по экспорту данных документа 1С в XML начинается с выбора имени XML файла и документа, данные которого необходимо сохранить. Первый этап следует выполнять на архивной копии базы, из которой требуется получить достоверные данные. После указания требуемых данных следует нажать кнопку "Выгрузить". Экспорт данных выбранного документа будет осуществлен в указанный пользователем XML файл.
title
Импорт данных из XML файла следует осуществлять уже в рабочей базе в режиме "1С Предприятие". Для этого откройте обработку, выберите файл данных и нажмите кнопку восстановить. Документ выбирать не обязательно, так как все его данные уже известны и содержаться в XML файле. Важное замечание - движения документа не изменяются, по этому если нужно их тоже восстановить документ следует провести.
Скачать обработку: Скачивать файлы может только зарегистрированный пользователь!

Импорт данных из 1С в XML
Обеспечение возможности импорта данных из 1С в XML осуществляет процедура XML_Импорт. Процедура импорта проверяет пользовательский ввод - имя файла и ссылку на документ, данные которого нужно сохранить в XML файл. Далее создается новый текстовый файл, в который средствами 1С осуществляется выгрузка значений всех реквизитов документа и табличных частей.
Исходный код процедуры:
Код 1C v 8.х
 /////////////////////////////////////////////
// Процедура осуществляет выгрузку данных
// выбранного документа из 1С в XML используя
// запись сообщения обмена (XML Writer)
Процедура XML_Импорт(Кнопка)

/////////////////////////////////////////
// Проверить выбор пользователя.
// Поле Документ ДОЛЖНО быть заполнено
Если НЕ ЗначениеЗаполнено(ДокументОбъект) Тогда
Предупреждение("Нужно выбрать документ.");
Возврат;
КонецЕсли;

/////////////////////////////////////////
// Проверить выбор пользователя.
// Поле Имя файла ДОЛЖНО быть заполнено
Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Укажите файл данных XML для выгрузки.");
Возврат;
КонецЕсли;

// Проверить возможность перезаписи текста
Файл = Новый Файл(ИмяФайла);
Если Файл.Существует() Тогда
Ответ = Вопрос("Файл " + ИмяФайла + " существует. Заменить?",РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Сообщить("Сохранение отменено.");
Возврат;
КонецЕсли;
КонецЕсли;

/////////////////////////////////////////
// Записать данные документа в XML используя
// последовательный доступ к тексту и XML сериализацию
ТекстФайл = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);

// Преобразовать данные документа в формат XML
// страндарными средствами платформы 1С
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, ДокументОбъект.ПолучитьОбъект());

// Сохранить полученные XML Данные в текстовый документ
ТекстФайл.Записать(ЗаписьXML.Закрыть());
ТекстФайл.Закрыть();
КонецПроцедуры


Экспорт данных из XML в 1С
Обратная операция - экспорт данных из XML в 1С реализована в процедуре XML_Экспорт. Данные, сохраненные на предыдущем этапе, читаются из XML файл при помощи механизма XML Reader. Для восстановления данных документа достаточно указать только имя XML файла, так все необходимые данные о том, какой именно документ нужно восстанавливать уже имеются в файле. После успешного чтения данных 1С средствами платформы изменит требуем документ и откроет его в новом окне для проверки. Для восстановления движений документа его необходимо провести.
Исходный код процедуры:
Код 1C v 8.х
 Процедура XML_Экспорт(Кнопка)
/////////////////////////////////////////
// Проверить выбор пользователя.
// Поле Имя файла ДОЛЖНО быть заполнено
Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Укажите файл данных XML для загрузки!");
Возврат;
КонецЕсли;

/////////////////////////////////////////
// Проверка возможности чтения XML файла
Файл = Новый Файл(ИмяФайла);
Если НЕ Файл.Существует() Тогда
Предупреждение("Указанный Вами файл " + ИмяФайла + " не найден!");
Возврат;
КонецЕсли;

/////////////////////////////////////////
// Прочитать XML файл используя стандартные
// средства платформы 1С XML Reader
попытка
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
НовыйОбъект = ПрочитатьXML(ЧтениеXML);
ДокументОбъект = НовыйОбъект.Ссылка;
Документ = НовыйОбъект.ПолучитьФорму();
Документ.Открыть();
исключение
Сообщить(ОписаниеОшибки());
конецпопытки;
КонецПроцедуры

источник
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 86363
 +7 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C медленно работает по сети с базой на SQL Server 22
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
1Cv8.1CD - Файл данных достиг максимального размера! 8
1С выдает предупреждение " Файл данных достиг максимального размера" . Подскажите из - за чего это и как можно решить ? Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче
Посмотреть все результаты поиска похожих
Комментарии
marchenko
30.12.2015 19:14Комментарий: 6
marchenko

Благодарю, помогла разобраться с переносом через XML

Neeff
10.06.2014 14:35Комментарий: 5
Neeff

"Импорт данных из XML файла следует осуществлять уже в рабочей базе в режиме" , подскажите пожалуйста,если у меня совершенно новая(пустая),еще не рабочая база и мне надо данные с XML документа выгрузить в 1С. Т.е. при выгрузке просит выбрать документ,но у меня еще там ничего нет.  Как правильно это сделать? 

fox_haus
21.06.2013 00:01Комментарий: 4
fox_haus
а вообще все работает нормально. спасибо за труд.
fox_haus
21.06.2013 00:00Комментарий: 3
fox_haus
возникает ошибка если за ранее не создан документ выгрузки.
исправить можно так:
заменить строку на
// Имя XLM файла по умолчанию
ИмяФайла = ПолучитьСистемнуюПапку("MyDocuments") + "\тест.xml";

и добавить функцию
ункция ПолучитьСистемнуюПапку(Имя)

Попытка

Ctrl = Новый COMОбъект("MSScriptControl.ScriptControl");
Ctrl.Language = "vbscript";
Ctrl.AddCode("
|Function SpecialFolders(Name)
|Set Shell = CreateObject(""Wscript.Shell"")
|SpecialFolders = Shell.SpecialFolders(Name)
|End Function");

ИмяПапки = Ctrl.Run("SpecialFolders", Имя);

Исключение
ИмяПапки = Неопределено;

КонецПопытки;

Возврат ИмяПапки;


КонецФункции
ybyfc
23.04.2013 09:27Комментарий: 2
ybyfc
Спасибо за обработку! Помогла.
Anilim
19.08.2012 19:59Комментарий: 1
Anilim
Друг, большое тебе спасибо, искал простенькую обработку, для переноса ТЧ из одной базы в другую, эта подошла идеально!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.