1с 7 создание xml файла

Обновлено: 05.07.2024

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

7.1. Перенос данных с выгрузкой и загрузкой файла xml

7.1.1. Выгрузка данных в файл

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

Если необходимо выгрузить только часть данных исходной информационной базы, то воспользуйтесь последовательностью действий, описанной в следующем параграфе.

Перед выгрузкой необходимо проверить корректность данных исходной информационной базы. Порядок проверки описан в главе 1 «Проверка данных до переноса».

Рассмотрим выгрузку данных в файл на примере переноса данных из информационной базы 1С:Бухгалтерии 7.7. Порядок действий при других вариантах переноса не меняется.

Перенос данных выполняется поэтапно. Перед началом переноса убедитесь, что исходная информационная база закрыта и в ней не работают пользователи.

Этап 1. Резервное копирование

Выполним резервное копирование информационной базы конфигурации Бухгалтерский учет редакции 4.5.

Этап 2. Выгрузка данных

Запустим 1С:Бухгалтерию 7.7.

Перенос данных осуществляется с помощью файлов, которые находятся в подкаталоге ExtForms (1SBDB\ExtForms):

  • V77Exp.ert – обработка выгрузки данных из конфигурации Бухгалтерский учет, редакция 4.5;
  • Acc77_80.xml – правила конвертации данных, используемые обработкой V77Exp.ert.

Правила переноса исходной информационной базы должны быть актуальными на момент переноса. Актуальные правила всегда следует получать из 1С:Бухгалтерии 8. Для этого выполним следующие действия:

  • Выберем конфигурацию исходной информационной базы.
  • Нажмем кнопку Записать файлы конвертации на диск. Откроется дерево каталогов.
  • В открывшемся дереве каталогов выберем подкаталог ExtForms (1SBDB\ExtForms) и в нем файл правил переноса Acc77_80. xml исходной информационной базы.
  • Нажмем кнопку Open – файл правил переноса исходной информационной базы будет заменен на актуальный файл.

После обновления правил переноса можно приступать к выгрузке данных. Для этого необходимо воспользоваться помощником перехода. Нажмем кнопку Переход на 1С:Бухгалтерию 8 панели инструментов программы

Шаг 1. Начало работы с помощником

Нажмем кнопку О преимуществах 1С:Бухгалтерии 8, чтобы ознакомиться с преимуществами перехода.

Шаг 2. Проверка обновлений

Для проверки наличия обновлений нажмем кнопку Проверить наличие обновлений.

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

Шаг 3. Настройка периода выгрузки

Выберем период выгрузки.

Для этого установим переключатель на одном из следующих значений:

  • Остатки на начало года – если остатки переносятся на начало года;
  • Остатки на начало года и обороты за период – если остатки переносятся в середине года.

В поле Период укажем период переноса. Например, если выгрузка формируется на 01.01.2009, то установим переключатель Остатки на начало года, в поле Период выберем – 2009 г.

Шаг 4. Адрес файла выгрузки

В поле Выгружаемые данные будут записаны в файл отображается расположение файла выгрузки.

Шаг 5. Выгрузка данных

Нажмем Выгрузить для выполнения выгрузки данных. В результате выгрузки будет создан файл в формате XML.

Рекомендуется установить флажок Сформировать оборотно-сальдовую ведомость. В этом случае после окончания выгрузки программа автоматически сформирует отчет Оборотно-сальдовая ведомость. Используйте отчет для проверки загруженных данных.

7.1.2. Неполная (частичная) выгрузка данных в файл

Под неполной (частичной) выгрузкой понимается перенос только ряда объектов информационной базы. Для этого нужно воспользоваться универсальной выгрузкой данных.

В открывшемся окне выберем пункт Выгрузка данных для 1С:Бухгалтерии 8.

Далее необходимо заполнить параметры универсальной выгрузки данных.

Укажем параметры выгрузки:

  • Имя файла правил – выберем файл правил конвертации данных;
  • Имя файла данных – укажем файл, в который будут выгружены данные в формате .xml;
  • Дата начала, Дата окончания – укажем период выгрузки. Если перенос осуществляется на начало года, то в поле Дата начала и Дата окончания необходимо указать одинаковую дату. Например, если перенос осуществляется на начало 2009 года, то нужно указать дату начала и дату окончания – 01.01.2009;
  • Правила выгрузки данных – нажмем кнопку Загрузить правила обмена для заполнения табличной части Правила выгрузки данных. По тем разделам, по которым выгрузка не производится, снимем флажки. Например, если необходимо перенести только данные справочника Банковские счета и Банки, то установим флажки Банки и Банковские счета в табличной части Правила выгрузки данных.

Нажмем Выгрузить для выполнения выгрузки данных.

7.1.3. Загрузка данных из файла

Запустим 1С:Бухгалтерию 8.

Дополнительные настройки в информационной базе 1С:Бухгалтерии 8 не требуются. Настройки параметров учета для корректного переноса данных будут установлены в информационной базе по умолчанию.

Необходимо воспользоваться помощником перехода (меню Сервис – Перенос данных из информационных баз 1С:Предприятия 7.7).

Шаг 1. Выбор варианта загрузки данных

Выберем пункт Загрузить данные из файла.

Шаг 2. Выбор файла загрузки

Выберем в поле Путь к файлу данных файл загрузки.

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

Нажмем кнопку Далее для выполнения загрузки.

Шаг 3. Загрузка

Загрузка данных и их проверка осуществляются автоматически.

  • загрузка данных,
  • проведение загруженных документов,
  • проверка загруженных документов.

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

Внимание!

Если загрузка осуществляется в программный продукт базовой версии, то ИНН и КПП организации в 1С:Бухгалтерии 8 будут заменены на ИНН/КПП организации исходной информационной базы.

Шаг 4. Результат переноса

Если перенос данных прошел успешно, выводится строка: «Перенос прошел успешно!».

Если используется версия ПРОФ, можно сразу приступить к переносу информационной базы или данных из файла, нажав кнопку Продолжить.

Кнопка Завершить используется для закрытия формы.

Если используется базовая версия, перенос данных окончен, следует нажать кнопку Завершить для закрытия формы.

7.2. Перенос данных из нетиповых конфигураций

В данном параграфе приводятся общие рекомендации для всех конфигураций.

Если в конфигурацию исходной информационной базы вносились изменения, то для корректного переноса данных следует воспользоваться следующей последовательностью действий:

1. Открыть конфигурацию Конвертация данных, которая размещена на диске ИТС.

2. В конфигурацию Конвертация данных загрузить типовые правила переноса данных исходной информационной базы.

3. Обновить описания конфигурации исходной информационной базы.

4. Вручную скорректировать данные конфигурации Конвертация данных в соответствии с изменениями, которые вносились в типовую конфигурацию.

Ознакомиться с подробной инструкцией о порядке работы с конфигурацией Конвертация данных можно на диске ИТС.

Если в план счетов исходной информационной базы 1С:Бухгалтерии 7.7, 1С:УСН 7.7 добавлены счета, субсчета, то данные по счетам и субсчетам автоматически не перенесутся. Для переноса данных по таким счетам добавим счета в План счетов 1С:Бухгалтерии 8. В этом случае остатки на начало года введем документом Ввод начальных остатков, обороты – документом Операция (бухгалтерский и налоговый учет).

7.3. Перенос из нескольких информационных баз

В 1С:Бухгалтерии 8 версии ПРОФ поддерживается возможность ведения учета нескольких организаций в одной информационной базе. При этом можно использовать общие справочники для всех организаций.

При переносе данных из нескольких информационных баз необходима синхронизация данных (элементы справочников не должны дублироваться).

Общие правила синхронизации:

  • Структура (иерархия) справочников исходных информационных баз должна совпадать, т. е. количество уровней справочника и наименование папок каждого из уровней исходных информационных баз должны быть одинаковы.
  • Перед выгрузкой данных обязательно нужно проверить реквизит Наименование справочников. Реквизит Наименование используется в качестве основного реквизита синхронизации для большинства справочников.
  • В 1С:Бухгалтерии 8 у справочников есть реквизиты, которые в конфигурации на платформе 1С:Предприятия 7.7 отсутствуют. Однако эти данные необходимы для корректной синхронизации объектов. Для этого при переносе реквизиты заполняются некими предопределенными значениями (сведениями об информационной базе, источнике и типе выгружаемых данных) в зависимости от контекста выгружаемых данных. Например, при переносе элементов справочника Основные средства в поле Комментарий формируется ключевая строка, содержащая ИНН организации и инвентарный номер объекта.

При загрузке данных производится синхронизация справочников: проверяется, был ли ранее загружен элемент или необходимо добавить новый элемент. Проверка осуществляется путем сравнения реквизитов загружаемого элемента с реквизитами уже загруженного элемента. Реквизиты проверки (синхронизации) для справочников могут различаться. Реквизиты синхронизации для справочников при переносе из различных программ приведены в таблицах.

Возникала необходимость чтения обработки XML файлов неизвестной структуры, вот написал процедуры, которые преобразуют XML файл любой в дерево значений, а также считывают и преобразуют данные в переменную типа структура причем типы переменных преобразуются в соответствии с требованиями, Дата, Булево, Число, Строка

Возможно, что кому нибудь эти данные будут интересны

Тестировалась на платформе 1С:Предприятие 8.3 (8.3.15).

Конфигурация 1С не имеет значения.

Преобразование XML файла в переменную структура, Загрузка в дерево значений.:

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Дерево значений это хорошо, но у меня основная цель стояла создать переменную структуры а не дерево значений, а так спасибо!

модуль ИнтеграцияВЕТИС, 1С:ERP Управление предприятием 2 (2.4.9.82)

// Преобразует объект XDTO в структуру
//
// Параметры:
// ОбъектXDTO - ОбъектXDTO - Объект XDTO.
//
// Возвращаемое значение:
// Структура - Структура объекта.
//
Функция ОбъектXDTOВСтруктуру(ОбъектXDTO, ПараметрыПреобразования = Неопределено) Экспорт

Структура = Новый Структура;
ТипОбъектаXDTO = ОбъектXDTO.Тип();

Для Каждого Свойство Из ОбъектXDTO.Свойства() Цикл

ИмяСвойства = Свойство.Имя;
ЗначениеСвойства = ОбъектXDTO[ИмяСвойства];

Если ТипЗнч(ЗначениеСвойства) = Тип("ОбъектXDTO") Тогда

Структура.Вставить(ИмяСвойства, ОбъектXDTOВСтруктуру(ЗначениеСвойства, ПараметрыПреобразования));

ИначеЕсли ТипЗнч(ЗначениеСвойства) = Тип("СписокXDTO") Тогда

Структура.Вставить(ИмяСвойства, Новый Массив);
Для Индекс = 0 По ЗначениеСвойства.Количество() - 1 Цикл

ЭлементСписка = ЗначениеСвойства.Получить(Индекс);
Если ТипЗнч(ЭлементСписка) = Тип("ОбъектXDTO") Тогда
Структура[ИмяСвойства].Добавить(ОбъектXDTOВСтруктуру(ЭлементСписка, ПараметрыПреобразования));
Иначе
Структура[ИмяСвойства].Добавить(ЭлементСписка);
КонецЕсли;

Если ПараметрыПреобразования <> Неопределено
И ПараметрыПреобразования.НайтиИдентификаторы
И Свойство.Тип = ПараметрыПреобразования.ТипUUID Тогда

РезультатПоиска = ПараметрыПреобразования.ТипыИдентификаторов[ТипОбъектаXDTO];
Если РезультатПоиска <> Неопределено
И РезультатПоиска.ИмяПоля = ИмяСвойства Тогда
ПараметрыПреобразования.Идентификаторы[РезультатПоиска.ИмяТаблицы].Вставить(ЗначениеСвойства, РезультатПоиска.ПустоеЗначение);
КонецЕсли;

Создание XML-файла с помощью компоненты v7plus.dll.

XML, как известно, один из языков разметки. Подробно о нем можно прочитать в книге и в Инете. С его помощью легко реализовать древовидную структуру хранения данных , а также задать жесткие правила построения дерева, что уменьшит ошибки, связанные с доступом к данным.

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

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

//Сначала проинициализируем компоненту v7plus, предоставляющую объекты для работы с XML:
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll" ) <> 1 Тогда
Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll" ) <> 1 Тогда
Предупреждение( "Компонента v7plus.dll не найдена!" );
КонецЕсли;
КонецЕсли; Анализатор = СоздатьОбъект( "AddIn.XMLParser" );

//Теперь начнем строить дерево документа. Заодно занесем служебную информацию о файле выгрузки в атрибуты корневого элемента
Корень = Анализатор . СоздатьДокумент ();
Данные = Корень.СоздатьПодчиненныйЭлемент ( "Данные" ); Данные . УстановитьАтрибут ( "ИБ" ,КаталогИБ());
Данные . УстановитьАтрибут ( "Дата" ,Строка(РабочаяДата()));
Данные . УстановитьАтрибут ( "Оператор" ,ИмяПользователя());

//И создади две основные ветви Справочники и Документы
Справочники = Данные . СоздатьПодчиненныйЭлемент ( "Справочники" );
Документы = Данные . СоздатьПодчиненныйЭлемент ( "Документы" );

// в общей ветке Справочники создадим ветку для справочника Контрагентов
Клиенты = Справочники . СоздатьПодчиненныйЭлемент ( "Клиенты" );

//А вот так заполняются элементы для справочников. Каждый реквизит справочника выносится в отдельный элемент дерева. Т.к. в данном задании выбрана схема синхронизации справочника Контрагентов по ИНН, то в значение элемента записываем ИНН, а для наглядности в атрибут элемента заносим наименование клиента
К = СписокКлиентов . ПолучитьЗначение ( х );
Состояние( "Выгружаются сведения по: " + К . Наименование );
Клиент = Клиенты . СоздатьПодчиненныйЭлемент ( "Клиент" );
Клиент . УстановитьАтрибут ( "Наименование" , К . Наименование );
Клиент . Значение = К . ИНН ;

// выгружаем все нужные реквизиты контрагента
ПН = Клиент . СоздатьПодчиненныйЭлемент ( "ПолнНаименование" );
ПН . Значение = К . ПолнНаименование ;
ВК = Клиент . СоздатьПодчиненныйЭлемент ( "ВидКонтрагента" );
ВК . Значение = К . ВидКонтрагента . Идентификатор ();

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

// Завершающие шаги и сохранение файла
ИмяФайла = СтрЗаменить(Строка( ДатаВыгрузки )+Строка( ДатаВыгрузки1 ), "." , "" ) + ".xml" ;
ПапкаФайла = "C:\1C\Change\Sweet\" ;
Корень . Записать ( ПапкаФайла + ИмяФайла );


Чтение данных.

В первой части статьи были рассмотрены простейшие приемы работы по созданию XML-документа. В этой части будут описаны способы получения данных. Основным моментом, на который я хотел бы обратить Ваше внимание, является следующее правило: сперва с помощью методов .ВыбратьУзел() или .ВыбратьУзлы() производится выборка узла/элемента, а затем с помощью методов соответственно .ПолучитьПодчиненныйПоНомеру() и .ПолучитьУзел() обеспечивается непосредственный доступ к узлам/элементам документа. Впрочем, здесь можно провести аналогию работы со справочниками и документами в 1С: сначала делаем выборку с помощью .ВыбратьЭлементы() или .ВыбратьДокументы(), а затем получаем сами объекты .ПолучитьЭлемент() или ПолучитьДокумент(). Оба приема используются в данном примере. Код с пояснениями:

Инициализацию компоненты опустим. Для чтения она ничем не отличается.
//создадим объект для доступа к xml-файлу, загрузим в него файл и получим ссылку на корневой элемент xml-документа. Напомню, что у нас он назван "Данные"
ФайлДанных = Анализатор . СоздатьДокумент ();
ФайлДанных . Загрузить ( ФайлЭксп );
ВсеУзлы = ФайлДанных . ВыбратьУзлы ( "Данные" );

// получаем доступ к корневому узлу/элементу и читаем его атрибуты Данные = ВсеУзлы . ПолучитьУзел ( 0 );
Сообщить( "Идет загрузка данных из базы: " + Данные . ПолучитьАтрибут ( "ИБ" ));
Сообщить( "Выгрузка производилась: " + Данные . ПолучитьАтрибут ( "Дата" ));
Сообщить( "Выгрузку произвел/произвела: " + Данные . ПолучитьАтрибут ( "Оператор" ));

// следующими операторами мы получаем доступ к двум основным ветвям: ветки Справочники и ветке Клиенты
Справочники = Данные . ВыбратьУзел ( "Справочники" );
Документы = Данные . ВыбратьУзел ( "Документы" );

// "спускаемся" по иерархии глубже и получаем доступ к элементу Клиенты, Выписки и Приходники
Клиенты = Справочники . ВыбратьУзел ( "Клиенты" );
Выписки = Документы . ВыбратьУзел ( "Выписки" );
Приходники = Документы . ВыбратьУзел ( "Приходники" );

//если очень интересно сколько прийдется загружать Контрагентов, то можно воспользоваться следующей конструкцией
Сообщить( "Количество клиентов: " + Строка( Клиенты . КоличествоПодчиненных ()));

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

И ветер-память по ночам гудит,
Деревья-память целый день лепечут.

И там, в пернатой памяти моей,
Все сказки начинаются с "однажды".

Так вот, однажды мне пришлось переносить данные из базы на платформе 1С:Предприятие 7.7 . Первый этап, как обычно, состоял в экспорте-импорте справочников. В качестве средства обмена выступал файл в формате xml. Запись и последующее чтение было реализовано через объект Msxml2.DOMDocument.

В приведенном фрагменте кода создается объект xmlDOM и формируется секция заголовка будущего файла, в который добавляется корневой элемент Body, содержащий всю выводимую информацию. В дальнейшем создание новых записей происходит через вызов двух функций - createElement(. ) и appendChild(. ). Когда xml документ заполнен, он сохраняется в виде внешнего файла вызовом метода Save(. ).

Последовательность действий несложная. Но если открыть полученный файл, то окажется, что все данные представлены одной длинной строкой. А это, откровенно говоря, неудобно. Возникает вполне законный вопрос, как привести информацию к удобному виду.

Один из способов состоит в применении к подготовленному xml тексту таблицы стилей, которая фактически является набором команд по преобразованию исходного представления в нужное. Делается такое преобразование одной командой - xmlDOM.transformNodeToObject(. ). Секрет состоит в содержании таблицы стилей. В описании я его приводить не буду, для этого понадобится заглянуть в модуль обработки и найти функцию Function Transform(doc,path). Данное решение я встретил на англоязычном сайте, за что автору спасибо.

Но это еще не все, используя данный метод я обнаружил, что преобразованный текст сохраняется в кодировке UTF-16. Впрочем, после непродолжительной борьбы данное препятствие было устранено. Применение обработки труда не составит. Надо выбрать файл приемник, указать вид справочника, который необходимо выгрузить и нажать кнопку Сформировать. По команде Структура выводится табличный документ с описанием реквизитов выбранного справочника.

Читайте также: