ИНТЕГРАЦИЯ

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

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

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

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

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

5.     Возможность размещения в экранных формах элементов управления ActiveX, написанных на других языках.

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

Часто в процессе деятельности предприятия, требуется использование Web-технологий. Например:

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

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

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

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

 

Обмен данными

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

К механизмам обмена данными могут быть отнесены:

*                        Планы обмена,

*                        XML-сериализация,

*                        Средства чтения и записи документов XML.

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

XML-сериализация позволяет преобразовать объект 1С:Предприятия в последовательность данных, представленных в формате XML. Кроме этого, XML-сериализация выполняет и обратное преобразование - преобразует последовательность данных формата XML в объект 1С:Предприятия, при условии, что имеется соответствующий тип 1С:Предприятия. Запись и чтение документов XML обеспечивают запись/чтение документов формата XML из встроенного языка. При реализации алгоритма обмена данными перечисленные механизмы могут быть использованы как все вместе, так и в различной комбинации. В каждом конкретном случае разработчик решает эту задачу самостоятельно. Для их использования на компьютере должен быть установлен "Microsoft XML Core Services 4.0" или выше.

Стоит отметить, что в 1C:Предприятии 8.0 возможна работа с XML-документами большого объема, так как реализуется принцип последовательного чтения и записи XML-документов.

Запись XML.

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

Файл = Новый ЗаписьХМL;
Файл.ОткрытьФайл(ПутьКФайлу);
Файл.ЗаписатьОбъявлениеХМL();
Файл.ЗаписатьНачалоЭлемента("goods");
Файл.ЗаписатьНачалоЭлемента("good");
Файл.ЗаписатьНачалоЭлемента("name");
Файл.ЗаписатьТекст("Ботинки");
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("price");
Файл.ЗаписатьТекст(ХМLСтрока(600));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("good");
Файл.3 аписатьНачалоЭлемента("name");
Файл.ЗаписатьТекст("Сапоги");
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("price");
Файл.ЗаписатьТекст(ХМLСтрока(1000)) ;
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();

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

<?xml version="1.0"?>

    <goods>
        <good>
            <name>
Ботинки
</name>
            <price>600</price>
        </good>
        <good>
            <name>
Сапоги
</name>
            <price>1000</price>
        </good>
    </goods>

Чтение XML

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

Чт = Новый ЧтениеХМL;
Чт.ОткрытьФайл(ПутьКФайлу);
Пока Чт.Прочитать() Цикл
&html;&html;&html;&html;Рез = "ТипУзла=" + Чт.ТипУзла;
&html;&html;&html;&html;Рез = Рез + " Имя='" + Чт.Имя;
&html;&html;&html;&html;Рез = Рез + "' ЛокальноеИмя='" + Чт.ЛокальноеИмя;
&html;&html;&html;&html;Рез = Рез + "' Префикс5'" + Чт.Префикс;
&html;&html;&html;&html;Рез = Рез + "' Значение'" + Чт.Значение;
&html;&html;&html;&html;Рез = Рез + "' " ;
&html;&html;&html;&html;Сообщить(Рез) ;
КонецЦикла

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

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

 

ActiveX

 

Технология ActivX построена на основе компонентов COM. ActivX - это технология, разработанная фирмой Microsoft с целью стандартизации программных компонент. Это системная технология, представляющая совокупность средств, с помощью которых объекты, разработанные различными разработчиками на разных языках программирования и работающие в разных средах могут взаимодействовать друг с другом без какой-либо модификации их исполняемых модулей.

Все ActivX-компоненты можно разделить на два типа

1.     визуальные (календарь, таймер, Microsoft Agent и прочие);

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

Преимущество использования технологии ActivX:

1.     быстрое написание программного кода;

2.     открытость и мобильность;

3.     озможность написания приложений с использованием любых средств разработки, выражающееся в том, что программные элементы ActivX могут использоваться в Visual Basik, Visual C++, Borland Delphi, 1С:Предприятие и прочие;

4.     большое количество уже существующих элементов ActivX;

5.     стандартность, выражающаяся в том, что технология ActivX основана на широко используемых стандартах Интернета (TCP/IP, HTML, Java), с одной стороны и стандартах, введенных в свое время Microsoft и необходимых для сохранения совместимости с СОМ и OLE, с другой.

ActivX-компонент Microsoft Windows Media Player позволяет проигрывать звуковые, видео-файлы, что было бы очень удобно для представления мультимедийной информации о товаре и поставщике.

Для работы Windows Media Player в системе "1С:Предприятие" необходимо:

1.     Для размещения ActivX-компоненты на форме в меню форма слудует выбрать пункт "Вставить ActivX". В появившемся списке выбрать Windows Media Player.

2.     Написать код, который бы передавал файл с мултимедийной информацией в ActivX-компонент.

Пример:

Попытка
    ЭлементыФормы.WMP.settings.autoStart = True;
    ЭлементыФормы.WMP.URL = ИмяФайла;
Исключение
    Предупреждение(ОписаниеОшибки(),10,"Ошибка");
КонецПопытки;

Элемент формы WMP как раз и является ActivX-компонентом.

 

DBF

 

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

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

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

ФайлВВР = Новый XBase;
ФайлВВР.Поля.Добавить("Name","S",100);
ФайлВВР.Поля.Добавить("Вер","S",5 0) ;
ФайлОВР.Поля.Добавить("Sum","N",10,2);
ФайлВВР.Кодировка = КодировкаХВаве.ОЕМ; //кодировка BOS
ФайлВВР.СоздатьФайл("с:\staff.dbf");
Сотрудники = Справочники.Сотрудники.Выбрать();
Пока Сотрудники.Следующий() Цикл
    ФайлВВР.Добавить();
    ФайлВВР.Name = Сотрудники.Наименование;
    ФайлВВР.Вер = Сотрудники.Подразделение;
    ФайлВВР.Sum = Сотрудники.Оклад;
    ФайлВВР.Записать();
КонецЦикла;
ФайлВВР.ЗакрытьФайл();

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

ФайлВВР = Новый XBase;
ФайлВВР.ОткрытьФайл("с:\staff.dbf",.Истина); //только для чтения
ФайлВВР.Первая();
Пока НЕ ФайлВВР.ВКонце() Цикл
    НовСотр = Справочники.Сотрудники.СоздатьЭлемент();
    НовСотр.Наименование = ФайлВВР.Name;
    НовСотр.Подразделение = ФайлВВР.Вер;
    НовСотр.Оклад = ФайлВВР.Sum;
    НовСотр.Записать() ;
    ФайлВВР.Следующая();
КонецЦикла,
ФайлВВР.ЗакрытьФайл();

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

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

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

Индексы.

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

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

 

 

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

 

В новой версии 1С:Предприятия введен механизм СОМ-соединения для быстрого и надежного доступа к системе 1C:Предприятие 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 Object
    Dim str As String
    Try
        cc = CreateObject("V8.COMConnector")
        con = cc .Connect ("File=c :/lcv8/mdcom;Usr=r\naBHbiii")
        
о
= con NewObject("Массив", 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
с
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С:Предприятию 8.0 полностью отсутствует пользовательский интерфейс.

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

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

 

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

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

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

 

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

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

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

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

ЭлементыФормы.ПолеНТМLДокумента.Перейти("http://www.1c.ru");

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

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

· Почта,

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

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

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

Полный список свойств и методов каждого объекта приведен в документации.

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

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

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

Письмо = Новый ПочтовоеСообщение;
Письмо.Тема = "Тест";
Письмо.Текст = "Это тестовое письмо!";
Письмо.Получатели.Добавить("myboss@company.ru");
Письмо.Получатели.Добавить("myfriend@company.ru");
Письмо.Вложения.Добавить("с:\test.txt");
Мелодия = Новый ДвоичныеДанные("с:\opera.mp3");
Письмо.Вложения.Добавить(Мелодия,"Опера.mр3");
Почта = Новый Почта;
Почта.Послать(Письмо)

Работа с FTP

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

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

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

 

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

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

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

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

ЗагрузитьВнешнююКомпоненту("Math.dll");
МФ = Новый("Addln.Math");
//Для инициализации датчика случайных чисел используется процедура
MO.SRAND(1000); //параметр может быть от 0 до 32767
Для н = 1 По 10 Цикл
    Сообщить(МФ.RAND()); //случайное число в промежутке от 0 до 32767
КонецЦикла;

 

Работа с файлами

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

Так же поддерживается работа с zip-архивами, при этом по составляющим архива можно пройтись циклом, представляющих собой коллекцию элементов. Поддерживается сжатие, шифрование, сравнение, поиск, перенос прочее.

 

Текстовый документ

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

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

Добавляет строку в конец текстового документа.
ЗаменитьСтроку
Заменяет строку с указанным номером на переданную.
ВставитьСтроку
Вставляет в текстовый документ строку с указанным номером.
Удалить Строку
Удаляет из текстового документа строку с указанным номером.
КоличествоСтрок
Получает количество строк в тексте.
ПолучитьСтроку
Получает строку текстового документа по номеру.

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

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать("catalog.txt", КодировкаТекста.МЖ!);
Текст.ЗаменитьСтроку(52, "Установка оборудования " + Стоимость);
Текст.ВставитьСтроку(53, "Замена оборудования... ");
Текст.УдалитьСтроку(10);
Текст.ДобавитьСтроку("Конец файла");
Для н = 1 По Текст.КоличествоСтрок() Цикл
    стр = Текст.ПолучитьСтроку(н);
    сообщить(стр);
КонецЦикла;
Текст.Записать("catalog2.txt",КодировкаТекста.ANSI);
Текст.ТолькоПросмотр = Истина;
Текст.Показать();

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

стр = ТекстДок.ПолучитьТекст(); ТекстДок.УстановитьТекст(стр);

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

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

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

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

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

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

Файл = Новый
ЗаписьТекста("с:\test.txt".КодировкаТекста.ANSI.Символы.ПС);
Файл.Записать("Строка1");
Файл.ЗаписатьСтроку("Строка2");
Файл.Записать("Строка3");
Файл.3акрыть();

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

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

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

 

Automation

 

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

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

СтрокаПодключения = "File=C:\Progra~1\1cv8\Db\Trade; Usr=Иванов";
    ЭлементыФормы.СтрокаПодключения.СписокВыбора.Добавить("File=<каталог БД>; Usr=<имя пользователя>; Pwd=<пароль>", "Файловый вариант");
    ЭлементыФормы.СтрокаПодключения.СписокВыбора.Добавить("Srvr=<имя сервера приложения>; Ref=<имя БД>; Usr=<имя пользователя>; Pwd=<пароль>", "Клиент-серверный вариант");
    Если ТипПодключения Тогда
        База = Новый COMОбъект("V8.Application");
        База.Connect(СтрокаПодключения);
    Иначе
        v8 = Новый COMОбъект("V8.COMConnector");
        База = v8.Connect(СтрокаПодключения);
    КонецЕсли;

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

Процедура Загрузить()
V8 = Новый СОМОбъект("V8.Application");
Попытка
    Открыта = V8.Connect("File= + Путь + ';
    Usr= + Пользователь + """; ") ;
Исключение
    Предупреждение ("Ошибка открытия информационной базы");
    Возврат;
КонецПопытки;
Импорт = V8.NewObject("Справочник.Контрагенты");
Импорт.Выбрать();
Пока Импорт.Следующий() Цикл
    Если Не Импорт.ЭтоГруппа Тогда
        Сообщить(Импорт);
    КонецЕсли;
КонецЦикла;
КонецПроцедуры