Доступ к SOAP веб-сервисам 1С из JavaScript и Html

16.07.13

Интеграция - WEB-интеграция

Описанный метод позволяет обратиться к веб-сервисам 1С из html-страницы через JavaScript. В качестве примера выводится список справочников. При нажатии на любой справочник выводятся первые буквы наименований. При нажатии на букву выводятся данные с наименованиями, начинающимися на эту букву.

Скачать файлы

Наименование Файл Версия Размер
Пример веб-сайта
.zip 81,76Kb
37
.zip 81,76Kb 37 Скачать

Описанный метод позволяет обратиться к веб-сервисам 1С из html-страницы через JavaScript. В качестве примера выводится список справочников. При нажатии на любой справочник выводятся первые буквы наименований. При нажатии на букву выводятся данные с наименованиями, начинающимися на эту букву.

Способ применим для случаев, когда веб-сервис и html-страница опубликованы на одном сервере. В этом случае не возникает кросс-доменных проблем. Например, если домены будут отличаться, то Chrome выдаст ошибку:

Failed to load resource: Origin http://localhost:3299 is not allowed by Access-Control-Allow-Origin

Не вдаваясь в подробности публикации веб-сервисов, предположим, что на стороне 1С создан и опубликован веб-сервис catalogs с операцией Execute. На входе - параметр script типа string, на выходе тип string. Операция запускает на стороне произвольный код script из параметра и возвращает JSON-сериализацию от переменной result.

Функция ExecuteCommands(script)
    result = null;
    Execute(script);
    return JSON(result);
КонецФункции

С JSON-сериализацией удобно работать средствами JavaScript и преобразовать строку в объект/массив одной командой eval(resultText). В Интернете можно найти несколько JSON-сериализаторов для 1С.

Удостоверимся, что веб-сервис отвечает, введя его адрес:

Проект Html-файла лучше начать с готового шаблона, где прописаны стили на все случаи браузеров. Весьма достойный шаблон находится по адресу http://html5boilerplate.com/ В шаблон включен jQuery 1.9.1.

На форме сверху разместим элементы настройки веб-сервера: wsUrl - адрес веб-сервиса, wsUser - логин, wsPassword - пароль. На стороне веб-сервиса 1С включена basic autherization. Логин и пароль соответствуют пользователю, прописанному в 1С.

Левая панель отвечает за отображение доступных справочников catalogsList, правая - за отображение букв (letters) и данных (catalogRecords).

JavaScript

Функция обращения к SOAP веб-сервису определена следующим образом:

function executeSoap(script, successHandler) {
    var wsUrl = $("#wsUrl").val();

    var soapRequest =
        '<?xml version="1.0" encoding="utf-8"?>' +
        '<soapenv:Envelope ' +
            'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
            'xmlns:api="http://www.1cbit.ru/dominicana/soap-html-js" ' +
            'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
            'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">' +
            '<soapenv:Body>' +
                '<api:Execute soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
                    '<' + 'script xsi:type="xsd:string">' + script + '</' + 'script>' +
                '</api:Execute>' +
            '</soapenv:Body>' +
        '</soapenv:Envelope>';

    $.ajax({
        type: "POST",
        url: wsUrl,
        contentType: "text/xml",
        dataType: "xml",
        username: $("#wsUser").val(),
        password: $("#wsPassword").val(),
        data: soapRequest,
        success: successHandler,
        error: processError
    });
}

На входе в executeSoap подается скрипт 1С, который выполняется на стороне 1С, и обработчик для удачного исполнения. В случае ошибки вызовется обработчик processError, который выведет сообщение об ошибке.

Код 1С записан в html-коде через script-тэг. Получить текст каждого куска кода для выполнения можно через jQuery $("#enumerate1CCatalogs").text().

Получение списка наименований каталогов.

<script id="enumerate1CCatalogs" type="text/1c">
    result = Новый Массив();
    Для Каждого СправочникИзМетаданных Из Метаданные.Справочники Цикл
        структура = Новый Структура("name, synonym");
        структура.name = СправочникИзМетаданных.Имя;
        структура.synonym = СправочникИзМетаданных.Синоним;
        result.Добавить(структура);
    КонецЦикла;
</script>

Получение первых букв наименований справочника {catalog}

<script id="getFirstLetters" type="text/1c">
    запрос = Новый Запрос();
    запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Подстрока(Наименование, 0, 1) КАК letter ИЗ Справочник.{catalog} УПОРЯДОЧИТЬ ПО Подстрока(Наименование, 0, 1)";
    result = запрос.Выполнить().Выгрузить();
</script>

Получение данных для каталога {catalog}, где первая буква входит в условие {condition}.

<script id="getCatalogData" type="text/1c">
    запрос = Новый Запрос();
    запрос.Текст = "ВЫБРАТЬ Ссылка as ref, Наименование as name ИЗ Справочник.{catalog} ГДЕ Подстрока(Наименование, 0, 1) В ({condition})";
    result = запрос.Выполнить().Выгрузить();
</script>

При нажатии на кнопку Обновить происходит вызов функции

executeSoap($("#enumerate1CCatalogs").text(), processSuccess);

и при успешном выполнении вызывается обработчик processSuccess

function processSuccess(data, status, req) {

    var resultText = $(req.responseText).find("m\\:return").html();
    result = eval(resultText);

    $("#catalogRecords").empty();

    catalogsList = $("#catalogsList");
    catalogsList.empty();

    $(result).each(function (index, item) {
        var li = '<li catalog="' + item.name + '">' + item.synonym + '</li>';
        catalogsList.append(
            $(li).addClass("catalogTitle")
        );
    });
}

 

Веб-сервис возвращает xml, где значимым является содержимое m:return-тэга - JSON-сериализация. Перевести его в объекты JavaScript можно через eval-вызов. Обработчик очищает перечень справочников и заново его формирует через li-тэги с атрибутом catalog. Каждому элементу устанавливается класс catalogTitle.

Веб-сервис возвращает xml, где значимым является содержимое m:return-тэга - JSON-сериализация. Перевести его в объекты JavaScript можно через eval-вызов. Обработчик очищает перечень справочников и заново его формирует через li-тэги с атрибутом catalog. Каждому элементу устанавливается класс catalogTitle.

Аналогично обрабатываются нажатия на все управляющие элементы. Нажатие на справочник очищает буквы и данные, перезаполняет буквы. Нажатие на букву перезаполняет данные из справочника. За обработку кода на 1С отвечают куски кода в script-блоках с типом "text/1c".

Приложение выглядит так:

Нерешенная проблема авторизации на браузере IE

Существует проблема авторизации на IE. На IE 8/9 не удалось решить проблему basic authorization аналогичным для остальных браузеров методом.

На IE Ajax не работает с использованием user/password - свойств $.ajax. На FF и Chrome все работает нормально. По какой-то причине на сервер в случае с IE не передается заголовок

Authorization: Basic 0JHQsNGF0YjQuNC10LLQn9CYICjRgNGD0LrQvtCy0L7QtNC40YLQtdC70YwpOg==

Если кто-нибудь знает причину и как обойти, пожалуйста, напишите в комментариях.

Выводы

Предложенный подход на основе SOAP имеет право на существование для несложных задач, так как сопровождается достаточно большим числом JavaScript кода. Возможно, в будущем удастся создать JavaScript фреймворк для упрощения процесса создания приложений.

Разработчики в этом способе самостоятельно отвечают за безопасность. Необходимо проверять входные параметры при записи, не позволять запуск произвольных скриптов, переданных с клиента. В статье выполнение произвольного кода показано только для примера. Унифицировать можно выполнение произвольного запроса, но это связано с опасностью SQL-инъекций.

Внешние компоненты Native API от 1С не будут работать в данной среде. Это значит, что нужно дополнительно решать проблему с написанием драйверов для оборудования.

// //

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15745    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

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

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17548    6    15    

13

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16358    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25737    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88579    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Asmody 16.07.13 10:44 Сейчас в теме
часть кода после
var soapRequest =
парсер пожрал?
3. Elisy 948 16.07.13 11:24 Сейчас в теме
(1) Asmody,
парсер пожрал?

Да, парсер. В каждой статье что-нибудь съедает. Как побороть не придумал еще.
function executeSoap(script, successHandler) {
    var wsUrl = $("#wsUrl").val();

    var soapRequest =
    '<?xml version="1.0" encoding="utf-8"?>' +
    '<soapenv:Envelope ' +
    'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' +
    'xmlns:api="http://www.1cbit.ru/dominicana/soap-html-js" ' +
    'xmlns:xsd="http://www.w3.org/2001/XMLSchema" ' +
    'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">' +
    '<soapenv:Body>' +
    '<api:Execute soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">' +
    '<' + 'script xsi:type="xsd:string">' + script + '</' + 'script>' + 
    '</api:Execute>' +
    '</soapenv:Body>' +
    '</soapenv:Envelope>';

    $.ajax({
    type: "POST",
    url: wsUrl,
    contentType: "text/xml",
    dataType: "xml",
    username: $("#wsUser").val(),
    password: $("#wsPassword").val(),
    data: soapRequest,
    success: successHandler,
    error: processError
    });
}
Показать
6. kuntashov 449 16.07.13 17:44 Сейчас в теме
(3)

Как побороть не придумал еще.


В статью вставляйте картинкой, а для тех, кому нужен исходник - давайте ссылку на сниппет, который можно разместить либо на http://gist.github.com либо на http://pastebin.com
2. detro 46 16.07.13 11:03 Сейчас в теме
Есть ли оценки производительности 1С при выдаче результатов по SOAP, какая возможная интенсивность работы ?
4. sikuda 673 16.07.13 12:06 Сейчас в теме
username: ,
password: , в IE не работают на русском(Пришлось делать пользователей на английском). Причина и решение самому интересна.
8. Elisy 948 17.07.13 11:27 Сейчас в теме
(4) sikuda,
username: ,
password: , в IE не работают на русском(Пришлось делать пользователей на английском). Причина и решение самому интересна.

Спасибо. Интересная версия. Хотя бы намек появился на причину. На другом ресурсе
http://www.richmedia.us/post/2013/06/25/soap-1c-jscript-html.aspx
в комментарии предложили переписать Authorization-заголовок
5. AllexSoft 16.07.13 12:14 Сейчас в теме
По моему опыту все гораздо веселее работает на PHP5... не люблю я JS ( за статью плюс!
7. Johny_v 140 17.07.13 08:36 Сейчас в теме
Если кто-нибудь знает причину и как обойти, пожалуйста, напишите в комментариях.

Сделай простенький модуль на PHP, который будет обращаться к веб-сервису 1С и возвращать XML или JSON.
AJAX-ом будешь обращаться к этому модулю. Тогда не должно быть проблем с авторизацией.
Был где-то пример. Могу поискать, если надо.
pallid; Elisy; vasiliy_b; +3 Ответить
11. Elisy 948 18.07.13 10:17 Сейчас в теме
(7) Johny_v,
Сделай простенький модуль на PHP, который будет обращаться к веб-сервису 1С и возвращать XML или JSON.
AJAX-ом будешь обращаться к этому модулю. Тогда не должно быть проблем с авторизацией.
Был где-то пример. Могу поискать, если надо.

Хотелось бы обойтись без посредников. Модуль PHP тянет за собой PHP и настройку сервера. В сложных задачах, вероятно, не удастся обойтись без Asp.Net/PHP, а на простых, думаю, можно обойтись средствами клиента.
9. opx 794 17.07.13 13:55 Сейчас в теме
Soap это такой же http запрос, переданный в виде xml и полученный ответ тоже в xml.
По мне удобнее работать с soap запросами через xmlhttp = Новый COMОбъект("Msxml2.XMLHTTP");
Кстати и с авторизацией можно попробовать через xmlhttp.setRequestHeader("Authorization","Basic dXNlcm5hbWU6cGFzc3dvcmQ=");
10. Трактор 1246 17.07.13 14:13 Сейчас в теме
Параметры авторизации можно прописать в файле default.vrd, в строке с путём к информационнойй базе ib. Работает не на всех релизах 1С, но на последних должно работать. Так мы получим анонимный сервис.
14. Elisy 948 18.07.13 14:34 Сейчас в теме
(10) Трактор,
Параметры авторизации можно прописать в файле default.vrd, в строке с путём к информационнойй базе ib. Работает не на всех релизах 1С, но на последних должно работать. Так мы получим анонимный сервис.

Новость вызывает двоякое чувство. С одной стороны - это гибкость. Но с другой стороны 1С и сетевая безопасность - вещи несовместимые. Применение оправдано без выхода в публичную сеть.
12. sashocq 193 18.07.13 11:01 Сейчас в теме
У меня одного возникают сомнения в практической ценности данного материала?
19. Elisy 948 19.07.13 06:20 Сейчас в теме
(12) sashocq,
У меня одного возникают сомнения в практической ценности данного материала?

Мы на определенном этапе столкнулись с ограничениями управляемых форм. Ведут они себя непредсказуемо, занимают много лишнего места. Адекватная замена - это html. Именно поэтому html было уделено много внимания. Подходы использования html могут быть различными: встраивание html в УФ на стороне 1С, встраивание веб-клиента 1С в свой Frame и создание своих страниц с доступом по soap. Все эти варианты были рассмотрены в предыдущих и этой публикациях. Насколько применимы, судить нужно в каждом конкретном случае.
24. zqzq 23 19.07.13 16:16 Сейчас в теме
(19)
Мы на определенном этапе столкнулись с ограничениями управляемых форм. Ведут они себя непредсказуемо, занимают много лишнего места. Адекватная замена - это html.

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

Управляемые формы "из коробки" очень много функционала реализуют при минимальных усилиях разработчика.
25. obemgyorik 99 19.07.13 18:00 Сейчас в теме
(24) Странные у вас выводы :)
Наоборот, собравшиеся люди много работали с управляемыми формами, поэтому прекрасно знакомы с их ограничениями - статью здесь писать не о чем, любой профессиональный разработчик, проработавший с упр. формами более 2х месяцев прекрасно знает все эти ограничения. И то что "управляемые" формы во многих аспектах фактически не управляемы также неоспоримый факт (размеры формы и элементов, цвет фона, расстояние между элементами, шрифты заголовков, управление стандартными панелями навигации, отсутствие многих элементов управления и прочее, и прочее...)

Во многом (но далеко не всегда) эти ограничения обоснованы тем, что
управляемые формы "из коробки" очень много функционала реализуют при минимальных усилиях разработчика.

Но позиция нашей команды - это бережное отношение к пользователю и уделение большого внимания к интерфейсу и юзабилити, и здесь решений "из коробки" часто не хватает.
mdSerg; Elisy; +2 Ответить
31. Elisy 948 22.07.13 13:36 Сейчас в теме
(24) zqzq,
Такое впечатление, что у вас там веб-программисты собрались, неосилившие управляемые формы. Пока что недоказанное утверждение, попробуйте статью на эту тему написать с примерами и посмотрите на реакцию сообщества.
Управляемые формы "из коробки" очень много функционала реализуют при минимальных усилиях разработчика.

Наконец-то появился человек, который разъяснит нам во многих местах странное поведение УФ и откровенные баги Такси, а то на форуме 1С не торопятся комментировать.
Много функционала УФ - это заявление маркетологов, потому что набор из Группа-Поле-Таблица-Декорация в нормальных фрейморках за функционал не считается. Попробуйте на досуге поиграться с шириной бордюра, поуправлять отображением, растянуть кнопку на всю ширину формы, убрать сплиттер между таблицами. Может, вы подскажете, как подсказку генерить динамически и отображать разную для каждой строки таблицы? А вы в курсе были, что в динамических списках бестолку использовать ПЕРВЫЕ N - конструкцию, потому что динамический список настолько высокоинтеллектуальный, что в расчет ее не берет.
52. mdSerg 19.02.16 04:05 Сейчас в теме
(24) zqzq, (24) zqzq, Поставил бы минус на Ваше высказывание. А автор молодец.
13. AllexSoft 18.07.13 11:39 Сейчас в теме
Elisy, просьба, ну то же самое только с прицелом на PHP, было бы гораздо полезнее... почему имено JS ?
22. Elisy 948 19.07.13 12:33 Сейчас в теме
(13) AllexSoft,
Elisy, просьба, ну то же самое только с прицелом на PHP, было бы гораздо полезнее... почему имено JS ?

Я работал в рамках поставленной задачи. Здесь делюсь результатами исследований. PHP не входил в поставленную задачу. Да и статьи на тему PHP + 1C были: в (18) пример одной из них.
Лично я не сторонник веб-сервисов вообще, а сторонник альтернативного подхода, где работа ведется по веб-протоколу 1С. Связано это с тем, что веб-сервисы пока не доступны в облаках, а их реализация не является универсальной.
15. Johny_v 140 18.07.13 14:35 Сейчас в теме
В случае использования связки PHP + JS вы получите более безопасный метод обращения к веб-сервису.
Пользователь вообще не сможет узнать что используется веб-сервис 1С, тем более адреса сервера и данные авторизации.
17. AllexSoft 18.07.13 20:14 Сейчас в теме
(15) Johny_v, (16) badboychik, помоему автор игнорирует все вопросы о Web-сервисы + PHP ((
20. Johny_v 140 19.07.13 08:23 Сейчас в теме
(17) AllexSoft,
Нет, он вроде объяснил что хочется обойтись без PHP. Может в его случае это как-то оправданно.
21. AllexSoft 19.07.13 10:31 Сейчас в теме
(20) Johny_v, ну если это считать объяснением...

В сложных задачах, вероятно, не удастся обойтись без Asp.Net/PHP, а на простых, думаю, можно обойтись средствами клиента


Хм, а проект расчитан для ларьков? Насколько я понял подобная модульная система (с веб мордой) будет охватывать всю деятельность предприятия, тогда зачем говорить о простых задачах и наивно полагать что хватит JS ?)
28. Elisy 948 19.07.13 20:28 Сейчас в теме
(21) AllexSoft,
Хм, а проект расчитан для ларьков? Насколько я понял подобная модульная система (с веб мордой) будет охватывать всю деятельность предприятия, тогда зачем говорить о простых задачах и наивно полагать что хватит JS ?)

Вы что-то совсем ниже плинтуса опустили JS. JS + HTML5 + jQuery(UI) даст фору управляемым формам, потому что формат открытый, стандартизованный и поддерживаемый во всем мире. Там уж точно нет багов, которых уже насчитали штук 10 в новом Такси. Контролов раз в 100 больше от разных производителей и они гибкие и настраиваемые под любые задачи. Не то, что набор из Поле-Таблица-Декорация. 1С пошла по пути Microsoft, которая выпустила лет 10 назад XAML и ее реализацию для web XBAP (до нее WebForms). Потом одумались XAML оставили для десктопа, а для веба создали Asp.Net MVC + jQuery.
27. Elisy 948 19.07.13 20:08 Сейчас в теме
(17) AllexSoft,
(15) Johny_v, (16) badboychik, помоему автор игнорирует все вопросы о Web-сервисы + PHP ((

Стараюсь отвечать на вопросы по мере возможности. Но про PHP мне нечего сказать. Во-первых к данной теме не относится, а во вторых - я разбираюсь в Asp.Net, а не в PHP. По PHP вам лучше найти кого-то другого.
16. s_vidyakin 63 18.07.13 18:43 Сейчас в теме
когда я работал с веб-сервисами 1С из РНР, возникла проблема преобразования сложных вложенных структур XDTO в объекты РНР. Может в эту сторону подумать?
18. Трактор 1246 18.07.13 22:28 Сейчас в теме
(16) (17) В качестве примера можно 1С+php рассматривать эту разработку http://infostart.ru/public/59207/ Если сподоблюсь сделаю пример попроще.
26. Elisy 948 19.07.13 20:01 Сейчас в теме
(16) badboychik,
когда я работал с веб-сервисами 1С из РНР, возникла проблема преобразования сложных вложенных структур XDTO в объекты РНР. Может в эту сторону подумать?

Я перспективней вижу технологию 1С Business Connector. После Проекта Доминикана вернусь к той теме.
23. AllexSoft 19.07.13 12:49 Сейчас в теме
веб-сервисы пока не доступны в облаках

хм, мне казалось этои была попытка 1С сделать что нибудь облачное (в истинном смысле, когда данные хранятся у клиента, а обработка происходит на облачном сервисе), а не веб-морду к базе данных с разделителями учета (как сейчас есть на 1с фрэш)

ПС: а в чем их не универсальность в данной реализации ?
29. Elisy 948 19.07.13 20:34 Сейчас в теме
(23) AllexSoft,
ПС: а в чем их не универсальность в данной реализации ?

Не совсем понял, в какой реализации?
30. AllexSoft 22.07.13 09:44 Сейчас в теме
(29)
Связано это с тем, что веб-сервисы пока не доступны в облаках, а их реализация не является универсальной.


Вот я про это, в чем не универсальность веб сервисов платформы?
33. Elisy 948 23.07.13 14:42 Сейчас в теме
(30)(32)
Извиняюсь за задержку. Неуниверсальность относится к вопросу №4 публикации 1С в SaaS:
http://www.forum.mista.ru/topic.php?id=645570
http://habrahabr.ru/qa/31297/
Судя по ответам, на тот момент не было возможности пользоваться веб-сервисами на популярных 1С SaaS-площадках.

Можно еще почитать комментарии (начиная с 9го) к
http://forum.infostart.ru/forum24/topic75705/
"Веб-сервисы более прогрессивны, но и у них есть свои особенности работы и сложности (настройка, преобразование типов, сложность стандарта, несовместимость). "
34. AllexSoft 23.07.13 21:17 Сейчас в теме
(33) по поводу 1cfresh это проблема конкретной реализации конфигураций, а не платформы... я всетаки говорил про сам обмен через SOAP web-сервисы
за вторую ссылку спасибо, почитал... согласен про преобразование типов, но никуда не денешься от этого, тут проблемы платформеных типов значений которая она использует
35. Elisy 948 23.07.13 21:33 Сейчас в теме
(34) AllexSoft,
Elisy, по поводу 1cfresh это проблема конкретной реализации конфигураций, а не платформы... я всетаки говорил про сам обмен через SOAP web-сервисы

Меня очень интересует вопрос - есть ли системные проблемы у веб-сервисов на SaaS-серверах 1С, работающих на базах с разделением данных. Не встречались ли статьи на тему особенностей использования веб-сервисов в режиме разделения данных? Какие особенности и узкие места, практика использования?
Наша система планируется именно такой и хотелось бы знать, можно ли закладывать в нее клиентские веб-сервисы, как инструмент, например, для обмена с веб-сайтами клиентов. Есть опасения, что веб-сервисы могут привести к уязвимостям в системе безопасности.
36. AllexSoft 23.07.13 21:47 Сейчас в теме
(35) к сожалению примеров таких систем не знаю, да и статьи искал и не нашел ( самому интересно... если напишите статью о использовании web-сервисов в нестандатных задачах (условиях модульности, условиях разделения данных) то было бы очень интересно.
А по поводу стоит ли закладывать возможности обмена с сайтами через SOAP то конечно нужно, вот только придумать как ) схемы подключения xsd пользовательских схем, сам обмен данными на подобие обработки универсального обмена и файлов правил...
32. AllexSoft 23.07.13 13:16 Сейчас в теме
37. 6есик 52 08.08.13 15:57 Сейчас в теме
Я обычный XMLHttpRequest использовал, то у меня авторизируется обоими способами.
Только в IE заметил разницу что при авторизации не через хедеры при неправильных данных не появляется стандартное окно авторизации в браузере.

И при использовании русских символов либо в пароле либо в пользователе авторизация неработает даже в стандартных окошках авторизации в браузере (пробовал хром,мозилу,експлорер)
38. i.kovtun 180 25.08.13 19:13 Сейчас в теме
(37) 6есик,
А в какой кодировке отправляете реквизиты авторизации? Подозреваю 1С UTF-8 ожидает...
39. Elisy 948 26.08.13 14:15 Сейчас в теме
(38) i.kovtun,
На странице выставлен meta для utf-8. Хорошо бы было, если бы браузер ее и использовал :)
40. 6есик 52 27.08.13 12:21 Сейчас в теме
(38) i.kovtun,
Да по разному пробовал уже. И через encodeURIComponent() пробовал авторизационные данные пропускать, но ничего не помогло. Даже надоело пробовать - но если у кого-то получиться то было бы очень интересно увидеть.
42. i.kovtun 180 20.09.13 13:55 Сейчас в теме
(40) 6есик,
Вот появилась публикация http://infostart.ru/public/201461/, в ней есть информация по поводу авторизации киррилистических логинов. Сам пока до проблемы не добрался.
41. Vlasenko.Oleg 10 02.09.13 16:47 Сейчас в теме
По поводу авторизации попробуйте использовать Preemptive Authentication,
здесь описано как http://hc.apache.org/httpclient-3.x/authentication.html
43. prodines 107 08.04.15 12:11 Сейчас в теме
А как всё-таки составлять SOAP-запросы из веб-клиента к веб-серверу 1С?
44. AllexSoft 08.04.15 12:25 Сейчас в теме
(43) prodines, точнее проблему озвучьте, в чем сложность то? примеров использования SoapClient на PHP полно, там 3 строки кода.. ну а собственно вызов из вашего клиентского приложения веб сервиса на 1С или на чем то другом одинаков, там все равно ответы в формате XML вам будут приходить. Ну а как парсить ответы это уже другая тема =)
46. prodines 107 10.04.15 12:13 Сейчас в теме
(44) AllexSoft, (45) Суть проблемы в следующем: есть веб-клиент в виде броузера с загруженным HTML/JavaScript-файлом. Есть Веб-сервер в виде связки 1С:Предприятие и Апач. Задача: обращаться из клиента к серверу и получать некий ответ. Вопрос: какого вида XML-файлы слать из клиента на 1С? Откуда я узнаю их формат, синтаксис?

При этом, разумеется, такие вещи, как JSON, WSDL, SOAP, jQuery - для меня, программиста 1С, тёмный лес. Кое-как со скрипом я ещё могу осилить JavaScript - хотя это тоже довольно непростой язык программирования, просто я случайно прочитал недавно 5 издание библии флэнагана. Да, ну и XML - вещь понятная, разумеется, т.к. 1С-программист с XML регулярно сталкивается в работе.

Таким образом, данная статья мне вообще абсолютно непонятна - ни единого слова.
47. Elisy 948 15.04.15 08:06 Сейчас в теме
(46) Извините, что отвечаю с запозданием. На Инфостарт с определенного момента перестала нотификация об ответах приходить по почте. Очень неудобно стало.

Суть проблемы в следующем: есть веб-клиент в виде броузера с загруженным HTML/JavaScript-файлом. Есть Веб-сервер в виде связки 1С:Предприятие и Апач. Задача: обращаться из клиента к серверу и получать некий ответ. Вопрос: какого вида XML-файлы слать из клиента на 1С? Откуда я узнаю их формат, синтаксис?

Думаю, вам нужно решить сначала вопрос с авторизацией.
Для вашего случая есть несколько подходов: 1) из этой статьи и 2) http-сервисы из мира 1С 8.3. В обоих случаях встанет проблема ввода пользователем логина и пароля. В случае статьи - хранение логина и пароля будет на стороне веб-браузера, в случае с http-сервисов логин и пароль распознает 1С и факт распознавания будет передаваться через куки. 3) подход - http://infostart.ru/public/104926/ может не предполагать авторизации совсем (Требует платный компонент .Net Bridge - встречал аналог через COM-объект).

Я встречал несколько вариантов передачи данных от сервера к клиенту: JSON и XML. Самый распространненный в веб-мире все-таки JSON, но он очень медленный при формировании средствами 1С.
По методам:
1) Поддерживает XML, внутрь ответов можно встраивать JSON. Формат XML фиксированный - определяется 1С стандартом SOAP - сложный для понимания.
2) Поддерживает XML, JSON - гибче, чем 1й подход. Формат XML и JSON вы определяете на стороне 1С
3) Поддерживает XML, JSON. Формат XML и JSON вы определяете на стороне 1С
48. prodines 107 15.04.15 11:48 Сейчас в теме
(47) то ли Вы ничего не ответили на мой вопрос, то ли я не сумел ничего понять. Да поймите же - JSON для меня просто не существует. Примите это как условное допущение. И изучать его я не стану - нет смысла.
Формат XML и JSON вы определяете на стороне 1С

Возможно, это является ответом. Тогда это и есть суть моего вопроса - как конкретно это делается - "Формат XML вы определяете на стороне 1С"?
49. AllexSoft 15.04.15 16:47 Сейчас в теме
(48) prodines, думаю у вас еще недостаточно теоретической основы для реализации вашей задачи.
При этом, разумеется, такие вещи, как JSON, WSDL, SOAP, jQuery - для меня, программиста 1С, тёмный лес.

И изучать его я не стану - нет смысла.

ну тогда вы ничего и не сделаете к сожалению ( Нельзя что-то сделать и не понимать что ты делаешь. Копипаст тут не прокатит
50. Elisy 948 16.04.15 07:29 Сейчас в теме
(48) prodines,
Про JSON нужно знать, что это альтернатива XML. Это текстовая строка, полученная на выходе какой-то функции 1С. Ее понимает JavaScript. 1С запакует структуру в JSON без вашего участия, JavaScript его поймет и восстановит объект опять без вашего участия.
Код для получения JSON при беглом поиске можно взять здесь http://infostart.ru/public/61194/
XML создается стандартными 1С-средствами, например, так - для таблицы значений:
	Запись = Новый ЗаписьXML;
    Запись.УстановитьСтроку("UTF-8");
     
    Запись.ЗаписатьОбъявлениеXML(); 
    Запись.ЗаписатьНачалоЭлемента("root");  
     
    МасКолонки = Новый Массив();
    Запись.ЗаписатьНачалоЭлемента("columns");   
    Для Ном = 0 по Таблица.Колонки.Количество()-1 цикл          
        Колонка = Таблица.Колонки[Ном];
        МасКолонки.Добавить(Колонка.Имя);
         
        Запись.ЗаписатьНачалоЭлемента("colum");
        Запись.ЗаписатьАтрибут("Name",Колонка.Имя);
        Запись.ЗаписатьАтрибут("Type",Строка(Колонка.ТипЗначения));
        Запись.ЗаписатьКонецЭлемента();  // colum       
    КонецЦикла;     
    Запись.ЗаписатьКонецЭлемента();  // columns
     
    Запись.ЗаписатьНачалоЭлемента("records");   
    Для Каждого СтрТаблицы из Таблица цикл
         
        Запись.ЗаписатьНачалоЭлемента("record");
        Для каждого ИмяКолонки из МасКолонки цикл
            Запись.ЗаписатьНачалоЭлемента(ИмяКолонки);
			
			Тип = ТипЗнч(СтрТаблицы[ИмяКолонки]);
		    Если Справочники.ТипВсеСсылки().СодержитТип(Тип)
              Или Документы.ТипВсеСсылки().СодержитТип(Тип) Тогда
			    Запись.ЗаписатьТекст("" + СтрТаблицы[ИмяКолонки].УникальныйИдентификатор());
			ИначеЕсли Тип = Тип("Число") Тогда
		    	Запись.ЗаписатьТекст(Формат(СтрТаблицы[ИмяКолонки], "ЧРД=.; ЧН=0; ЧГ=0"));
			Иначе  
				Значение = Строка(СтрТаблицы[ИмяКолонки]);
            	Запись.ЗаписатьСекциюCDATA(Значение);
			КонецЕсли;
			
            Запись.ЗаписатьКонецЭлемента();
        КонецЦикла;         
        Запись.ЗаписатьКонецЭлемента();
    КонецЦикла;     
     
    Запись.ЗаписатьКонецЭлемента();  // records     
    Запись.ЗаписатьКонецЭлемента();  // root        
	
    Возврат Запись.Закрыть();
Показать


Здесь под "Формат XML вы определяете на стороне 1С" я понимаю то, что вы можете дать другие имена root, columns или добавить другую информацию
51. AllexSoft 17.04.15 11:21 Сейчас в теме
(50) думаю он хочет пример оформления soapRequest с одним или двумя параметром (скажем простыми в виде string) в вызове функции executeSoap(script, successHandler) из вашего примера
45. Elisy 948 08.04.15 12:39 Сейчас в теме
(43) Веб-клиент имеется ввиду 1С?
Оставьте свое сообщение