Запросница 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

 

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159653    875    399    

862

SALE! 15%

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

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

8400 7140 руб.

20.08.2024    7860    58    23    

69

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

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

9360 руб.

17.05.2024    23490    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10460    36    25    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15426    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    188042    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

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

15000 12750 руб.

07.10.2021    17317    6    32    

42

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

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7716    8    35    

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

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

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

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