Внешнее воздействие на веб-клиент 1С:Предприятие

28.06.13

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

Описанный метод позволяет организовать контейнер средствами html и JavaScript и поместить в него веб-клиент 1С. При этом контейнеру доступно управление веб-клиентом, как на уровне алгоритмов, так и на уровне управления стилями. Подход отрабатывался на 1С версии 8.2.18.96.

Скачать исходный код

Наименование Файл Версия Размер
Исходный код веб-сайта
.zip 86,88Kb
29
.zip 86,88Kb 29 Скачать

Внешнее воздействие на веб-клиент 1С:Предприятие

Описанный метод позволяет организовать контейнер средствами html и JavaScript и поместить в него веб-клиент 1С. При этом контейнеру доступно управление веб-клиентом, как на уровне алгоритмов, так и на уровне управления стилями. Подход отрабатывался на 1С версии 8.2.18.96.

Настройка на стороне веб-сервера

Каждый веб-клиент 1С работает с опубликованной на веб-сервере информационной базой. Для более полной интеграции контейнер, в который будет встроен веб-клиент, необходимо создавать на этом же сервере. Это позволит избежать проблем с безопасностью, связанных с кросс-доменными обращениями. Например, Silverlight и Flash не позволяют обращаться к контенту других сайтов, если не настроены соответствующие политики в виде xml-файлов. Post-запросы между доменами также могут быть затруднительными.

Настройка Apache хранится в файле conf/httpd.conf

Изменить нужно значение путей. Ниже приведены значения для пути c:/Apache.www - в нем хранятся ссылки на информационные базы 1С.

DocumentRoot "C:/Apache.www"

<Directory "C:/Apache.www">

Предварительная настройка

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

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

На всякий случай выставляем режим совместимости браузера - совместимость с самым последним:

 

Используемый шаблон работает с jQuery.

Запуск веб-клиента 1С будет происходить в IFrame внутри index.html. Первая кнопка будет отвечать за запуск приложения 1С App, вторая - за запуск приложения NetBridge.


    
    
    

Обработчик нажатий на кнопки выглядит таким образом:

$(document).ready(function () {
    $("#appButton").click(function () {
        $("#iframe").attr("src", "App/ru_RU/?N=Администратор");
    });

    $("#netBridgeButton").click(function () {
        $("#iframe").attr("src", "NetBridge/ru_RU/?N=Сергей");
    });
...

На этом этапе можно воздействовать на параметры запуска веб-клиента. Например, передать имя пользователя (N=Администратор) и пароль.

Реакция на события веб-клиента

Первое событие, которое необходимо отловить - это событие, когда веб-клиент 1С загрузился и готов к использованию.

IFrame реализует событие на которое можно подписаться. Проблема заключается в том, что для веб-клиента может вызываться до 3х раз. такой вызов связан с перенаправлениями, например, веб-клиент 1С перенаправляет веб-клиент с учетом языка пользователя. Опытным путем удалось установить, что последний вызов связан с появлением объекта WebUI в веб-клиенте. Но процесс инициализации 1С на этом не закончен. На этом этапе не подгружены нужные библиотеки и не создан интерфейс главной формы. За признак создания главного интерфейса можно взять момент, когда переменная initialized станет равна true.

К переменным веб-клиента 1С можно обращаться через конструкцию:

cw = $("#iframe").get(0).contentWindow;

Обработчики будут выглядеть так:

$(document).ready(function () {
    ...
    $('#iframe').load(function () {
        //Вызовы происходят несколько раз. Они связаны с переадресацией на ru_RU, например
        if ("WebUI" in $("#iframe").get(0).contentWindow) {
            var cw = $("#iframe").get(0).contentWindow;

            setTimeout(function () {
                desktopLoadedComplete();
            }, 50);
        }
    });
});

В результате цепочки событий будет вызвана функция desktopLoadedComplete:

desktopLoadedComplete = function () {
    var cw = $("#iframe").get(0).contentWindow;
    if ($("#iframe").get(0).contentWindow.Web.Application.initialized) {
         //alert(cw.Web.Common.Version);
         themes = cw.winManager.controls["themes"];
         themes.setListener(handleEvents);

         $('span.themeLink', $("#iframe").contents()).css('text-decoration', 'line-through');
    }
    else {
         setTimeout(function () {
             desktopLoadedComplete();
        }, 50);
    }
}

В desktopLoadedComplelte можно воздействовать на форму 1С. Например, сделать буквы выбора разделов зачеркнутыми. Для этого подойдет конструкция jQuery:

$('span.themeLink', $("#iframe").contents()).css('text-decoration', 'line-through');

За окно разделов отвечает объект winManager.controls["themes"] типа WebUI.ThemesPanel. Этот тип наследован от WebUI.NavigationControl, который в свою очередь наследован от WebUI.Control и Web.Events.EventsBase.

Опытным путем удалось подключиться к событию переключения раздела. Выглядит это так:

themes = cw.winManager.controls["themes"];
themes.setListener(handleEvents);

В обработчик событий handleEvents поступает несколько параметров, среди которых - источник события, код события. Для анализа переключения разделов обработчик будет таким:

handleEvents = function (sender, eventId, data0) {
    var cw = $("#iframe").get(0).contentWindow;
    if (eventId == cw.Web.Events.UIThemeButtonClickedEvent) {
        alert("eventId = Web.Events.UIThemeButtonClickedEvent");

        cw.winManager.handleEvents(sender, eventId, data0);
    }
}

При переключении раздела будет вызвано диалоговое окно и передано управление родному обработчику событий 1С.

Выводы

Html, JavaScript и jQuery предоставляют мощные средства для управления веб-клиентом 1С извне. Доступны передача параметров (логин, пароль), управление оформлением и стилями, подписка на события. Веб-клиент 1С содержит мощный фреймворк, который требует долгого времени, чтобы разобраться с ним.

В статье не охвачена операция вызова серверных и клиентских процедур, но такая возможность теоретически есть.

Статья интересна также при использовании поля HTML на веб-клиенте без предложенной технологии. Так как в этом случае вся инфраструктура 1С также доступна через родительское окно. В теории при вызове в таком контексте серверных процедур можно организовать взаимодействие между пользовательским html-кодом и родными элементами управления 1С. Такой вариант - альтернатива использованию WebBrowser Control, что означает отвязку от Windows.

//

&amp;amp;amp;amp;lt;div&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;img src="//mc.yandex.ru/watch/21031318" style="position:absolute; left:-9999px;" alt="" /&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;/div&amp;amp;amp;amp;gt;

См. также

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

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

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

36000 руб.

03.08.2020    15981    13    18    

13

Интеграция 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    17977    9    15    

13

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

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

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

12000 руб.

02.02.2021    16509    42    49    

23

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12927    31    8    

11

Интеграция с Onliner.by API

WEB-интеграция Прайсы Платформа 1С v8.3 1С:Управление торговлей 11 Беларусь Платные (руб)

Расширение для добавления товаров, обновления цен на площадку Onliner.by.

8160 руб.

21.11.2019    16934    6    5    

9

Драйвер облачной кассы для Бизнес.РУ Чеки

ККМ WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Универсальный драйвер для фискализации чеков для сервиса Бизнес.РУ. Чеки (https://online-check.business.ru/). Работает с любой кассой, подключенной к сервису, в том числе и без физической кассы (Аренда облачной ККТ в датацентре). Принцип работы аналогичен наличию физической кассы, подключенной к рабочему месту 1С. Фискализация выполняется с любого рабочего места через интернет. Нет ограничений на количество рабочих мест, касс, компьютеров. Поддерживает печать с нескольких рабочих мест на одну кассу. Работает в любой операционной системе (Windows, Linux) и в любом клиенте (Тонкий, Толстый, Web, Мобильный клиент).

6000 руб.

03.06.2021    13098    10    0    

7

Contragent+ 9.1 для 1С 8.2/8.3

Обмен с ГосИС Взаиморасчеты WEB-интеграция Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Платные (руб)

Универсальная обработка для экспресс-регистрации новых и обновления реквизитов существующих элементов справочников «Контрагенты» & «Организации» по данным Федеральной Налоговой Службы РФ (ЕГРЮЛ&ЕГРИП). Минимизация ручного ввода и соответствие данных 1С учредительным сведениям юр. лиц & ИП.

3600 руб.

13.12.2012    92268    175    308    

252

Мобильная торговля для Android

Розничная торговля WEB-интеграция Мобильная разработка Мобильная платформа Управленческий учет Платные (руб)

Сис­те­ма поддержки мо­биль­ной тор­гов­ли это про­грам­м­ный ком­плекс, раз­ра­бо­тан­ный для ав­то­ма­ти­за­ции ра­бо­ты тор­го­вых пред­ста­ви­те­лей, за­ни­ма­ю­щих­ся сбо­ром за­ка­зов на смартфонах в точ­ках роз­нич­ной тор­гов­ли, про­да­жей то­ва­ра с ко­лес и мер­чен­дай­зин­гом.

4800 руб.

19.02.2008    42171    23    24    

40
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sikuda 673 16.06.13 15:26 Сейчас в теме
Очень хорошо что появляются статьи на эту тему. Посмотреть как это работает, это нормально. Но так взаимодействовать с системой я бы не стал.
1. 1С в любое время изменит код на который вы основываетесь.
2. Лицензирование 1С говорит вам нет. v8.1c.ru/predpriyatie/questions_licence.htm#64
И проблему старого движка не решается, у вас в тонком клиенте будут выскакивать ошибки.

Собственно нам тогда остается два пути(мое мнение).
1. Использовать гибкий универсальный web-сервис. Типа http://infostart.ru/public/180203/ и http://infostart.ru/public/189876/(будущее). Остаются проблемы с лицензированием каждого пользователя(это везде в 1С) и производительностью, что можно и нужно обсудить...
2. Использовать html поле внутри 1С, а это и есть контейнер iframe внутри движка. И здесь главное найти инструменты работоспособные как со старым движком 1С, как и с любым современным. Я копаюсь в современной графике http://infostart.ru/public/174856/. И как будет готово для применения - сразу опубликую.
2. Elisy 948 16.06.13 15:58 Сейчас в теме
(1) sikuda,
Есть разные мнения на этот счет
1. 1С в любое время изменит код на который вы основываетесь.

Компании 1С очень сложно поддерживать код сразу для всех браузеров, учитывая, что она сочинила свой фреймворк. Это значит, что мало кто захочет лезть в уже отлаженный и работающий код на JavaScript.
2. Лицензирование 1С говорит вам нет. v8.1c.ru/predpriyatie/questions_licence.htm#64

Пункт можно трактовать по разному. В основном речь идет о СУБД. Все работы ведутся через объекты 1С, определенные в JavaScript.

У вас отличные статьи. Не подскажете следующий пункт в 8.3.3:
Веб-клиент. Системные требования. Прекращена поддержка веб-браузеров:
Microsoft Internet Explorer версии 7.0;
Это значит, что html-поле и веб-клиент будут запускаться в режиме совместимости с 8й версией?
16. sikuda 673 19.06.13 12:51 Сейчас в теме
(1) По второму варианту использования в 1С html поля: Мой ответ Чембурлену Доминиканне http://infostart.ru/public/191248/ (на согласовании 19.06.2013 12:45) Рисование графики в HTML поле.
3. sikuda 673 17.06.13 07:52 Сейчас в теме
Я конечно не эксперт по IE, но в средствах разработчика IE(F12) можно устанавливать различные режимы, эмулируя его работу со старыми версиями(типа настроек совместимости в 1С). Я поигрался с 1С http://sikuda.ru/internet-explorer-10-dlya-windows-7-vyishel/
1С переходит в режим:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>

Про режимы совместимости IE можно почитать http://msdn.microsoft.com/ru-ru/library/ie/cc288325%28v=vs.85%29.aspx
4. stanru1 91 17.06.13 14:54 Сейчас в теме
сдается мне, что если речь не идет о решении, которое будет сертифицироваться на "1с совместимо", то можно смело и к базе данных обращаться, и в ифрейме веб клиента запускать. Ибо лицензионное соглашение не есть закон. Впрочем, копий на эту тему сломано нимало.
За статью огромный "плюс"; сомневаюсь, что данный механизм найдет практическое применение (ибо, действительно, 1с может в одночасье все поменять), но интересно и почетно!
5. Elisy 948 17.06.13 16:09 Сейчас в теме
(4) stanru1,
сдается мне, что если речь не идет о решении, которое будет сертифицироваться на "1с совместимо", то можно смело и к базе данных обращаться, и в ифрейме веб клиента запускать. Ибо лицензионное соглашение не есть закон. Впрочем, копий на эту тему сломано нимало.

Есть один момент. Внутри 1С через поле HTML документа этот механизм тоже доступен. Непонятно, как к этому относиться, ведь работа ведется через объекты 1С.
6. opx 799 17.06.13 16:41 Сейчас в теме
Html, JavaScript и jQuery предоставляют мощные средства для управления веб-клиентом 1С извне. Доступны передача параметров (логин, пароль)

Передача пароля через параметр javascript - убило.
Пароль администратора с полными правами, я надеюсь, вы имели ввиду.
7. Elisy 948 17.06.13 18:16 Сейчас в теме
(6) opx,
Передача пароля через параметр javascript - убило.
Пароль администратора с полными правами, я надеюсь, вы имели ввиду.

Не понятен сарказм. Вы думаете 1С передает логин и пароль каким-то более защищенным образом? 1С передает их сериализованными в base64 кодировку, что не намного защищеннее.
8. opx 799 17.06.13 22:46 Сейчас в теме
(7)1С хранит и передает не пароль, а хэш. SHA-1, если мне не изменяет память.
За сарказм извините, но про передачу пароля через javascript забудьте.
9. Elisy 948 18.06.13 02:21 Сейчас в теме
(8) opx,
веб-клиент 1С передает на сервер логин пароль в формате "логин:пароль" в формате base64. Во всяком случае так было в 8.2.15.
10. stanru1 91 18.06.13 10:34 Сейчас в теме
(8) opx, 1с даже предлагает типовой механизм авторизации в вебклиенте через post запрос. Описано в одной из жкк. Пароль из post запроса, разумеется, передается не зашифрованным.
11. opx 799 18.06.13 11:34 Сейчас в теме
Все проверил. Действительно так. web-клиент использует передачу пароля по http в base64. Я в шоке. Берем снифер и имеем полные права. 1С.... они такие 1С
13. Asmody 18.06.13 14:20 Сейчас в теме
(11) opx, и что? защита передаваемых данных — это не задача веб-приложения. боитесь перехвата паролей — настраивайте SSL.
12. Asmody 18.06.13 14:18 Сейчас в теме
гм… не понял, в чём соль статьи. в том, что можно сайты в iframe подгружать?
14. comol 5055 18.06.13 14:51 Сейчас в теме
Вот люди заморочились.... Написали бы может 1C Webpart для Sharepoint? И ваши задачи бы решило и людям польза была бы :). Конечно интерфейс менять вряд ли кому интересно, но вот часть функциональности на корп портал вынести штатным образом с возможностью управления, а не стандартным html контейнером уже было бы интересно...
15. Asmody 18.06.13 16:52 Сейчас в теме
(14) comol, а веб-сервисов для этого недостаточно?
17. Pawlick 10 19.06.13 16:46 Сейчас в теме
Ставлю плюс за то, что вобщем все понял по форме, но ни хрена не понял по содержанию...:)
18. пользователь 23.05.17 10:37
Сообщение было скрыто модератором.
...
19. vers139 53 13.02.20 11:01 Сейчас в теме
Получилось ли реализовать вызов серверных и клиентских процедур веб-клиента другой базы?

Суть ситуации: внутри базы 1 открывать обработку с размещённым в ней полем HTML-документа. В нём открываем веб-клиент базы 2. Далее из кода обработки базы 1 воздействовать на веб-клиент базы 2. Например, формировать отчёт или заполнять реквизиты документа.
20. Elisy 948 14.02.20 06:37 Сейчас в теме
(19) До вызова серверных и клиентских процедур не дошло. Разработка невостребована, и ее можно отнести к экзотике. Развитие получило совсем в неожиданном направлении - .Net-компонент доступа к опубликованной базе 1С: Elisy Business Connector. Business Connector позволяет делать вызов серверных процедур и передавать в него простые типы 1С. Является альтернативой COM-соединению, но не требует установленной на сервере 1С. Реализация на .Net Core также делает доступной на Linux. На основе компонента сделаны сайты:
re.kg - товарный агрегатор
www.gallery.kz - сайт-витрина обоев
www.domosfera.kz - оптовый интернет-магазин
Оставьте свое сообщение