helpf.pro
Регистрация
 +1 
Распечатать

1С 8.2 УП : Как получить результат запроса в web таблицу используя Web сервис?

Медитируя на тему почему нет нормальной “Консоли запросов в управляемом приложении” захотелось покопаться в этих внутренностях 1С.

Как ставить и настраивать вэб-сервис в 1С, я не буду расказывать. Вы это легко найдете.

Идея такая: почему бы нам не создать вэб-сервис, который на строку запроса 1С выдаст web таблицу(с тэгами…). Заморачиваться с XTDO не советую, капризный он. Выдаем ответ сервера в виде строки. Данные в таблице для простоты тоже сделаем текстовыми (html).

Сделаем конфигурацию в которой один вэб-сервис (Прикреплен к статье). И распишем функцию подробно,чтобы ее можно было подключить к любой конфигурации вручную.
Все парамеры в функции строковые
Request1C – текст запроса
TableData – html строка ответа.
Возвращаем истина или ложь;
Код 1C v 8.2 УП
 //Возврат результата запроса в web table

Функция Request1CWebTable(Request1C, ТableData)

Запрос = Новый Запрос;
ТableData = “”;
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
ТекстЗапроса = Сериализатор.ПрочитатьXDTO(Request1C);
Запрос.Текст = ТекстЗапроса;

//Результат – таблица значений
Попытка
ТабЗапроса = Запрос.Выполнить().Выгрузить();
Исключение
ЗаписьЖурналаРегистрации(“Request1C”,,,,Строка(Request1C) + ” !!! “+ОписаниеОшибки());
Возврат Ложь;
Конецпопытки;

//строка заголовка
ТableData = ““;
Для каждого колонка Из ТабЗапроса.Колонки Цикл
ТableData = ТableData + “”+ СокрЛП(колонка.Заголовок) + “”;
КонецЦикла;
ТableData = ТableData + “”;

//таблица данных
ТableData = ТableData + “”;
Для строка=0 По ТабЗапроса.Количество()-1 Цикл
ТableData = ТableData + “”;
Для кол=0 По ТабЗапроса.колонки.Количество()-1 Цикл
ТableData = ТableData + “”+ Строка(ТабЗапроса[строка][кол]) + “”;
КонецЦикла;
ТableData = ТableData + “”;
КонецЦикла;
ТableData = ТableData + “”;
ТабЗапроса = 0;
Возврат Истина;

КонецФункции


Публикуем web-сервис c именем testws. Для тестирования уберем из базы всех пользователей, включаем анонимную идентификацию и смотрим чтобы ресурс htp://localhost/testws/ws/testws?wsdl был доступен из браузера. Если показывает в браузере описание вэб-сервиса, значит все нормально.

Это все хорошо, но как все это показать? Сделаем страницу входа для обработки в вашем любимом Web-сервере. Или просто бросьте папку test1C в папку C:\inetpub\wwwroot для MS IIS(Internet Information Server)

Вы не разбираетесь в Web программировании – не беда. Главное усвоить основы. Мы посылаем специально подготовленный post запрос в Web-сервер, он передает его 1С и возращает ответ. И нам в браузере необходимо обработать ответ сервера.
title

Запрос:

Код
var soapEnv = ‘ ‘; soapEnv += ”;

soapEnv += $(‘#textRequest’).val(); soapEnv += ”;

#textRequest – поле нашего запроса.


Вырезаем из ответа сервера необходимое и преобразуем назад спец символы < и > на < и >.
title

Код
var strBegin = “< ; table id=’result_table’”;
var strEnd = “</m:TableData>”;
dataResponce = dataResponce.substring(dataResponce.indexOf(strBegin), dataResponce.indexOf(strEnd));
$(‘#result’).html(htmlspecialchars_decode(dataResponce));


Спасибо авторам библиотек jquery.com и tablesorter.com и их лицензиям(GPL, MIT) за их открытость. С помощью jquery не надо писать разный код под разные браузеры(они к сожалению различаются). А tablesorter используем для просоты вывода…

Заходим в браузер http://localhost/test1C и пишем запрос… Правильно написать запрос у меня не получается, я всегда копирую его из консоли запросов.

Нажимаем кнопку. И приходит к нам счастье.
title

Дополнительно скажу, что для слишком больших результатов запросов данная схема может не работать. У меня где-то начинала не выводить или выводить неправильно к 10000-100000 записям. Скорее всего ответ сервера посто не залезает в один пакет soap. А если отключить сжатие пакетов я думаю будет еще хуже. Так, что будьте осторожны.

Скачать обработку: Скачивать файлы может только зарегистрированный пользователь!

P.S.
Ну очень грубо говоря так и работает 1С тонкий и web-клиент
Автор: sikuda
Разместил:   Версии: | 8.2 УП |  Дата:   Прочитано: 6187
 +1 
Распечатать
Возможно, вас также заинтересует
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1С Предприятие что это? 6
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который...
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 0
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже...
Google maps : вывод точек на карту и режим панорамы 2
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С...
HTML5 Canvas в 1С 8.3 или Google нам поможет 0
Добрался я для написания маленьких тестов для 1С в плане web графики. Версии 1С 8.2.61 и 8.3.3.641. Зайдем на http://www.w3schools.com/html/html5_canvas.asp и перенесем примеры в обработку 1С. Скачать обработку: Результаты не радуют. 1С в Intern
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.