Учебно-методические материалы для студентов кафедры АСОИУ

Учебные программы » Пакеты прикладных программ » Конспект лекций

Тема 3.8 Взаимодействие с внешними приложениями

На практике очень часто возникает необходимость в организации взаимодействия с внешним приложением из программы 1С. Пример - операции импорта или экспорта данных или внедрение одного документа в другой через технологию OLE-Automation. Система 1С:Предприятие предоставляет мощные механизмы для выполнения таких операций.

Использование текстовых файлов для переноса данных

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

У объекта типа «ФС» имеются стандартные функции для работы с файлами: «ВыбратьФайл()» – открывает диалог выбора файла, «ВыбратьКаталог()»– открывает диалог выбора каталога, «СуществуетФайл()» – проверяет, существует ли файл с указанным именем, «КопироватьФайл()», «УдалитьФайл()», «ПереименоватьФайл()» и др.

Для работы с текстами в системе используется специальный тип данных «Текст». Средства языка позволяют выводить строк в текстовые файлы и считывать из имеющихся файлов текст с последующим разбором его по строкам.

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

  • Открыть(<ИмяФайла>) – открывает файл.
  • КодоваяСтраница(<Режим>) – получить/установить режим кодировки. <Режим> = 0 – Windows-кодировка, 1 – DOS-кодировка
  • Показать(<Заголовок>,<ИмяФайла>) – открыть окно редактирования текста.
  • Записать(<ИмяФайла>) – записывает текст в файл.
  • КоличествоСтрок() – количество строк в тексте.
  • ПолучитьСтроку(<НомерСтроки>) – получить строку текста по номеру
Пример использования текстового файла в качестве источника данных приведен в листинге 38. Из файла «exp_imp.txt» загружается справочник номенклатуры

Листинг 38. Загрузка данных из текстового файла

Спр=СоздатьОбъект(«Справочник.Номенклатура»); Текст = СоздатьОбъект(«Текст»); Список = СоздатьОбъект(«СписокЗначений»); Текст.Открыть(«exp_imp.txt»); Для Ном=1 По Текст.КоличествоСтрок() Цикл 	Стр = Текст.ПолучитьСтроку(Ном); 	//преобразуем строку в список значений 	Список.ИзСтрокиСРазделителями(Стр); 	Если Спр.НайтиПоКоду(Список.ПолучитьЗначение(1))=0 Тогда 		Спр.Новый(); 		Спр.Код= Список.ПолучитьЗначение(1); 		Спр.Наименование= Список.ПолучитьЗначение(2); 		Спр.Записать(); 	КонецЕсли; КонецЦикла;

Для выполнения записи в файл используют такие свойства объекта “Текст”:

  • ВставитьСтроку(<НомерСтроки>,<Строка>) – вставить строку с указанным номером.
  • ЗаменитьСтроку(<НомерСтроки>,<Строка>) – заменить строку с указанным номером.
  • УдалитьСтроку(<НомерСтроки>) – удалить строку с указанным номером.
  • ДобавитьСтроку(<Строка>) – добавить строку в конец текста.
  • Очистить()–удалить все строки текста.


В листинге 39 приведен пример записи данных в текстовый файл.

Листинг 39. Выгрузка данных в текстовый файл

Текст = СоздатьОбъект(«Текст»); Список = СоздатьОбъект(«СписокЗначений»); Спр=СоздатьОбъект(«Справочник.Номенклатура»); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл 	Список.ДобавитьЗначение(Спр.Код); 	Список.ДобавитьЗначение(Спр.Наименование); 	... 	// выводим список в текст 	Текст.ДобавитьСтроку(Список.ВСтрокуСРазделителями()); 	Список.УдалитьВсе();// очищаем список КонецЦикла; Текст.Записать(«exp_imp.txt»);

Работа с файлами в формате «DBF»

В качестве основного формата локальных баз данных 1С использует xbase-овместимый формат .dbf (он используется также в СУБД Paradox, dBase и FoxPro). Для работы с этим форматом в 1С предназначен объект типа «XBase». При этом надо учитывать следующие ограничения:
  1. Не поддерживаются поля типа memo.
  2. База данных открывается монопольно
  3. Поддерживаются только индексные файлы в формате “CDX”
Доступ к полям базы данных осуществляется через точку с указанием именем поля.

Листинг 40. Работа с объектом XBase

БД=СоздатьОбъект(“XBase”); БД.ОткрытьФайл(«data.dbf»); Если БД.Открыта()=1 Тогда 	 БД.Первая();//встаем на первую запись 	 Пока 1=1 Цикл 		 // Обработка записи базы данных 		 Сообщить(Строка(БД.CODE) + « » + БД.Name); 		 Если БД.Следующая()=0 Тогда 				 // не удалось перейти к следующей записи 				 Прервать; 		 КонецЕсли; 	 КонецЦикла; КонецЕсли;

Обмен данными с помощью OLE Automation

Для запуска системы 1С:Предприятие в качестве сервера OLE Automation из внешнего приложения (например, из другой программы 1С), выполняется следующая последовательность действий:

  1. Создается объект с OLE идентификатором:
    • V1СEnterprise.Application — версия независимый ключ;
    • V77.Application — версия зависимый ключ;
    • V77S.Application — версия зависимый ключ, SQL версия;
    • V77L.Application — версия зависимый ключ, локальная версия;
    • V77M.Application — версия зависимый ключ, сетевая версия.
  1. Выполняется инициализация системы 1С:Предприятие методом Initialize.
  2. Вызываются атрибуты и методы системы 1С:Предприятие как OLE Automation сервера

В листинге 41 приведен пример организации взаимодействия между двумя программами 1С.

Листинг 41. Интеграция приложений

Процедура Загрузить() 	 Если ФС.Существуетфайл(Путь + " UL") = 0 Тогда 		Предупреждение("Путь информационной базы не найден!"); 	Иначе 		V7 = СоздатьОбъект("V77.Application"); 		 Открыта = V7.Initialize(V7.RMTrade, "/d" + Путь +" /M /N" + Пользователь, ""); 		 Если Открыта = 0 Тогда 				 Предупреждение("Ошибка открытия информационной базы"); 				 Возврат; 		 КонецЕсли; 		 Импорт = V7.CreateObject("Справочник.Контрагенты"); 		 Импорт.ВыбратьЭлементы(); 		 Пока Импорт.ПолучитьЭлемент() = 1 Цикл 				 Если Импорт.ЭтоГруппа() = 0 Тогда 						 Сообщить(Импорт.Наименование); 				 КонецЕсли; 		 КонецЦикла; 	 КонецЕсли; КонецПроцедуры

Анатольев А.Г., 18.09.2012

Постоянный адрес этой страницы:

↑ В начало страницы