Экспорт и импорт из конфигурации 1С:Предприятие 8.1 Для перевода данных из одного формата в другой традиционно используется три самых популярных формата – TXT, XML и DBF. Текстовые файлы. Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста. Разница двух подходов состоит в способе загрузки документа – ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает его; ЗаписьТекста и ЧтениеТекста загружают файл построчно. Запись данных справочника в текстовый файл: Текст = Новый ТекстовыйДокумент; // перебор элементов справочника Выборка = Справочники.Клиенты.Выбрать(); Пока Выборка.Следующий() Цикл // выводим в файл код и наименование, разделенные // каким-либо разделителем, например, ‘;’ Текст.ДобавитьСтроку(””+Выборка.Код+”;”+Выборка.Наименование); КонецЦикла; // запись в текстовый файл Текст.Записать(”C://1.txt”); С помощью типа ЗаписьТекста этот код будет таким: // файл в формате Unicode Текст = Новый ЗаписьТекста(”C://1.txt”, КодировкаТекста.UTF8); // перебор элементов справочника Выборка = Справочники.Клиенты.Выбрать(); Пока Выборка.Следующий() Цикл // выводим в файл код и наименование, разделенные // каким-либо разделителем, например, ‘;’ Текст.ЗаписатьСтроку(””+Выборка.Код+”;”+Выборка.Наименование); КонецЦикла; // запись в текстовый файл Текст.Закрыть(); Чтение данных из текстового файла в справочник: Текст = Новый ТекстовыйДокумент; // открытие файла Текст.Прочитать(”C://1.txt”); // перебор строк текстового документа Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл // получить строку файла с указанным номером Стр = Текст.ПолучитьСтроку(НомерСтроки); // «распарсивание» строки // ищем позицию символа-разделителя Позиция = Найти (Стр, ‘;’); // создаем новый элемент справочника Спр=Справочники.Клиенты.СоздатьЭлемент(); // в код записывается подстрока от первого символа до позиции // символа-разделителя Спр.Код = Сред(Стр,1,Позиция-1); // за символом-резделителем – наименование клиента Спр.Наименование = Сред (Стр, Позиция+1); Спр.Записать(); КонецЦикла; С помощью типа ЗаписьТекста этот код будет таким: // файл в формате Unicode Текст = Новый ЧтениеТекста(”C://1.txt”, КодировкаТекста.UTF8); // перебор элементов справочника Стр=””; // пока строки в файле остались Пока Стр<>Неопределено Цикл // получить очередную строку файла Стр = Текст.ПрочитатьСтроку(); // «распарсивание» строки // ищем позицию символа-разделителя Позиция = Найти (Стр, ‘;’); // создаем новый элемент справочника Спр=Справочники.Клиенты.СоздатьЭлемент(); // в код записывается подстрока от первого символа до позиции // символа-разделителя Спр.Код = Число(Сред(Стр,1,Позиция-1)); // за символом-резделителем – наименование клиента Спр.Наименование = Сред (Стр, Позиция+1); Спр.Записать(); КонецЦикла; XML-файлы. В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML. Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.ОткрытьФайл(ПутьКФайлу); Запись.ЗаписатьОбъявлениеXML(); // формируем корневой элемент Запись.ЗаписатьНачалоЭлемента(”Клиенты”); Выборка = Справочники.Клиенты.Выбрать(); Пока Выборка.Следующий() Цикл // для каждого клиента формируем свой элемент Запись.ЗаписатьНачалоЭлемента(”Клиент”); // запишем код клиента в атрибут тега Запись.ЗаписатьАтрибут(”Код”, Строка(Выборка.Код)); // Наименование клиента запишем в текст элемента Запись.ЗаписатьТекст(Выборка.Наименование); // закрываем элемент клиента Запись.ЗаписатьКонецЭлемента(); КонецЦикла; // закрываем корневой элемент xml-документа Запись.ЗаписатьКонецЭлемента(); // закрыть файл Запись.Закрыть(); Чтение данных из XML-файла в справочник: Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьКФайлу); Спр=””; // чтение осуществляется по одному тегу Пока Чтение.Прочитать() Цикл // анализируем тип элемента и его имя Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если Чтение.Имя=”Клиент” Тогда // создаем новый элемент справочника Спр = Справочники.Клиенты.СоздатьЭлемент(); // читаем атрибуты Пока Чтение.ПрочитатьАтрибут() Цикл Если Чтение.Имя=”Код” Тогда Спр.Код = Число(Чтение.Значение); КонецЕсли; КонецЦикла; КонецЕсли; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда // заполняем наименование созданного ранее элемента Спр.Наименование = Чтение.Значение; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // требуется записать информацию про клиента Спр.Записать(); КонецЕсли; КонецЦикла; DBF-файлы. DBF-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Запись данных справочника в DBF-файл: БД = Новый XBase; // проектируется структура таблицы, т.е. имена и типы полей БД.Поля.Добавить(”Code”,”N”,6,0); // числовое поле Код БД.Поля.Добавить(”Name”,”S”,30); // строковое поле Наименование // создание файла с указанной структурой БД.СоздатьФайл(”C://1.dbf”); Выборка = Справочники.Клиенты.Выбрать(); Пока Выборка.Следующий() Цикл // создается новая пустая строка таблицы БД.Добавить(); // заполняем поля новой строки БД.Code = Выборка.Код; БД.Name = Выборка.Наименование; КонецЦикла; // зафиксировать изменения в файле БД.ЗакрытьФайл(); Чтение данных из DBF-файла в справочник: БД = Новый XBase; БД.ОткрытьФайл(”C://1.dbf”); // считываем файл построчно Пока БД.Следующая() Цикл // создаем новый элемент справочника Спр=Справочники.Клиенты.СоздатьЭлемент(); // переносим в реквизиты данные из текущей строки таблицы Спр.Код = БД.Сode; Спр.Наименование = БД.Name; Спр.Записать(); КонецЦикла; БД.ЗакрытьФайл();