image_pdfimage_print

JQuery Mobile

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

Вы не понимаете почему так много говорят о мобильной разработке, мобильной версии сайтов. Все просто. Откройте данный сайт на своем телефоне. Да на этом маленьком экранчике. Или откройте один из приведенных сайтов на телефоне или планшете:

А теперь попробуйте это сделать с сайтами по тематике 1С:

Теперь Вам стало понятна разница между удобно и нельзя пользоваться. Можно много говорить о том, что это пока не для работы, что планшеты и телефоны это больше для развлечений. И забыть о том как на самом деле захватывали рынок персональные компьютеры. Мы этого делать не будем.

Мы посмотрим  на 1С-Битрикс ,которая идет усиленная работа над мобильной версией сайта.

 

И дадим ссылку на одну из популярных библиотек для этих целей:

JQueryMobile: http://jquerymobile.com

Видео

Новшества в v1.3 (русское описание)

http://ruseller.com/lessons.php?id=1650

И подождем появления 1С 8.3.5. Что она сможет нам показать в этом плане.

 

Идентификация Web сервисов 1С

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

1. Если на web сервере стоит Anonymous access

1.1 В базе нет пользователей — идеальный вариант для тестирования web-сервиса,  чтобы не заморачиваться…

 

1.2 Если хочется, чтобы вэб сервис работал под определенным пользователем 1С. Добавляем в файл default.vrd строку идентификации типа:

1.3  HTTP Basic идентификация: (http://en.wikipedia.org/wiki/Basic_access_authentication)

Если на превый запрос вы получаете окно идентификации, можете туда забить логин и пароль. У меня на Firefox c русскими пользователями это не работает. Делаем английского пользователя и все нормально коннектиться. Но все-таки интересно как это происходит — смотрим в Firefox Web-console:

Хорошо.что это стандартная идентификация. значит мы ее может использовать программно:

И добавляем в ajax запрос параметр Authorization. Преобразуем строку «sikudaws:123456» при помощи Base64:

Преобразовывать строки в Base64 b и назад можно здесь:

http://rumkin.com/tools/compression/base64.php

И получаем идентификацию сразу. УРА.

 

Это даже легче PОST идентификация тонкого клиента:
http://its.1c.ru/db/v83doc#content:16:1(Требуется доступ по ITS)

2. Идентификация средствами операционной системы в 1С к сожалению решается предыдущим способом. Требует введения имени и пароля пользователя Windows и не дает какого либо преимущества. Ее рассматривать не будем.

Ajax в 1C или переделываем универсальный отчет в 1С.

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

Одно время я долго работал в фирме оптовой торговли. На тот момент это была доработанная Управления торговлей 10.3. В частности много и долго дорабатывал отчеты, а в управлении торговлей 10.3 большинство отчетов сделана через так называемый универсальный отчет. Мощная штука, основанная на построителе отчетов. Сейчас он в последних версиях 1С оно преобразовался в СКД, но не в это суть. Основное в том, что он тесно связан с визуальными элементами самой 1С. ПостороительОтчеты.Вывести(ТабличныйДокумент) делает практически все за Вас. Остальное заключается в правильной настройке, установке параметров и прочем обвесе.

Это конечно замечательно, но покопаться внутри очень хочется. И поможет нам в этом то,  что в большинстве случаев универсальном отчетом пользуются с достаточно простыми отборами и группировками. Тогда появилась идея реализовать при таких простых условиях работоспособный отчет с выводом данных в стандартную HTML таблицу. Вот такая коза с бояном. И если Вас не смущает следующая картинка, то данная статья точно для Вас.

Внутри самой 1С такой отчет будет не интересен. Слишком урезанные возможности, плохая поддержка стилевого оформления CSS, возможности  ПолеHTML урезаны по сравнения с Табличным документом. Но мы сделаем для полноты картины. А вот снаружи из браузера, используя вэб-сервис этот отчет мог бы оказаться очень привлекательным. См. картинки:

Опишем работу этого отчета:

Используем виртуальную таблицу ОстаткиИОбороты по одному регистру. Динамически создаем текст запроса, по подобию как он сделан в универсальном отчете 1С. Что выводим в Представлениях. Поля это наши группировки по строкам и ресурсы. Для расчета ресурсов используем раздел запроса ИТОГИ. Отборы делаем в условиях виртуальной таблицы.

Так как посттроитель отсчета завязан на элементы вывода самой 1С, его придется вырезать. Мы многое по теряем, и практически получим новый отчет.

Пока не работает (о грусном):

  • Реквизиты полей выбираются толко на нулевом уровне.
  • Отбор простейшие, через реквизит Наименование.
  • Нет группировок колонок
  • Показать скрыть группировки строк, колонок +/-, расшифровок
  • Дополнительное оформление
  • Простейшая печать

Если у Вас еще не пропала охота все это попробовать, прошу:

Попробовать тест (готовиться).

Установить себе:

  1. Скачиваем архив. [wpdm_file id=9]
  2. В архиве файл sikudaUnireport.cf — надо добавить в вашу конфигурация УТ 10.(Там 1 вэбсервис и один отчет).
  3. Пользователь 1С под которым у Вас вэб сервис, должен иметь права на чтение к регистрам накопления и добавленному отчету.
  4. Публикуем вебсервис c адресом sikudaws (получается путь типа http://localhost/[Директория публикации])
  5. Положить index.html в папку sikuda на вебсервер (у меня IIS C:inetpubwwwrootsikuda )
  6. Заходим на http://localhost/sikuda и тестируем.

Главное чтобы база 1С и адрес захода в index.html были на одном сервере.

Обработки на инфостарте http://infostart.ru/public/180203

 

Р.S.

Если отработать такой универсальный отчет, то можно легко сделать блок отчетов основанных на новом универсальном отчете. И сделать довесок к конфигурации, который легко добавляется в любую базу УТ10. Вы спросите зачем все это УТ10, уже есть УТ11, выходит УТ11.1. А если у вас все отлажено в УТ10 и вы еще не готовы к переходу, просто даем дополнительную возможность остаться на отлаженной схеме.

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

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

Медитируя на тему почему нет нормальной «Консоли запросов в управляемом приложении» захотелось покопаться в этих внутренностях 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:inetpubwwwroot для MS IIS(Internet Information Server)

Вы не разбираетесь в Web программировании — не беда. Главное усвоить основы. Мы посылаем специально подготовленный post запрос в Web-сервер, он передает его 1С и возращает ответ. И нам в браузере необходимо обработать ответ сервера.

Запрос:

var soapEnv = ; soapEnv += »;

soapEnv += $(‘#textRequest’).val(); soapEnv += »;

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

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

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

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

Запросница 1С

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

 

P.S.

Ну очень грубо говоря так и работает 1С тонкий и web-клиент

Обработку можно скачать  с сайта Инфостарта http://infostart.ru/public/167093