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

30.06.15

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

1023

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

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

8400 руб.

20.08.2024    35944    208    104    

197

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

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

16000 руб.

10.11.2023    16555    71    39    

89

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24105    63    27    

92

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

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

9360 руб.

17.05.2024    34834    124    53    

166

SALE! 30%

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

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1847    1    0    

8

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

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

6000 руб.

07.02.2018    107337    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3973 28.12.12 14:43 Сейчас в теме
Хотя бы оригинально. +
2. DitriX 2109 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 679 07.02.13 12:51 Сейчас в теме
(17) Не согласен. Доступ через вэб-сервис проходит такую-же систему идентификации 1С как и любой доступ к базе. Посмотрите на стандартные вэб-сервисы БП3, Стандартной библиотеки вы хотите сказать что они не так-же безопасны если их опубликовать?

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

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