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

30.06.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Конфигурация с одним вэб-сервисом
.cf 12,57Kb
119
119 Скачать (1 SM) Купить за 1 850 руб.
Папка для web-сервера
.zip 60,20Kb
189
189 Скачать (1 SM) Купить за 1 850 руб.

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

Медитируя на тему почему нет нормальной "Консоли запросов в управляемом приложении" захотелось покопаться в этих внутренностях 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

 

См. также

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

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

15500 руб.

02.09.2020    180538    1001    403    

954

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    21822    146    82    

144

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

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

22200 руб.

06.10.2023    19494    50    19    

84

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

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

15000 руб.

10.11.2023    13224    54    33    

74

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

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

9360 руб.

17.05.2024    29654    101    48    

147

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18844    7    32    

43

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1980    2    0    

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

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

Вообще любое получение данных из интернета лучше минимизировать.
Посмотрите http://habrahabr.ru/post/145566/ и подумайте...
4. An-Aleksey 64 06.01.13 11:38 Сейчас в теме
Выглядит креативно, описано доступным языком. Что еще нужно для хорошей публикации? Однозначно + :)
5. sikuda 678 10.01.13 11:31 Сейчас в теме
2. Думаю в этом направлении, только пока слабое знание web программирования и большие трудозатраты останавливают...
6. help1Ckr 18.01.13 14:09 Сейчас в теме
Спасибо огромное. Если бы еще поделились ссылкой на литературу по веб для чайников по этой теме. А то есть идея прикрутить к корпоративному сайту страницу для клиентов с данными, но к сожалению в веб вообще не знаю(
7. sikuda 678 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 73 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 678 26.01.13 17:55 Сейчас в теме
11. Сам сначала подумывал выдавать JSON. Но он слишком привязывает тебя к тому куда выводишь типа datatable. А мне хотелось показать именно простой принцип, и tablesorter очень хорошо для этого подошел.

8. Да сейчас другие времена и mainstream ушел в javascript(привет Windows8).
13. sergeykuznecov 26.01.13 18:04 Сейчас в теме
А нельзя ли там же образом обращаться к методам и объектам конфигурации?
14. sikuda 678 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 678 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 678 02.04.13 09:28 Сейчас в теме
(21) Популизирую свой сайт www.sikuda.ru. Там все можно скачать за регистрацию.
20. sikuda 678 13.02.13 11:25 Сейчас в теме
Заходите на сайт sikuda.ru. Комментируйте статью.
23. crosby 280 14.08.13 13:31 Сейчас в теме
Не работает. Посылаю запрос. В журнале регистрации по "WS-соединение" только "Начало сеанса" и сразу "Завершение сеанса". Код в модуле web-сервиса не выполняется.
Оставьте свое сообщение