d9e5a92d

Глава 12. Взаимодействие с другими системами

Система 1 С:Предприятие 8.0 имеет широкие возможности по интеграции с другими системами. Она содержит целый набор

средств и механизмов для взаимодействия и обмена данными.

К таким средствам относятся:

• Обмен данными через файлы. Это могут быть текстовые или dbf-файлы, а также XML-документы. Табличный документ 1С:Предприятия 8.0 может быть сохранен в формате Microsoft Excel™.

• Взаимодействие через СОМ-соединение для обеспечения быстрого и надежного программного доступа к 1С:Предприя-тию 8.0.

• Взаимодействие через механизм Automation, при котором 1С:Предприятие 8.0 может выступать в качестве клиента и сервера, т.е. как управляемое и как управляющее приложение.

• Поддержка интернет-технологий: работа с электронной почтой (e-mail), операции с файлами по протоколами HTTP, HTTPS, FTP.



• Технология внешних компонент, позволяющая подключать dll-библиотеки, разработанные специально для 1 С: Предприятия.

• Размещение в форме элементов управления ActiveX.

Все эти средства позволяют строить комплексные решения с участием 1 С: Предприятия 8.0.

Разработка в системе 1 С/Предприятие 8.0

Текстовые файлы

Объект «ТекстовыйДокумент»

Объект ТекстовыйДокумент предназначен для манипулирования строками текстового файла. Все строки в системе хранятся в кодировке UNICODE, но есть возможность записи и чтения текстов в других кодировках. С помощью методов Прочитать и Записать текстовый документ считывается из файла или записывается в файл.

При работе с текстовым документом можно манипулировать его строками, для чего предназначены следующие методы:

ДобавитьСтроку

Добавляет строку в конец текстового документа.

ЗаменитьСтроку

Заменяет строку с указанным номером на переданную.

ВставитьСтроку

Вставляет в текстовый документ строку с указанным номером.

Удалить Строку

Удаляет из текстового документа строку с указанным номером.

КоличествоСтрок

Получает количество строк в тексте.

ПолучитьСтроку

Получает строку текстового документа по номеру.

Следующий пример демонстрирует применение этих методов:

Текст = Новый ТекстовыйДокумент;

Текст . Прочитать (" catalog. txt " , КодировкаТекста .МЖ! ) ;

Текст.ЗаменитьСтроку(52, "Установка оборудования......" + Стоимость);

Текст.ВставитьСтроку(53, "Замена оборудования... "); Текст.УдалитьСтроку(10);

Текст.ДобавитьСтроку("Конец файла");

Для н = 1 По Текст.КоличествоСтрок() Цикл стр = Текст.ПолучитьСтроку(н);

сообщить(стр);

КонецЦикла;

Текст.Записать("catalog2.txt",КодировкаТекста-ANSI); Текст.ТолькоПросмотр = Истина;

Текст.Показать();

Можно прочитать весь текстовый документ в строковую переменную или, наоборот, в текстовый документ записать значение строковой переменной. Для этого предназначены методы ПолучитьТекст и УстановитьТекст. Текст, содержащийся в текстовом документе до исполнения метода УстановитьТекст, удаляется:

стр = ТекстДок.ПолучитьТекст О;

ТекстДок.УстановитьТекст) стр};

Метод Очистить позволяет полностью очистить текстовый документ (удалить все строки). С помощью метода Показать текстовый документ можно отобразить на экране. Если установить свойство ТолькоПросмотр в значение Истина, то пользователь не сможет изменить текстовый документ.

Последовательный доступ к тексту

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

Текст обычно хранится в кодировке UNICODE, но объекты ЧтениеТекста и ЗаписьТекста умеют работать и с другими кодировками.

Объект «ЗаписьТекста»

Объект ЗаписьТекста предназначен для последовательной записи текстовых файлов. Приведенный ниже фрагмент запишет небольшой текстовый файл:

Файл = Новый

ЗаписьТекста("с:\test.txt".КодировкаТекста-ANSI.Символы.ПС); г

Разработка в системе 1С:Предприятие 8.0

Файл.Записать("Строка!”);

Файл.ЗаписатьСтроку(”СтрокаЗ”);

Файл.Записать("СтрокаЗ");

Файл.Закрыть();

В результате работы программы получится следующий текстовый файл:

Строка1Строка2

СтрокаЗ

Объект «ЧтениеТекста»

Объект ЧтениеТекста предназначен для последовательного чтения текстовых файлов. Следующий фрагмент прочитает ранее записанный файл:

Файл = Новый

ЧтениеТекста ("c:\test. txt", КодировкаТекста-ANSI,Символы .ПС) ; Строка! = Файл.Прочитать(7);

Строка2 = Файл.ПрочитатьСтроку();

СтрокаЗ = Файл.Прочитать();

Файл.Закрыть();

XBase (работа с DBF-файлами)

Система 1С:Предприятие 8.0 позволяет создавать, читать и записывать DBF-файлы. Возможности по работе с DBF-файлами мало изменились по сравнению с версией 7.7, но немного изменилась техника работы с полями и индексами: теперь они создаются через соответствующие свойства-коллекции.

Запись DBF-файла

Следующий фрагмент программы создает DBF-файл с тремя полями и выгружает в него справочник Сотрудники:

ФайлВВР = Новый XBase;

ФайлВВР.Поля.Добавить("Name",”S”,100);

ФайлВВР.Поля.Добавить("Вер","S",5 0) ;

ФайлОВР.Поля.Добавить("Sum","N",10,2) ;

ФайлВВР.Кодировка = КодировкаХВаве.ОЕМ; //кодировка BOS ФайлВВР.СоздатьФайл("с:\staff.dbf");

Сотрудники = Справочники.Сотрудники.Выбрать();

Пока Сотрудники.Следующий() Цикл ФайлВВР.Добавить();

ФайлВВР.Шк^ = Сотрудники.Наименование;

ФайлВВР.Вер = Сотрудники.Подразделение;

ФайлВВР.Sum = Сотрудники.Оклад;

ФайлВВР.Записать();

КонецЦикла;

ФайлВВР.ЗакрытьФайл();

Чтение DBF-файла

Чтение DBF-файла производится еще проще:

ФайлВВР = Новый XBase;

ФайлВВР.ОткрытьФайл("с:\staff.dbf",.Истина); //только для чтения ФайлВВР.Первая();

Пока НЕ ФайлВВР.ВКонце() Цикл

НовСотр = Справочники.Сотрудники.СоздатьЭлемент(); НовСотр.Наименование = ФайлВВР.Name;

НовСотр.Подразделение = ФайлВВР.Вер;

НовСотр.Оклад = ФайлВВР.Sum;

НовСотр.Записать() ;

ФайлВВР.Следующая();

КонецЦикла,

ФайлВВР.ЗакрытьФайл();

Разработка в системе 1 С: Предприятие 8.0

Удаленные записи

Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом, размер файла остается прежним.

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

Индексы

Для упорядочивания содержимого DBF-файла и поиска в нем по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам.

Индексы хранятся в индексном файле, причем один индексный файл может содержать сразу несколько индексов. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы этого файла.

ХМ L-документы

Система 1 С:Предприятие 8.0 имеет средства для работы с XML-документами. Для их использования на компьютере должен быть установлен «Microsoft XML Core Services 4.0» или выше. Стоит отметить, что в 1C:Предприятии 8.0 возможна работа с XML-документами большого объема, так как реализуется принцип последовательного чтения и записи XML-документов.

Запись XML

Следующий фрагмент создает простой XML-документ и записывает его в файл. Иерархический отступ конструкций языка показывает вложенность XML-элементов друг в друга:

Файл = Новый ЗаписьХМЬ;

Файл.ОткрытьФайл(ПутьКФайлу);

Файл.ЗаписатьОбъявлениеХМЬ();

Файл.ЗаписатьНачалоЭлемента("goods”);

Файл.ЗаписатьНачалоЭлемента("good");

Файл.ЗаписатьНачалоЭлемента("name");

Файл.ЗаписатьТекст("Ботинки");

Файл.ЗаписатьКонецЭлемента(); Файл.ЗаписатьНачалоЭлемента("price");

Файл.ЗаписатьТекст(ХМЬСтрока(600)); Файл.ЗаписатьКонецЭлемента();

Файл.ЗаписатьКонецЭлемента() ;

Файл.ЗаписатьНачалоЭлемента("good");

Файл.3 аписатьНачалоЭлемента("name");

Файл.ЗаписатьТекст("Сапоги");

Файл.ЗаписатьКонецЭлемента(); Файл.ЗаписатьНачалоЭлемента("price");

Файл.ЗаписатьТекст(ХМЬСтрока(1000)) ; Файл.ЗаписатьКонецЭлемента();

Файл.ЗаписатьКонецЭлемента();

Файл.ЗаписатьКонецЭлемента() ;

В результате работы программы получился следующий XML-документ:

<?xml version="1.О"?>

<goods>

<good>

<пате>Ботинки</пате>

<рпсе>600</рпсе>

</good>

<good>

<пате>Сапоги</пате>

<price>1000</price>

</good>

Разработка в системе 1С:Предприятие 8.0

</goods>

Чтение XML

Чтение XML-документов производится через объект ЧтениеХМЬ с помощью метода Прочитать:

Чт = Новый ЧтениеХМЬ;

Чт.ОткрытьФайл(ПутьКФайлу);

Пока Чт.Прочитать() Цикл

Рез = "ТипУзла=" + Чт.ТипУзла;

Рез = Рез + " Имя='" + Чт.Имя;

Рез = Рез + "' ЛокальноеИмя='" + Чт.ЛокальноеИмя;

Рез = Рез + "' Префикс5'" + Чт.Префикс;

Рез = Рез + "' Значениел'" + Чт.Значение;

Рез = Рез + ..... ;

Сообщить(Рез) ;

КонецЦикла

Дополнительно система 1С:Предприятие 8.0 поддерживает преобразование с помощью XSL. Язык XSL или extensible Stylesheet Language — это язык описания стилей отображения для XML-документов. Он позволяет описать способ отображения документов для различных носителей, будь то окно веб-обозревателя или устройство печати. Данные в формате XML форматируются с помощью таблицы стилей в формате XSL, в результате создается отображение данных в соответствии с заданными стилями.

Полный список объектов, их свойств и методов для работы с XML-документами приведен в документации.

Интернет-технологии

Интернет-соединение

С помощью объекта ИнтернетСоединение можно устанавливать и разрывать соединение с провайдером через коммутируемые линии (модем). После установления соединения можно отправлять и принимать почту, обращаться к сайтам (веб-серверам) по протоколам HTTP/HTTPS и к FTP-серверам.

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

Поле HTML-документа

Элемент управления ПолеНТМЬДокумента позволяет отобразить HTML-страницу. Это могут быть как локальные страницы, так и страницы из Интернета:



У данного элемента управления есть метод Перейти, который позволяет указать адрес страницы (URL) или HTML-макет, хранящийся в конфигурации.

Следующий фрагмент демонстрирует, как можно указать адрес сайта (веб-сервера) для данного элемента управления:

Ц|ентыФормы.ПолеНТМЬДокумента.Перейти(,ЪUp://wwwЛc.ru,,);

Разработка в системе 1 С: Предприятие 8.0

Электронная почта (e-mail)

Для работы с электронной почтой в 1 (ЛПредприятии 8.0 существуют следующие объекты:

• Почта,

• ПочтовоеСообщение,

• ПочтовыйАдрес,

• ПочтовоеВложение.

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



Объект Почта имеет методы Выбрать и Послать. Первый метод возвращает массив объектов ПочтовоеСообщение, а второй метод принимает объект ПочтовоеСообщение в качестве параметра.

В объекте ПочтовоеСообщение поле Отправитель имеет тип ПочтовыйАдрес, а поля Получатели, Копии и СлепыеКопии являются коллекциями объектов ПочтовыйАдрес. Поле Вложения также является коллекцией объектов типа Почто-воеВложение.

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

Письмо = Новый ПочтовоеСообщение;

Письмо.Тема = "Тест";

Письмо.Текст = "Это тестовое письмо!";

Письмо.Получатели.Добавить(""); Письмо.Получатели.Добавить("");

Письмо.Вложения.Добавить("с:\test.txt");

Мелодия = Новый ДвоичныеДанные(”c:\opera.mp3”); Письмо.Вложения.Добавить(Мелодия,"Опера.трЗ");

Почта ~ Новый Почта;

Почта.Послать(Письмо)

Работа с FTP

Система 1 С: Предприятие 8.0 имеет средства для работы с файлами по протоколу FTP. Можно подключаться к FTP-серверам, скачивать и закачивать файлы, переименовывать их, обращаться к их свойствам, создавать каталоги и т.д.

Ниже показан простой пример, в котором устанавливается соединение с FTP-сервером, скачивается один файл, а на его место помещается другой:

FTP = Новый РТРСоединение ("ftp://ftp.mysite.ru",21,"login","password"); РТР.УстановитьТекущийКаталог("htdocs");

FTP.Получить("index.htm", " с:\old\index.htm");

FTP.Записать("с:\new\index.htm", "index.htm");

Разработка в системе 1 ^Предприятие 8.0

Работа с операционной системой

Система 1 С:Предприятие 8.0, как и версия 7.7, позволяет выполнять команды операционной системы через командный интерпретатор и запускать внешние приложения. Для этого предназначены процедуры ЗапуститьПриложение и КомандаСистемы:

ЗапуститьПриложение

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

КомандаСистемы

Вызывает на исполнение команду операционной системы, как если бы она была введена в командной строке. После загрузки приложения управление возвращается в 1С:Предприятие 8.0, и исполнение модуля продолжается.

СОМ-соединение

В новой версии 1С:Предприятия введен механизм СОМ-соединения для быстрого и надежного доступа к системе 1 ^Предприятие 8.0 из других программ.

Следующий фрагмент на языке VB.Net устанавливает СОМ-соединение с 1 С:Предприятием 8.0, создает массив из 6 элементов (индексация начинается с 0), а также получает значение системного перечисления:

//внимание! фрагмент на языке VB.Net Module Modulel Sub Main()

Dim cc As Object ’это будет Corn-connector

Dim con As Object

Dim o,o2 As Object

Dim e As Obj ect

Dim str As String

Try

cc = CreateObject("V8.COMConnector")

con = cc .Connect ("File = c :/lcv8/mdcom;Usr=r\naBHbiii")

о = con NewObjectC’Mac^B", 5)

o.Set (0 "Item 0")

o.Set (1 "Item 1")

o.Set(2 "Item 2") o.Set(3 "Item 3")

o.Set (4 "Item 4")

o.Set (5 "Item 5")

Dim c As Integer = o.Count()

For Each e In о

Console.WriteLine(e.ToString())

Next

o2 = con.ДопустимаяДлина.Переменная str = con.ValueStr(o2)

Dim s As String = str Catch ex As Exception

Console.WriteLine(ex)

End Try

con = Nothing cc = Nothing

System.GC.Collect()

End Sub End Module

Обратите внимание, что при таком варианте подключения к 1С:11редприятию 8.0 полностью отсутствует пользовательский интерфейс.

Важным моментом является то, что при установлении СОМ-соединения вместо модуля приложения используется модуль

Разработка в системе 1 С:Предприятие 8.0

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

Аутентификация пользователя при СОМ-соединении может производиться через параметры строки соединения или средствами Windows. В любом случае у пользователя должно быть право «Внешнее соединение» (см. роли).

Механизм Automation

Механизм Automation реализует обращение к 1 ^Предприятию 8.0 из внешних приложений, написанных на других языках, и обратный механизм, т.е. обращение к внешним приложениям из 1С:Предприятия 8.0.

Например, ниже показан фрагмент на языке Visual Basic, осуществляющий запуск клиентской сессии 1С:Предприятия 8.0 через Automation:

Dim v8 As Object

Set v8=CreateObj ect(”V8.Application”)

v8.Connect(”File=””c:\InfoBases\Trade””;Usr=”"Director””;”) v8.Visible = True

Таким же образом один экземпляр 1 С:Предприятия 8.0 может обращаться к другому через механизм Automation. Это позволяет организовать обмен данными между информационными базами и реализовать другие решения:

Процедура Загрузить ()

V8 = Новый C0M06beKT(”V8.Application”);

Попытка

Открыта = V8.Connect(”File=......+ Путь +.....’;

Usr=......+ Пользователь + ......; ”) ;

Исключение

Предупреждение ("Ошибка открытия информационной базы”); Возврат;

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

Импорт = V8.NewObЛect(”Справочник.Контрагенты”);

Импорт.Выбрать();

Пока Импорт.Следующий() Цикл

Если Не Импорт.ЭтоГруппа Тогда

Сообщить(Импорт.Наименование);

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Разработка в системе 1 ^Предприятие 8.0

Технология внешних компонент

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

Замечание. Внешние компоненты для версии 8.0 почти полностью совместимы с внешними компонентами для версии 7.7, поэтому никаких изменений в них делать не нужно, кроме компонент, открывающих окна внутри главного окна 1С:Предприя-тия — такая возможность теперь не поддерживается.

Приведенный ниже пример подключает внешнюю компоненту Math.dll', содержащую различные математические функции, и использует из нее генератор псевдослучайных чисел:

ЗагрузитьВнешнююКомпоненту(,,Math.dП,,);

МФ = Новый("Addln.Math");

//Для инициализации датчика случайных чисел используется процедура MO.SRAND(IOOO); //параметр может быть от 0 до 32767 Для н = 1 По 10 Цикл

Сообщить(МФ.RAND()); //случайное число в промежутке от 0 до 32767 КонецЦикла;

Разработчик внешней компоненты Math dll — внедренческий центр «Чип и Дейл» (Новосибирск)

Важные отличия от версии 7.7

• Функциональность внешней компоненты v7plus.dll включена в стандартную поставку в виде объектов для работы с электронной почтой (e-mail), с файлами по протоколам HTTP, HTTPS, FTP, XML-документами и др.

• Введен новый элемент управления «Поле HTML-документа».

• В форме могут располагаться элементы управления ActiveX.

• Введен механизм СОМ-соединения для быстрого и надежного доступа к системе 1 С:Предприятие 8.0 из других программ.

С.А. Митичкин

Разработка в системе 1C: Пред приятие 8.0

Подписано в печать 07.08.2003. Формат 60x90 Vie Бумага офсетная. Гарнитура «Петербург». Печать офсетная. Объем 25,81 п.л. Тираж 5 000 экз. Заказ Я-778 Издательство ООО «1С-Паблишинг»

123056 Москва, а/я 64, ул. Селезневская, 21

По вопросам приобретения книги обращайтесь в фирму «1C», к 1С:Франчайзи и в книжные магазины.

Фирма «1C»

123056 Москва, а/я 64, Селезневская ул., 21 Тел.: (095) 737-92-57, факс: (095) 281-44-07 e-mail: URL:. lc.ru

По вопросам оптовых закупок учебных и методических пособий по программным продуктам фирмы «1C» обращайтесь в ООО «1С-Паблишинг»: 123056 Москва, ул. Селезневская, 21 Тел.: (095) 281-02-21, факс: (095) 281-44-07 e-mail:

Отпечатано с оригиналов фирмы «1С-Паблишинг»

Казанский производственный комбинат программных средств 420 044 Казань, ул. Ямашева, 36

Разработка в системе 1 С:Предприятие 8.0

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

Ниже показана закладка «Движения», на которой задаются основные параметры проведения документа.

Основные Данные Нумерация л Движения

П оследоватеяьности

Журналы

Формы

Макеты

Подсистемы

Ввод на основании

Права

Интерфейсы

Прочее

Проведение

Оперативное проведение Удаление движении

Ра"р«илгтъ

Разрешить т

Удалять движения аетоматилски т

гистры накопления з УчетНоменклатуры i Продажи

$ СтоимостнойУчетНоменклатуры гистры бухгалтерии 5J Основной i Управленческий F ргистры расчета

ч! Конструктор движений Действий - <Назад Далее> Закрыть Справка

Самый первый параметр разрешает или запрещает проведение документа.

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

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



Содержание раздела