Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Пример использования средств интеграции в 1С:Предприятии 8          
Batchir Подменю пользователя
сообщение 09.02.09, 22:32
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Пример представляет собой простой WEB-сайт, использующий данные из информационной базы 1С:Предприятия, и демонстрирует использование средств интеграции 1С:Предприятия 8. Он позволяет получать информацию из справочников, определенных в информационной базе и исполнять запросы на языке запросов 1С:Предприятия. Пример демонстрирует использование следующих средств интеграции, реализованных в 1С:Предприятии 8:
  • внешнее соединение;
  • объект ЧтениеXML;
  • объект ЗаписьXML;
  • объект ПреобразованиеXSL.

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

Все файлы примера находятся в каталоге 1CITS\EXE\COM_DEMO. Вы можете скопировать файлы примера на свой компьютер.

Для запуска примера выполните следующие действия:
  • Выберите информационную базу для экспериментов.
  • Откройте в конфигураторе модуль внешнего соединения и вставьте в него текст из файла CONF\ComConnectionTxt.txt.
  • Поместите в каталог c:\demo\xsl файлы XSL-преобразований из каталога XSL.
  • Создайте каталог c:/demo/tmp.
  • Установите и настройте Internet Information Services. Создайте виртуальный каталог WEB-сайта и поместите в него файлы ASP-страниц из каталога WEB.
  • Задайте каталог информационной базы для экспериментов в качестве параметра установки COM-соединения в строке conn = entConn.connect("file=c:\demo\democonfig"); в файлах: WEB\refitem.asp, WEB\reflist.asp, WEB\refone.asp, WEB\request.asp. Если в информационной базе определены пользователи, то приведенная строка должна иметь вид: conn = entConn.connect("file=c:\demo\democonfig;usr=user;pwd=password"); где user и password - имя и пароль пользователя, который имеет право быть клиентом внешнего соединения.
  • Установите пользователю, от имени которого работает Internet Information Services (обычно IUSR_…), права на каталог информационной базы.

Сайт готов к работе. Его можно открыть в браузере Интернета.

Ниже перечислен полный список файлов представленного примера:
  • CONF\ComConnectionTxt.txt - фрагмент модуля внешнего соединения для обмена данными между WEB-страницами и информационной базы 1С:Предприятия в форматах XML и HTML.
  • WEB\default.asp - главная страница демонстрационного WEB-сайта.
  • WEB\refitem.asp - страница списка групп и элементов выбранного справочника.
  • WEB\reflist.asp - страница списка справочников информационной базы.
  • WEB\refone.asp - страница данных из выбранного элемента справочника.
  • WEB\request.asp - страница формирования запроса и отображения результата.
  • XSL\refitem.xsl - XSL-преобразование одного элемента справочника из формата XML в формат HTML.
  • XSL\reflist.xsl - XSL-преобразование списка справочников информационной базы из формата XML в формат HTML.
  • XSL\refone.xsl - XSL-преобразование списка групп и элементов выбранного справочника из формата XML в формат HTML.
  • XSL\request2.xsl - XSL-преобразование результата запроса к информационной базе из XML-формата в формат HTML.
  • XSL\request3.xsl - альтернативный вариант XSL-преобразования результата запроса к информационной базе из XML-формата в формат HTML.
О примере

Основным назначением данного примера является демонстрация использования внешнего соединения 1С:Предприятия из другой системы программирования. В качестве такой системы выбран язык JavaScript, встроенный в текст ASP страниц. Исполнение такой страницы происходит в следующем порядке:

Браузер клиента формирует HTTP запрос на определенную ASP страницу.

Получив HTTP запрос, интернет сервер интерпретирует запрошенную ASP страницу. При этом исполняются встроенные в нее скрипты на JavaScript.

Html текст страницы и выходные данные, сформированные в процессе исполнения скрипта, передаются клиентскому браузеру и отображаются на экране.

Интерес представляет процесс исполнения скрипта, использующего средства интеграции 1С:Предприятия. Остановимся на нем подробнее на примере страницы refone.asp, представляющей список групп и элементов выбранного справочника. Рассмотрим его исходный текст (он взят из файла WEB\refone.asp).

entConn = new ActiveXObject("v8.comconnector");
conn = entConn.connect("file=c:/demo/democonfig");
conn.КаталогXSLПреобразований = "c:/demo/xsl";
grVal = Request.QueryString("group");
if (grVal.Count == 0)
{
var empty;
Response.Write(conn.getRefOne( Request.QueryString("key")(1), empty));
}
else
Response.Write(conn.getRefOne( Request.QueryString("key")(1), grVal(1)));


Первая строчка создает внешнее соединения. Далее оно настраивается на определенную информационную базу при помощи строки соединения. Параметр file= в этой строке задает каталог, содержащий файловый вариант информационной базы. Далее выполняется установка значения глобальной переменной КаталогXSLПреобразований (имя каталога с файлами XSL-преобразований) модуля внешнего соединения. Далее выполняется анализ параметров http-запроса. Если нет параметра group, то это значит, что запрашиваются элементы и группы справочника верхнего уровня. Если же он есть, то запрашиваются группы и элементы, вложенные в заданную группу.

Основные операции по получению данных из информационной базы выполняет метод getRefOne модуля внешнего соединения. Вот текст этого метода (он взят из файла CONF\ComConnectionTxt.txt):



Функция getRefOne(НомерСправочника, СсылкаНаЗапись) Экспорт
СтрокаСоСсылкой = "{""#""," + СсылкаНаЗапись + "}";
МдСпр = Метаданные.Справочники[Число(НомерСправочника) - 1];
Спр = Справочники[МдСпр.Имя];
Если СсылкаНаЗапись = неопределено или СсылкаНаЗапись = "" Тогда
Выборка = Спр.выбрать(Спр.ПустаяСсылка());
Иначе
Выборка = Спр.выбрать(ЗначениеИзСтрокиВнутр(СтрокаСоСсылкой));
КонецЕсли;

РезультатXML = "";
Писатель = Новый XMLWriter;
Писатель.УстановитьСтроку();
Писатель.ЗаписатьОбъявлениеXML();
Писатель.ЗаписатьНачалоЭлемента("reference");
Писатель.ЗаписатьНачалоЭлемента("name");
Писатель.ЗаписатьТекст("" + МдСпр);
Писатель.ЗаписатьКонецЭлемента();
Писатель.ЗаписатьНачалоЭлемента("code");
Писатель.ЗаписатьТекст("" + НомерСправочника);
Писатель.ЗаписатьКонецЭлемента();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Писатель.ЗаписатьНачалоЭлемента("group");
Иначе
Писатель.ЗаписатьНачалоЭлемента("item");
КонецЕсли;
Писатель.ЗаписатьНачалоЭлемента("id");
СтрокаСоСсылкой = ЗначениеВСтрокуВнутр(Выборка.ссылка);
Писатель.ЗаписатьТекст(сред(СтрокаСоСсылкой, 6, СтрДлина(СтрокаСоСсылкой) - 6));
Писатель.ЗаписатьКонецЭлемента();
Писатель.ЗаписатьНачалоЭлемента("code");
Писатель.ЗаписатьТекст("" + Выборка.Код);
Писатель.ЗаписатьКонецЭлемента();
Писатель.ЗаписатьНачалоЭлемента("description");
Писатель.ЗаписатьТекст(Выборка.Наименование);
Писатель.ЗаписатьКонецЭлемента();
Писатель.ЗаписатьКонецЭлемента();
КонецЦикла;
Писатель.ЗаписатьКонецЭлемента();
РезультатXML = Писатель.Закрыть();

Трансформатор = Новый ПреобразованиеXSL;
Трансформатор.ЗагрузитьИзФайла(КаталогXSLПреобразований + "/refone.xsl");
РезультатHTML = Трансформатор.ПреобразоватьИзСтроки(РезультатXML);

Возврат РезультатHTML;
КонецФункции


У приведенной функции 2 параметра. Параметр НомерСправочника определяет справочник, из которого будут выбираться данные. Параметр СсылкаНаЗапись задает группу, элементы и вложенные группы которой необходимо получить. Если параметр СсылкаНаЗапись имеет значение неопределено, то выбираются элементы и группы верхнего уровня.

В начале этой функции выполняется выборка запрошенных данных из информационной базы. Далее выбранные данные преобразуются в XML-формат при помощи объекта XMLWriter. В результате полученные данные в XML-формате становятся значением строки РезультатXML. XML-формат является общепринятым для передачи данных сложной структуры, но он не содержит всей информации для отображения данных в Интернет-браузере.

Далее при помощи объекта ПреобразованиеXSL из полученных данных формируется html-файл. В его формировании участвует файл XSL\refone.xsl, который управляет процессом преобразования данных с использованием языка преобразования данных XSL. Полученные данные в формате html становятся значением строки РезультатHTML и возвращаются функцией в качестве значения. Остается только передать эти данные клиентскому браузеру, что и делается в ASP странице посредством строки

Response.Write(conn.getRefOne(Request.QueryString("key")(1), empty));

где значение метода getRefOne записывается в объект Response.

Аналогично работают и другие страницы. Полезно обратить внимание на приведенный ниже фрагмент ASP страницы WEB\request.asp, который является примером обработки ошибок в процессе исполнения метода внешнего соединения. Причиной ошибки может быть, например, неверно написанный запрос.

try
{
Response.Write(conn.getRequest(recTxt(1)));
}
catch (exc)
{
Response.Write("Ошибка в запросе. Исправьте и повторите еще.");
Response.Write("" + exc.description + "");
}


Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 1:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!