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

12000 руб.

02.09.2020    171591    960    403    

924

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

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

8400 руб.

20.08.2024    14184    107    46    

107

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

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

9360 руб.

17.05.2024    27210    96    48    

137

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

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

22200 руб.

06.10.2023    17231    43    15    

75

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

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

15000 руб.

10.11.2023    11870    45    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191126    1152    0    

920

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

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

3600 руб.

27.12.2024    1101    2    0    

5

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

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

5000 руб.

07.02.2018    104105    244    100    

307
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3969 28.12.12 14:43 Сейчас в теме
Хотя бы оригинально. +
2. DitriX 2102 29.12.12 14:16 Сейчас в теме
Прикольно, вот только бы еще конструктор был как в 1с :) и возможность сохранять ранее созданные запросы + окно авторизации... ммм....
3. MNevgeny 55 31.12.12 10:45 Сейчас в теме
Молодец автор, нестандартный подход. Я думаю его возьмут многие за основу получения оперативных данных прямо из браузеров. Ведь если подумать, текст запроса можно заранее зашить в модуль, а пользователям (директору) дать просто ссылочку по которой он увидит(находясь в отпуске...) приход финансовых средств. Ну или еще чего...
17. Азбука Морзе 107 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-сервиса не выполняется.
Оставьте свое сообщение