Запросница 1С. Получить результат запроса в web таблицу.

30.06.15

Разработка - Инструментарий разработчика

Делаем Web Сервис который возвратит результат запроса в классическую Web таблицу. И немного ее разукрасим с помощью JQuery и tablesorter.

Скачать файлы

Наименование Файл Версия Размер
Конфигурация с одним вэб-сервисом
.cf 12,57Kb
118
.cf 12,57Kb 118 Скачать
Папка для web-сервера
.zip 60,20Kb
189
.zip 60,20Kb 189 Скачать

Доброго времени суток!

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

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

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

Сделаем конфигурацию в которой один вэб-сервис (Прикреплен к статье). И распишем функцию подробно,чтобы ее можно было подключить к любой конфигурации вручную. Все парамеры в функции строковые

Request1C - текст запроса

TableData - html строка ответа.

Возвращаем истина или ложь;

//Возврат результата запроса в 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С и возращает ответ. И нам в браузере необходимо обработать ответ сервера.

Запрос:

var soapEnv = ' ';   soapEnv += '';

soapEnv += $('#textRequest').val();   soapEnv += '';

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

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

  var strBegin = "&lt ; table id='result_table'";
  var
strEnd = "&lt/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  и пишем запрос... Правильно написать запрос у меня не получается, я всегда копирую его из консоли запросов.

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

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

 

Добавил на страницу index.html метрику Yandex для статистики использования. Если для Вас она критична по безопасности - удалите ее код со страницы.

 

Читатйте эту и другие статьи на www.sikuda.ru

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 руб.

02.09.2020    119959    656    389    

701

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7017    20    6    

37

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    3253    10    1    

31

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177355    1071    0    

846

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99207    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    17921    6    8    

38

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    27949    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23494    15    15    

31
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3958 28.12.12 14:43 Сейчас в теме
Хотя бы оригинально. +
2. DitriX 2091 29.12.12 14:16 Сейчас в теме
Прикольно, вот только бы еще конструктор был как в 1с :) и возможность сохранять ранее созданные запросы + окно авторизации... ммм....
3. MNevgeny 55 31.12.12 10:45 Сейчас в теме
Молодец автор, нестандартный подход. Я думаю его возьмут многие за основу получения оперативных данных прямо из браузеров. Ведь если подумать, текст запроса можно заранее зашить в модуль, а пользователям (директору) дать просто ссылочку по которой он увидит(находясь в отпуске...) приход финансовых средств. Ну или еще чего...
17. Азбука Морзе 104 07.02.13 12:21 Сейчас в теме
(3) andrej260276, Молодец автор, нестандартный подход. Я думаю его возьмут многие за основу получения оперативных данных прямо из браузеров.

Ага, особенно начинающие хакеры. Или, скажем, программист перед увольнением пропишет этот сервис в конфигурации и получит неограниченный доступ к оперативным данным своей бывшей конторы. В принципе обработчик этого запроса может не только получать данные, но и изменять их. А дураков и обиженных у нас много. Провокационная публикация.
18. sikuda 673 07.02.13 12:51 Сейчас в теме
(17) Не согласен. Доступ через вэб-сервис проходит такую-же систему идентификации 1С как и любой доступ к базе. Посмотрите на стандартные вэб-сервисы БП3, Стандартной библиотеки вы хотите сказать что они не так-же безопасны если их опубликовать?

Вообще любое получение данных из интернета лучше минимизировать.
Посмотрите http://habrahabr.ru/post/145566/ и подумайте...
4. An-Aleksey 64 06.01.13 11:38 Сейчас в теме
Выглядит креативно, описано доступным языком. Что еще нужно для хорошей публикации? Однозначно + :)
5. sikuda 673 10.01.13 11:31 Сейчас в теме
2. Думаю в этом направлении, только пока слабое знание web программирования и большие трудозатраты останавливают...
6. help1Ckr 18.01.13 14:09 Сейчас в теме
Спасибо огромное. Если бы еще поделились ссылкой на литературу по веб для чайников по этой теме. А то есть идея прикрутить к корпоративному сайту страницу для клиентов с данными, но к сожалению в веб вообще не знаю(
7. sikuda 673 18.01.13 15:35 Сейчас в теме
(6) Для совсем не представляющих что это такое - htmlbook.ru
А eb-services и в том числе 1С - лучше начать с основ http://w3schools.com/webservices/default.asp
help1Ckr; +1 Ответить
9. help1Ckr 18.01.13 17:01 Сейчас в теме
8. Yurkiss 18 18.01.13 16:36 Сейчас в теме
Писал почти тоже самое, только веб часть написана на Java для размещения на бесплатном хостинге Google App Engine, могу поделится если кому интересно.
DrAku1a; Il; +2 Ответить
24. silberRus 72 18.02.14 16:32 Сейчас в теме
(8) Yurkiss, мне интересно на явескрипт посмотреть (8)
10. Raminus 21.01.13 09:06 Сейчас в теме
Хорошая публикация, плюс однозначно!
11. Asmody 24.01.13 13:40 Сейчас в теме
к этому теперь добавить сериализатор JSON в 1С (где-то такой проскакивал), шаблонизатор jquery (тыщщи их) или вообще ExtJS (aka Sencha), и можно рисовать свой "web-клиент"
12. sikuda 673 26.01.13 17:55 Сейчас в теме
11. Сам сначала подумывал выдавать JSON. Но он слишком привязывает тебя к тому куда выводишь типа datatable. А мне хотелось показать именно простой принцип, и tablesorter очень хорошо для этого подошел.

8. Да сейчас другие времена и mainstream ушел в javascript(привет Windows8).
13. sergeykuznecov 26.01.13 18:04 Сейчас в теме
А нельзя ли там же образом обращаться к методам и объектам конфигурации?
14. sikuda 673 27.01.13 15:39 Сейчас в теме
(13) Да не документировано можно, но это не правильно. Вэб-сервисы и делались как единая точка получения данных из внешней системы типа 1С. Лучше делать обращение методам и функциям делать внутри вэб-сервиса.
15. ArtfulCrom 22 30.01.13 13:09 Сейчас в теме
Спасибо! Но вот все же про создание и примеры самих вэб-сервисов почитал бы.
Ссылка http://w3schools.com/webservices/default.asp которую вы привели Выше - достаточно что бы научиться создавать вэбС для 1С вообще и в САМОЙ 1С в частности? или еще, что то порекомендуете?
16. sikuda 673 31.01.13 09:51 Сейчас в теме
(15) ArtfulCrom,
У меня философия такая общие знания (http://w3schools.com) изучаются всеми. Технологии SOAP, XML Schemа.
Применение - конечный коммерческий продукт 1С, по вэб-сервисам (Книга 1С). Применение этих стандартов 1С - XDTO-пакеты (статья), Web-сервисы, WS-Ссылки.
Советую идти с головы.
ArtfulCrom; +1 Ответить
19. lalmir 13.02.13 11:03 Сейчас в теме
Скачал конфигурацию, а на файл "Папка для web-сервера" закончились $m. Скинте пожалуйста ее на ящик latypov-almir@mail.ru. Хочется поэксперементировать. Заранее спасибо.
21. w-divin 01.04.13 21:05 Сейчас в теме
+(19) не пойму в чем прикол выкладывать одну разработку 2мя частями...
manlak; crosby; +2 Ответить
22. sikuda 673 02.04.13 09:28 Сейчас в теме
(21) Популизирую свой сайт www.sikuda.ru. Там все можно скачать за регистрацию.
20. sikuda 673 13.02.13 11:25 Сейчас в теме
Заходите на сайт sikuda.ru. Комментируйте статью.
23. crosby 280 14.08.13 13:31 Сейчас в теме
Не работает. Посылаю запрос. В журнале регистрации по "WS-соединение" только "Начало сеанса" и сразу "Завершение сеанса". Код в модуле web-сервиса не выполняется.
Оставьте свое сообщение