На практике очень часто возникает необходимость в осуществлении
переноса данных из одной программы в другую. Система 1С:Предприятие
предоставляет мощные механизмы для выполнения таких операций.
9.1.
Использование текстовых файлов для переноса данных
9.1.1.
Чтение текста
9.1.2. Запись текста
9.1.
Использование текстовых файлов для переноса данных
Для
работы с файлами в системе используется специальный агрегатный тип
данных – «ФС». По умолчанию в системе всегда доступен уже существующий
объект с именем «ФС», к которому можно применять методы объекта
типа «ФС». Кроме того, можно создать произвольное число объектов
типа «ФС» при помощи функции «СоздатьОбъект(«ФС»)».
У
объекта типа «ФС» имеются стандартные функции для работы с файлами:
«ВыбратьФайл()» – открывает диалог выбора файла, «ВыбратьКаталог()»–
открывает диалог выбора каталога, «СуществуетФайл()» – проверяет,
существует ли файл с указанным именем, «КопироватьФайл()», «УдалитьФайл()»,
«ПереименоватьФайл()» и др.
Для
работы с текстами в системе используется специальный тип данных
«Текст». Средства языка позволяют выводить строк в текстовые файлы
и считывать из имеющихся файлов текст с последующим разбором его
по строкам.
- Открыть(<ИмяФайла>)
– открывает файл.
- КодоваяСтраница(<Режим>)
– получить/установить режим кодировки. <Режим> = 0 – Windows-кодировка,
1 – DOS-кодировка
- Показать(<Заголовок>,<ИмяФайла>)
– открыть окно редактирования текста.
- Записать(<ИмяФайла>)
– записывает текст в файл.
9.1.1.
Чтение текста
- КоличествоСтрок()
– количество строк в тексте.
- ПолучитьСтроку(<НомерСтроки>)
– получить строку текста по номеру
Пример.
Из файла «exp_imp.txt» загружается справочник номенклатуры
Спр=СоздатьОбъект(«Справочник.Номенклатура»); Текст = СоздатьОбъект(«Текст»); Список = СоздатьОбъект(«СписокЗначений»); Текст.Открыть(«exp_imp.txt»);
Для Ном=1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(Ном); Список.ИзСтрокиСРазделителями(Стр); //преобразуем строку в список значений
Если Спр.НайтиПоКоду(Список.ПолучитьЗначение(1))=0 Тогда
Спр.Новый(); Спр.Код= Список.ПолучитьЗначение(1); Спр.Наименование= Список.ПолучитьЗначение(2); Спр.Записать(); КонецЕсли;
КонецЦикла;
9.1.2.
Запись текста
- ВставитьСтроку(<НомерСтроки>,<Строка>)
– вставить строку с указанным номером.
- ЗаменитьСтроку(<НомерСтроки>,<Строка>)
– заменить строку с указанным номером.
- УдалитьСтроку(<НомерСтроки>)
– удалить строку с указанным номером.
- ДобавитьСтроку(<Строка>)
– добавить строку в конец текста.
- Очистить()
–удалить все строки текста.
Пример.
В файл «exp_imp.txt» выгружается справочник номенклатуры
Текст = СоздатьОбъект(«Текст»); Список = СоздатьОбъект(«СписокЗначений»); Спр=СоздатьОбъект(«Справочник.Номенклатура»); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Список.ДобавитьЗначение(Спр.Код); Список.ДобавитьЗначение(Спр.Наименование); // и другие поля…
// выводим список в текст Текст.ДобавитьСтроку(Список.ВСтрокуСРазделителями()); Список.УдалитьВсе();// очищаем список КонецЦикла; Текст.Записать(«exp_imp.txt»);
9.2.
Работа с файлами в формате «DBF»
Для
работы с базами данных в формате «DBF» используется объект типа
«XBase». При этом надо учитывать следующие ограничения:
- Не
поддерживаются поля типа memo.
- База
данных открывается монопольно
-
Поддерживаются только индексные файлы в формате “CDX”
Доступ
к полям базы данных осуществляется через точку с именем поля.
Пример
БД=СоздатьОбъект(“XBase”); БД.ОткрытьФайл(«data.dbf»); Если БД.Открыта()=1 Тогда БД.Первая();//встаем на первую запись Пока 1=1 Цикл // Обработка записи базы данных Сообщить(Строка(БД.CODE) + « » + БД.Name); Если БД.Следующая()=0 Тогда // не удалось перейти к следующей записи Прервать; КонецЕсли; КонецЦикла; КонецЕсли;
9.3.
Обмен данными с помощью OLE Automation
Для запуска системы 1С:Предприятие
в качестве OLE Automation сервера из внешнего приложения (например,
из другой программы 1С), выполняется следующая последовательность
действий:
- Создается
объект с OLE идентификатором:
- V1СEnterprise.Application — версия независимый ключ;
- V77.Application — версия зависимый ключ;
- V77S.Application — версия зависимый ключ, SQL версия;
- V77L.Application — версия зависимый ключ, локальная версия;
- V77M.Application — версия зависимый ключ, сетевая версия.
- Выполняется
инициализация системы 1С:Предприятие методом Initialize.
- Вызываются
атрибуты и методы системы 1С:Предприятие как OLE Automation сервера
Пример.
Процедура Загрузить() Если ФС.Существуетфайл(Путь + "\NUL") = 0 Тогда Предупреждение("Путь информационной базы не найден!"); Иначе V7 = СоздатьОбъект("V77.Application"); Открыта = V7.Initialize(V7.RMTrade, "/d" + Путь +" /M /N" + Пользователь, ""); Если Открыта = 0 Тогда Предупреждение("Ошибка открытия информационной базы"); Возврат; КонецЕсли; Импорт = V7.CreateObject("Справочник.Контрагенты"); Импорт.ВыбратьЭлементы(); Пока Импорт.ПолучитьЭлемент() = 1 Цикл Если Импорт.ЭтоГруппа() = 0 Тогда Сообщить(Импорт.Наименование); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
|