Что такое web клиенты. Настройка веб-серверов для работы с «1С:Предприятием. Подключаемся к веб-серверу с компьютеров клиентов

Появление в восьмой версии программы 1С управляемых форм позволило получить доступ к базам данных через http-протоколы без значительного трафика и существенной нагрузки на сеть. Для работы в таком режиме не требуется установки дополнительных приложений на клиентской части. Веб клиент 1С в данном случае работает через установленный на устройстве браузер.

Схема и принцип работы веб клиента 1С

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

К основным преимуществам такого режима работы можно отнести:

  • Не требуется установка дополнительных приложений на клиентской части структуры;
  • Достаточно просто реализуется с технической точки зрения;
  • Можно обеспечить доступ к базе из любого места, где есть интернет;
  • Практически любая операционная система: Windows, iOS, *nix – овые системы могут выступать в качестве рабочей среды.

Для установки веб-сервера под 1С чаще всего используются:

  • Продукт компании Microsoft — IIS (Internet Information Services);
  • Apache сервер.

Особенности настройки и установки IIS

На всех современных компьютерах, с установленной операционной системой Windows есть возможность поднять IIS сервер. Эта возможность включена в стандартную поставку.

Для того чтобы это сделать, необходимо обладать правами администратора. В «Панели управления» необходимо зайти в «Программы и компоненты», если операционка версии 7 и выше, либо в пункт «Установка и удаление программ» для XP.

Установка веб-сервера на слабый компьютер может привести к значительным провалам в скорости работы всей системы. Поэтому этапы установки IIS из под XP мы дальше рассматривать не будем.

Следующим действием будет вызов меню «Включение или отключение компонентов Windows».

Чтобы долго не колесить по «Панели управления» в поисках необходимого подменю, можно воспользоваться поиском, окно которого расположено в правой части окна. Набрав слово «компонент» Вы сразу же обнаружите необходимую ссылку.

Всплывшее окно будет иметь вид, представленный на рис.2.

В выпавшем дереве необходимо проставить флажки в ветвях Службы IIS->Службы интернета:

  1. Общие функции HTTP: Статическое содержимое, Обзор каталогов, Документ по умолчанию, Ошибки HTTP;
  2. Проверка работоспособности и диагностика: Монитор запросов, Ведение журнала HTTP;
  3. Разработка приложений: Фильтры ISAPI, Расширения ISAPI, Расширяемость.NET5, ASP.NET, ASP;
  4. Средства управления: Консоль управления.

То есть, фактически должно появиться подобное рис. 3.

Особенности настройки и установки Apache

В случаях, если необходимо настроить Web сервер на компьютере с операционной системой, не входящей в семейство Windows, или если какие-либо другие причины побуждают воспользоваться сторонним ПО, многие администраторы останавливают свой выбор на серверах Apache. Дистрибутивы к ним легко найти на официальном сайте, а установка и настройка не требуют значительных умственных и временных затрат.

Ниже будет рассмотрен вариант установки и настройки этой программы на операционной системе Windows 7.

До открытия окна, представленного на Рис. 4, установка программы ничем не отличается от любой другой инсталляции.

Здесь необходимо будет прописать:

  1. Имя сервера;
  2. Имя домена;
  3. Адрес электронной почты администратора, на который будут приходить оповещения.

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

Обратите внимание, в нижней части окна установки есть переключатель, который по умолчанию показывает, что программа будет использовать 80-ый порт. Этот же порт зачастую используют другие программы (например, Skype), во избежание конфликтов либо перенастройте эти программы, либо вообще их удалите с компьютера, где будет установлен веб-сервер 1С.

При успешном завершении установки в трее появится изображение сиреневого перышка. Это значит, сервис удачно установлен и запущен.

Установка веб клиента и веб сервера 1С

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

  1. Заходим с административными правами в режим Конфигуратор;
  2. Находим пункт меню Администрирование;
  3. Нажимаем Публикация на веб сервере.

Платформа автоматически найдет установленный веб сервер. Остается задать имя базы, и каталог, в котором она будет храниться.

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

Все остальные флажки в настройках лучше оставить по умолчанию. Нажимаем кнопку «Опубликовать», разрешаем перезапуск сервера, получаем готовый продукт.

Забив в браузере строку вида http:// имя вашего сервера/ имя данное базе, можно проверить качество выполненной работы.

Кроме работы через web-клиент, публикация на web-сервере поддерживает и другие варианты работы. Запустить работу через приложение, установленное на клиентском компьютере, можно просто добавив базу в список выбора, открываемом при запуске программы.

Поставив переключатель в положение «На веб-сервере» и заполнив адресную строку базы, Вы получите необходимый доступ.

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

Некоторые минусы web-клиента

Каждый, кто имеет возможность сравнить интерфейсы тонкого клиента и веб-клиента, вполне резонно отмечает, что принципиальной разницы между ними нет. И возникает логичный вопрос: для чего же необходимо устанавливать дополнительные платформы, если можно работать через браузер? Постараемся описать разницу и ответить на этот вопрос:

  • В первую очередь существенно различается политика в области лицензирования. Web-клиенту не доступны локальные лицензии, установленные на ПК;
  • Многие организации очень трепетно относятся к информации, хранящейся в базе. Веб-сервер, доступный из любой точки всемирной паутины, крайне уязвим;
  • Работа через веб-клиент имеет значительные ограничения по использованию файловой системы, обменами данными, электронкой.

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

Задача: ускорить работу с программой 1С на рабочих станциях пользователей.
Инструменты: платформа 1Сver8.2 , конфигурация бухгалтерия предприятия КОРП редакции 2.0 и 3.0 , конфигурация зарплата и управление персоналом. Сервер, с windows на который установим web-сервер IIS, браузер, рабочая станция, хотя и не обязательно можно все делать с сервера.

После установки платформы 1С 8.2 на компьютер, мы наблюдаем возможность нескольких вариантов запуска 1С – 1С Предприятие и 1С Предприятие (тонкий клиент). Прочитав руководство администратора из коробки поставки, лично я понял, что платформа 8.2 может работать с конфигурацией 1С несколькими способами:

  • Очень тяжелом , толстым клиентом , особенно для древнего железа, на ПК выпущенных в 2005 году типа Celeron 2.0 с частотой шины 400 MGz и памятью в 512 Мb работать с 1С 8 просто не возможно, приложение висит так, что радость от покупки современного продукта сразу пропадает. Сначала, после версии 7.7 я недоумевал, почему же клиент 1С 8.2 так тупит. И запросил в 1С системные требования к ПК для работы. И вот какими должны быть минимальные системные требования к рабочей станции для 1С 8.2:
  1. Требования к операционной системе:

1.1. Windows 2000 с пакетом обновлений Service Pack 4

1.2. Windows XP с пакетом обновлений Service Pack 3

1.3. Windows Vista

  1. Минимальный объем оперативной памяти (RAM):

2.1. Для Windows 2000 SP4, Windows XP SP3 - 256 Мб

2.2. Для Windows Vista, Windows 7 - 512 Мб

  1. Требования к процессору (CPU):

3.1. Intel ими AMD с частотой не менее 1,8 Ггц

  1. Требования к видео подсистеме:

4.1. Видеоадаптер с поддержкой разрешения как минимум 1024*768 dpi

4.2. Монитор с разрешающей способностью не менее 1024*768 dpi

  1. Выход в интернет для получения программной лицензии.

На первый взгляд 1С 8.2 не самая требовательная программа. Но от себя хочется добавить, что приятно работать с толстым клиентом 1С на ПК с двухъядерным CPU и RAM в 1Гб, и уж очень не комфортно на устаревшем железе.

  • Используя тонкий клиент . В работе он и правда показался шустрее, для работы использует управляемые формы. А точнее требует для работы бухгалтерии редакции 3.0 , для бухгалтерии редакции 2.0 программного интерфейса для выполнения работ в тонком клиенте, и забегая вперед, web клиенте нет. Так что не удивляйтесь, если открывая, тонкий клиент для работы с 1С, вы увидите закладку рабочий стол, и три пары кнопок и подумаете, что еще бухгалтеру нужно, календарь, чтоб не прозевать отчетность да калькулятор, чтобы начислить зарплату.
    В тонком клиенте для работы программы, может использоваться ключ защиты расположенный как на стороне клиента, так и ключ установленный на web-сервере с 1С 8.2 , причем на web-сервере обязательно должен быть сетевой ключ, то есть если аппаратный, то сетевой (красного цвета ключ сетевой, синего локальный однопользовательский ), а программный ключ сам по себе сетевой. Ну а подсчетом лицензий может заниматься как менеджер лицензий , так и сервер 1С предприятия при наличии лицензии на него.
  • Web клиент , на мой взгляд лучшее решение для работы с программой, к платформе ПО не привязано, да и работать можно хоть с луны при наличии выхода в интернет. В работе такой вариант показался очень шустрым, нагрузка при работе через Web ложится на Web-сервер. И при наличии сильного железа со стороны сервера, вариант работы через web-клиента хорош. Лицензирование при работе через Web-клиент 1C 8.2 осуществляет Web-сервер, менеджер лицензий, или сервер 1С. Web-клиент идеальное решение для работы с 1С, если парк рабочих мест бухгалтеров давно не обновлялся.

Примечание: через web-клиент и тонкий клиент на сегодняшний день, возможным представляется работа только с бухгалтерией 3.0 , да и то функциональность бухгалтерии 3.0 не достигла функциональности бухгалтерии 2.0 об этом можно почитать здесь: http://www.1c.ru/news/info.jsp?id=15068 Конфигурации от 1С для зарплаты и кадры с управляемыми формами пока еще не существует . Есть возможность использовать конфигурацию написанную компанией Камин – «1С-Камин: Зарплата. Версия 5.0»

Настройка 1С 8.2 для работы с тонким и web клиентом

Для работы тонкого клиента 1С вовсе необязательно настраивать web-сервер, тонкий клиент позволяет работать с базой и конфигурацией локально, в сетевом варианте, через сервер 1С предприятия, web-сервер.

Для работы с 1С8.2 через браузер требуется настроить web-сервер. Для этого установим и настроим IIS

  • Устанавливаем IIS

Установка удаление программ -> установка компонентов windows->сервер приложений->состав

  • В папке wwwroot создаем каталог для web-узла 1c8x

  • В папке 1c8x создаем файл default.vrd с следующим содержимым


Xmlns:xs=http://www.w3.org/2001/XMLSchema
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
base="/1c8x"
ib="File=C:\Base;">

Атрибут base указывает на относительный путь к созданной папке виртуального приложения, атрибут ib строку подключения к базе, в данном случае база расположена на том же сервере, что и web-сервер.

  • Создаем новый web-узел или виртуальный каталог

  • Переходим к настройке узла, вкладка домашний каталог, здесь все стандартно:

  • Устанавливаем платформу 1С8X на web-сервер, при установке обязательно устанавливаем модули расширения web-сервера

  • Выполним регистрацию адаптера Web-сервисов. Для этого в свойствах узла 1C8x перейдем на вкладку домашний каталог нажмем кнопку настройка для настройки приложения и добавим сопоставление расширений, файл wsisapi.dll из папки 1cv82\bin

Одной из приятных особенностей технологии 1С:Предприятие является то, что прикладное решение, разработанное по технологии управляемых форм, может запускаться как в тонком (исполняемом) клиенте под Windows, Linux, MacOS X, так и как веб-клиент под 5 браузеров – Chrome, Internet Explorer, Firefox, Safari, Edge, и все это – без изменения исходного кода приложения. Более того – внешне приложение в тонком клиенте и в браузере функционирует и выглядит практически идентично.
Найдите 10 отличий (под катом 2 картинки):

Окно тонкого клиента на Linux:

То же окно в веб клиенте (в браузере Chrome):

Зачем мы сделали веб-клиент? Говоря несколько пафосно, такую задачу перед нами поставило время. Уже давно работа через Интернет стала необходимым условием для бизнес-приложений. Вначале мы добавили возможность работы через Интернет для нашего тонкого клиента (некоторые наши конкуренты, кстати, на этом и остановились; другие, напротив, отказались от тонкого клиента и ограничились реализацией веб-клиента). Мы же решили дать нашим пользователям возможность выбрать тот вариант клиента, который им подходит больше.

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

Постановка задачи

Итак, требования к проекту: веб-клиент должен делать то же самое, что и тонкий клиент, а именно:
  1. Отображать пользовательский интерфейс
  2. Исполнять клиентский код, написанный на языке 1С
Пользовательский интерфейс в 1С описывается в визуальном редакторе, но декларативно, без попиксельной расстановки элементов; используется около трех десятков типов элементов интерфейса - кнопки, поля ввода (текстовые, цифровые, дата/время), списки, таблицы, графики и т.д.

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

И тонкий клиент (при работе через веб), и веб-клиент пользуются одним и тем же набором веб-сервисов для общения с сервером приложений 1С. Реализация у клиентов, конечно, разная – тонкий клиент написан на С++, веб-клиент – на JavaScript.

Немного истории

Проект создания веб-клиента стартовал в 2006 году, в нем (в среднем) участвовала команда из 5 человек. На отдельных этапах проекта привлекались разработчики для реализации специфической функциональности (табличного документа, диаграмм и т.д.); как правило, это были те же разработчики, что делали эту функциональность в тонком клиенте. Т.е. разработчики заново писали на JavaScript компоненты, ранее созданные ими на C++.

С самого начала мы отвергли идею какой-либо автоматической (хотя бы частичной) конверсии C++ кода тонкого клиента в JavaScript веб-клиента ввиду сильных концептуальных различий этих двух языков; веб-клиент писался на JavaScript с чистого листа.

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

Первая версия платформы 1С:Предприятие с поддержкой веб-клиента вышла в 2009 году. Веб-клиент на тот момент поддерживал 2 браузера – Internet Explorer и Firefox. В первоначальных планах была поддержка Opera, но из-за непреодолимых на тот момент проблем с обработчиками закрытия приложения в Opera (не удавалось со 100%-ной уверенностью отследить, что приложение закрывается, и в этот момент произвести процедуру отключения от сервера приложений 1С) от этих планов пришлось отказаться.

Структура проекта

Всего в платформе 1С:Предприятие есть 4 проекта, написанных на JavaScript:
  1. WebTools – общие библиотеки, используемые остальными проектами (сюда же мы включаем Google Closure Library).
  2. Элемент управления ФорматированныйДокумент
  3. Элемент управления Планировщик (реализован на JavaScript и в тонком клиенте, и в веб-клиенте)
  4. Веб-клиент
Структура каждого проекта напоминает структуру Java-проектов (или.NET проектов – кому что ближе); у нас есть неймспейсы, и каждый неймспейс лежит в отдельной папке. Внутри папки лежат файлы и классы неймспейса. В проекте веб-клиента около 1000 файлов.

Структурно веб-клиент по-крупному разделяется на следующие подсистемы:

  • Управляемый интерфейс клиентского приложения
    • Общий интерфейс приложения (системные меню, панели)
    • Интерфейс управляемых форм, включающий, в том числе, около 30 элементов управления (кнопки, различные типы полей ввода – текстовые, цифровые, дата/время и пр., таблицы, списки, графики и т.д.)
  • Объектная модель, доступная разработчикам на клиенте (всего более 400 типов: объектная модель управляемого интерфейса, настройки компоновки данных, условного оформления и пр.)
  • Интерпретатор встроенного языка 1С
  • Расширения браузеров (используются для функциональности, не поддерживаемой в JavaScript)
    • Работа с криптографией
    • Работа с файлами
    • Технология внешних компонент, позволяющая их использовать как в тонком, так и веб-клиенте

Особенности разработки

Реализация всего вышеописанного на JavaScript – дело непростое. Возможно, веб-клиент 1С – одно из самых больших client-side приложений, написанных на JavaScript – около 450.000 строк. Мы активно используем в коде веб-клиента объектно-ориентированный подход, упрощающий работу с таким большим проектом.

Для минимизации размера клиентского кода мы вначале использовали свой собственный обфускатор, а начиная с версии платформы 8.3.6 (октябрь 2014) стали использовать Google Closure Compiler . Эффект использования в цифрах – размер фреймворка веб-клиента после обфускации:

  • Собственный обфускатор – 1556 кб
  • Google Closure Compiler – 1073 кб
Использование Google Closure Compiler помогло нам повысить быстродействие веб-клиента на 30% по сравнению с нашим собственным обфускатором. Кроме того, на 15-25% (в зависимости от браузера) снизился объем памяти, потребляемой приложением.

Google Closure Compiler очень хорошо работает с объектно-ориентированным кодом, поэтому его эффективность именно для веб-клиента максимально высокая. Closure Compiler делает для нас несколько хороших вещей:

  • Статическая проверка типов на этапе сборки проекта (обеспечивается тем, что мы покрываем код аннотациями JSDoc). В итоге получается статическая типизация, очень близкая по уровню к типизации в С++. Это помогает отловить достаточно большой процент ошибок на стадии компиляции проекта.
  • Уменьшение размера кода через обфускацию
  • Ряд оптимизаций выполняемого кода, например, такие как:
    • inline-подстановки функций. Вызов функции в JavaScript – достаточно дорогая операция, и inline-подстановки часто используемых небольших методов существенно ускоряют работу кода.
    • Подсчет констант на этапе компиляции. Если выражение зависит от константы, в него будет подставлено фактическое значение константы
В качестве среды разработки веб-клиента мы используем WebStorm.

Для анализа кода мы используем SonarQube , куда интегрируем статические анализаторы кода. С помощью анализаторов мы отслеживаем деградацию качества исходного кода на JavaScript и стараемся ее не допускать.

Какие задачи решали/решаем

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

Обмен данными с сервером и между окнами

Существуют ситуации, когда обфускирование исходного кода может помешать работе системы. Код, внешний по отношению к исполняемому коду веб-клиента, вследствие обфускации может иметь имена функций и параметров, отличающиеся от тех, которые наш исполняемый код ожидает. Внешним кодом для нас является:
  • Код, приходящий с сервера в виде структур данных
  • Код другого окна приложения
Чтобы избежать обфускации при взаимодействии с сервером мы используем тэг @expose:

/** * @constructor * @extends {Base.SrvObject} */ Srv.Core.GenericException = function () { /** * @type {string} * @expose */ this.descr; /** * @type {Srv.Core.GenericException} * @expose */ this.inner; /** * @type {string} * @expose */ this.clsid; /** * @type {boolean} * @expose */ this.encoded; }
А чтобы избежать обфускации при взаимодействии с другими окнами мы используем так называемые экспортируемые интерфейсы (интерфейсы, у которых все методы являются экспортируемыми).

/** * Экспортируемый интерфейс контрола DropDownWindow * * @interface * @struct */ WebUI.IDropDownWindowExp = function(){} /** * Перемещает выделение на 1 вперед или назад * * @param {boolean} isForward * @param {boolean} checkOnly * @return {boolean} * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){} /** * Перемещает выделение в начало или конец * * @param {boolean} isFirst * @param {boolean} checkOnly * @return {boolean} * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){} /** * @return {boolean} * @expose */ WebUI.IDropDownWindowExp.prototype.selectValue = function (){}

We used Virtual DOM before it became mainstream)

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

Оптимизация работы веб-клиента

Чтобы наш веб-клиент работал быстрее, мы по максимуму стараемся задействовать штатные возможности браузера (CSS и т.п.). Так, командная панель формы (расположенная практически на каждой форме приложения) отрисовывается исключительно средствами браузера, динамической версткой на базе CSS.

Тестирование

Для функционального тестирования и тестирования производительности мы используем инструмент собственного производства (написанный на Java и C++), а также набор тестов, построенных на базе Selenium .

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

Инструмент также проводит замеры производительности приложений с точностью до 25 миллисекунд. В ряде случаев мы закольцовываем части сценария (например, несколько раз повторяем ввод заказа) для анализа деградации времени выполнения со временем. Результаты всех замеров записываются в лог для анализа.


Наш инструмент тестирования и тестируемое приложение

Наш инструмент и Selenium дополняют друг друга; например, если какая-то кнопка на одном из экранов поменяла свое местоположение – Selenium это может не отследить, но наш инструмент заметит, т.к. делает попиксельное сравнение скриншота с эталоном. Также инструмент в состоянии отследить проблемы с обработкой ввода с клавиатуры или мыши, так как именно их он и воспроизводит.

Тесты на обоих инструментах (нашем и Selenium) запускают типовые сценарии работы из наших прикладных решений. Тесты автоматически запускаются после ежедневной сборки платформы «1С:Предприятие». В случае замедления работы сценариев (по сравнению с предыдущей сборкой) мы проводим расследование и устраняем причину замедления. Критерий у нас простой – новая сборка должна работать не медленнее предыдущей.

Для расследования инцидентов замедления работы разработчики используют разные инструменты; в основном используется Dynatrace AJAX Edition производства компании DynaTrace . Проводится запись логов выполнения проблемной операции на предыдущей и на новой сборке, затем логи анализируются. При этом время выполнения единичных операций (в миллисекундах) может не быть решающим фактором – в браузере периодически запускаются служебные процессы типа уборки мусора, они могут наложиться на время выполнения функций и исказить картину. Более релевантными параметрами в этом случае будет количество выполненных инструкций JavaScript, количество атомарных операций над DOM и т.п. Если количество инструкций/операций в одном и том же сценарии в новой версии увеличилось – это почти всегда означает падение быстродействия, которое нужно исправлять.

Также одной из причин падения производительности может быть то, что Google Closure Compiler по какой-то причине не смог сделать inline-подстановку функции (например, потому что функция рекурсивная или виртуальная). В этом случае мы стараемся исправить ситуацию, переписав исходный код.

Расширения браузеров

В случае, когда прикладному решению нужна функциональность, которой нет в JavaScript, мы используем расширения браузеров:
  • для работы с файлами
  • для работы с криптографией
  • работа с внешними компонентами
Наши расширения состоят из двух частей. Первая часть – то, что называется расширением браузера (как правило, написанные на JavaScript расширения для Chrome и Firefox), которые взаимодействуют со второй частью - бинарным расширением, реализующим нужную нам функциональность. Надо упомянуть, что мы пишем 3 версии бинарных расширений – под Windows, Linux и MacOS. Бинарное расширение поставляется в составе платформы 1С:Предприятие и находится на сервере приложений 1С. При первом вызове с веб-клиента оно загружается на клиентский компьютер и устанавливается в браузере.

При работе в Safari наши расширения используют NPAPI, при работе в Internet Explorer - технологию ActiveX. Microsoft Edge пока не поддерживает расширения, поэтому веб-клиент в нем работает с ограничениями.

Дальнейшее развитие

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

Другие задачи - развитие архитектуры, рефакторинг, повышение производительности и надежности. Например, одно из направлений – дальнейшее движение в сторону асинхронной модели работы. Часть функциональности веб-клиента на настоящий момент построена на синхронной модели взаимодействия с сервером. Асинхронная модель сейчас становится в браузерах (и не только в браузерах) более актуальной, и это заставляет нас модифицировать веб-клиент путем замены синхронных вызовов на асинхронные (и соответствующего рефакторинга кода). Постепенный переход к асинхронной модели объясняется необходимостью поддержки выпущенных решений и постепенной их адаптации.

Теги: Добавить метки

В данной статье я подробно опишу процесс организации веб- доступа к базам данных «1С:Предприятие» 8.3 на веб-сервере IIS (Internet Information Server), входящего в поставку Microsoft Windows Server. Для более старых версий «1С:Предприятие» (8.1 и 8.2 ) алгоритм публикации баз данных в целом аналогичен. Будет рассмотрен алгоритм настройки IIS для работы «1С:Предприятие», а также описан процесс публикации баз данных на веб-сервере как для 32-разрядного , так и для 64-разрядного модуля расширения веб-сервера.

1. Что понадобится

  1. Компьютер отвечающий для работы веб-сервера под управлением одной из операционных систем:
  2. Права локального администратора на данном компьютере.
  3. Дистрибутив для установки компонент «1С:Предприятие». Для настройки 64-разрядного модуля расширения веб-сервера, дистрибутив для установки 64-разрядного сервера «1С:Предприятие». В данном примере используется версия 8.3.4.389 . Для более старых версий «1С:Предприятие» (8.1 и 8.2 ) алгоритм публикации баз данных в целом аналогичен.

2. Установка веб-сервера IIS

Устанавливаем веб-сервер Internet Information Server, который по умолчанию входит в поставку Microsoft Windows Server. При установке обязательно выбираем компоненты:

  • Общие функции HTTP (Common HTTP Features)
    • Статическое содержимое (Static Content)
    • Документ по умолчанию (Default Document)
    • Обзор каталогов (Directory Browsing)
    • Ошибки HTTP (HTTP Errors)
  • Разработка приложений (Application Development)
    • ASP.NET 3.5
    • Расширяемость.NET 3.5 (.NET Extensibility 3.5)
    • Расширения ISAPI (ISAPI Extensions)
    • Фильтры ISAPI (ISAPI Filters)
  • Исправление и диагностика (Health and Diagnostics)
    • Ведение журнала HTTP (HTTP Logging)
    • Монитор запросов (Request Monitor)
  • Средства управления (Management Tools)
    • Консоль управления IIS (IIS Management Console)

Подробно про процесс развертывания веб-сервера IIS я писал:

  • В Microsoft Windows Server 2012 (R2) — . IIS версии 8, после установки должны увидеть страницу Default Web Site вида:

  • В Microsoft Windows Server 2008 (R2) — . IIS версии 7, после установки должны увидеть страницу Default Web Site вида:

3. Установка компонент «1С:Предприятие»

На этот же сервер, где развернут веб-сервер IIS, (32-разрядные компоненты) обязательно выбрав при установке компоненты:

  • 1С:Предприятие
  • Модули расширения веб-сервера

Если планируется настроить 64-разрядный модуль расширения веб-сервера, то необходимо дополнительно запустить из соответствующей поставки «1С:Предприятие» и установить компоненту:

  • Модуль расширения веб-сервера

4. Настройка операционной системы

Теперь необходимо установить необходимые права на ключевые папки, используемые при работе веб-доступа к базам данных «1С:Предприятие». Для каталога хранения файлов веб-сайтов, опубликованных на веб-сервере (по умолчанию C:\inetpub\wwwroot\ ) необходимо дать полные права группе «Пользователи » (Users). В принципе, этот шаг можно пропустить, но тогда для публикации или изменения публикации базы данных надо будет запускать «1С:Предприятие» от имени администратора. Для настройки безопасности данного каталога, кликаем по нему правой кнопкой мыши и в контекстном меню выбираем «Свойства » (Properties).

В открывшемся окне свойств, переходим на вкладку «Безопасность » (Security) и нажимаем кнопку «Изменить » (Edit…), для изменения действующих разрешений. Появится окно разрешений для данного каталога. В списке Групп или пользователей (Groups or user names) выделим группу «Пользователи » (Users) и в списке разрешений для выбранной группы установим флаг «Польный доступ » (Full control). Затем нажмем «Применить » (Apply) для записи изменений и закроем все окна при помощи кнопки «ОК ».

Далее необходимо дать полные права на каталог с установленными файлами «1С:Предприятие» (по умолчанию C:\Program Files (x86)\1cv8\ для 32-разрядного модуля расширения и C:\Program Files\1cv8\ для 64-разрядного) группе IIS_IUSRS . Для этого выполняем аналогичные описанным выше действия, с той лишь разницей, что для того чтобы необходимая группа появилась в списке «Группы или пользователи » (Groups or user names) необходимо нажать расположенную под списком кнопку «Добавить » (Add..), а в окне выбора групп или пользователей нажать «Дополнительно » (Advanced…).

Затем нажимаем расположенную справа кнопку «Поиск » (Find Now), после чего выбираем необходимую группу IIS_IUSRS в таблице результатов поиска и нажимаем «ОК ».

Группа IIS_IUSRS появится в списке групп или пользователей. Даем ей полные права на на выбранную директорию и нажимаем «Применить » (Apply) для сохранения изменений.

Ну и наконец, если публикация выполняется для файловой базы, необходимо также дать группе IIS_IUSRS полные права на каталог с расположенными файлами данной информационной базы.

5. Публикация базы данных на веб-сервере

Переходим к непосредственной публикации базы данных на веб-сервере. Для этого запускаем «1С:Предприятие» в режиме Конфигуратор для той базы, которую требуется опубликовать. Затем в меню выбираем «Администрирование » — «Публикация на веб-сервере… »

Откроется окно настройки свойств публикации на веб-сервере. Основные поля необходимые для публикации уже заполнены по умолчанию:

  • Имя виртуального каталога — имя по которому будет происходить обращение к база данных на веб-сервере. Может состоять только из символов латинского алфавита.
  • Веб сервер — выбирается из списка найденных на текущем компьютере веб-серверов. В нашем случае это Internet Information Services.
  • Каталог — физическое расположение каталога, в котором будут располагаться файлы виртуального приложения.
  • Соответствующими флагами можно указать типы клиентов для публикации, а также указать возможность публикации Web-сервисов. В расположенной ниже таблице можно отредактировать список Web-сервисов которые будут опубликованы, а также в столбце «Адрес » изменить синоним, по которому будет происходить обращение к данному Web-сервису.
  • Также для веб-сервера IIS есть возможность указать необходимость выполнения аутентификации на веб-сервере средствами ОС, установив соответствующий флаг.

Выбрав необходимые настройки публикации нажимаем «Опубликовать ».

Если публикация прошла без ошибок, увидим соответствующее сообщение.

Публикация на веб-сервере IIS всегда выполняется для веб-сайта по умолчанию и для пула приложения по умолчанию. Стоит иметь ввиду, что при выполнении публикации из конфигуратора будет зарегистрирован 32-разрядный модуль расширения веб-сервера, а используемый по умолчанию пул приложений — DefaultAppPool — без настройки работает только с 64-разрядными приложениями. Соответственно, дальнейшие действия зависят от разрядности модуля расширения веб-сервера, который планируется использовать. Для 32-разрядного модуля расширения веб-сервера, необходимо разрешить пулу приложений использовать 32-разрядные приложения, либо же зарегистрировать 64-разрядный модуль расширения веб-сервера. Об этом пойдет речь ниже

6. Настройка IIS для использования 32-разрядного модуля расширения веб-сервера

Средства » (Tools) — «Диспетчер служб IIS

Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которое мы задавали при публикации базы данных. Для завершения публикации осталось только разрешить 32-разрядные приложения для пула приложений по умолчанию. Для этого перейдем в дереве подключений на вкладку «Пулы приложений » (Application Pools).

В списке пулов приложений найдем пул с именем DefaultAppPool . Кликнем по нему правой кнопкой мыши и в контекстном меню выберем пункт «Дополнительные параметры » (Advanced Settings).

В открывшемся окне параметров пула приложения, в группе «Общие » (General) найдем пункт «Разрешены 32-разрядные приложения » (Enable 32-Bit Applications) и установим значение параметра равным True . Затем сохраним изменения нажав «ОК ».

7. Настройка IIS для использования 64-разрядного модуля расширения веб-сервера

Зарегистрировать 64-разрядный модуль расширения веб-сервера можно с помощью утилиты webinst.exe соответствующей версии, расположенной в каталоге bin , каталога с установленной программой «1С:Предприятие», либо воспользоваться приведенным ниже способом.

Запустим Диспетчер служб IIS (Internet Information Services (IIS) Manager). Сделать это можно из Диспетчера серверов (Server Manager) выбрав в меню пункт «Средства » (Tools) — «Диспетчер служб IIS » (Internet Information Services (IIS) Manager).

Здесь, развернув дерево в окне подключений, увидим, что для веб-сайта по умолчанию — Default Web Site — появился преобразованный в приложение виртуальный каталог с именем, которым мы задавали при публикации базы данных. Для завершения публикации осталось только указать данному приложению использовать 64-разрядный обработчик запросов. Для этого откроем страницу настройки сопоставления обработчиков для данного виртуально каталога, выбрав пункт «Сопоставление обработчиков » (Handler Mappings) на начальной странице приложения.

В таблице сопоставлений обработчиков найдем обработчик «1С Web-service Extension». Откроем данный обработчик, кликнув 2 раза по соответствующей строке в таблице.

Отредактируем обработчик, заменив путь к исполняемой dll 32-разрядного модуля расширения веб-сервера, который выбран в данный момент, на путь к 64-разрядной версии библиотеки. В данном примере меняем путь c «C:\Program Files (x86)\1cv8\8.3.4.389\bin\wsisapi.dll » на «C:\Program Files\1cv8\8.3.4.389\bin\wsisapi.dll » воспользовавшись кнопкой выбора. Изменив путь нажимаем «ОК » для сохранения изменений.

8. Подключение к опубликованной информационной базе через веб-браузер

Ну вот вроде и все. Для подключений к только что опубликованной базе данных, запускаем Internet Explorer, и в строке адреса вводим путь вида http://localhost/<Имя публикации информационной базы> . В данном примере это http://localhost/DemoAccounting/.

К данной информационной базе также можно подключиться и с любого компьютера в сети, обратившись к веб-серверу по его внутреннему (или если прокинут порт 80 , по внешнему) IP-адресу.

В этом случае, для корректной работы «1С:Предприятие», имя домена, на который идет обращение (или IP-адрес) должен быть добавлен в надежные узлы Internet Explorer, а также для него должны быть разрешены всплывающие окна. Подробнее про настройку Internet Explorer для работы веб-клиента «1С:Предприятие» читайте .

9. Подключение к опубликованной информационной базе через клиент «1С:Предприятия»

К опубликованной на веб-сервере информационной базе можно подключиться и с помощью тонкого клиента «1С:Предприятия». Для подключения откроем окно запуска «1С:Предприятие» и нажмем кнопку «Добавить » для добавления информационной базы.

В окне добавления информационной базы/группы установим переключатель в «Добавление в список существующей информационной базы » и нажмем «Далее ».

Введем имя базы данных, как она будет отображаться в списке информационных баз (должно быть уникальным для данного списка), тип расположения выберем «На веб-сервере » и нажмем «Далее ».

Вводим строку адреса для подключения к информационной базе (без префикса /ru_RU/). Также здесь можно указать параметры прокси-сервера (если есть) и способ аутентификации на веб-сервере. Указав необходимые настройки снова жмем «Далее ».

Указываем параметры запуска для информационной базы и нажимаем «Готово » для завершения работы мастера.

После чего данная информационная база появится в списке баз окна запуска «1С:Предприятие». Обратим внимание что режим запуска Конфигуратор недоступен для данного типа подключения. Нажимаем «1С:Предприятие » для подключения к информационной базе.

10. Конфигурационные файлы виртуального каталога

Рассмотрим подробнее структуру файлов, которые были созданы в процессе публикации. Если веб-доступ к опубликованной информационной базе по каким-то причинам не заработал, конфигурационные файлы можно отредактировать вручную, для достижения желаемого результата (конфигурационные файлы из данной статьи для 64-разрядного модуля расширения веб-сервера можно скачать ).

Перейдем в каталог, который мы указывали во время публикации базы данных. В нем увидим два файла:

  • default.vrd
  • web.config

Оба файла доступны для просмотра и редактирования с помощью любого текстового редактора, например программы «Блокнот» (Notepad). Рассмотрим структуру этих файлов подробнее.

10.1. Файл default.vrd

В файле default.vrd описываются опубликованные Web-сервисы (элемент ), а также указывается имя виртуального приложения (атрибут base ) и строка подключения к информационной базе «1С:Предприятие» (атрибут ib ). В данном примере для файловой информационной базы, строка подключения будет следующей:

Ib="File="C:\1C_BASE\DemoAccounting";"

Как видно из примера, если в строке подключения встречаются символы, недопустимые с точки зрения стандарта XML (http://www.w3.org/TR/xml11/), они должны быть заменены соответствующим образом.

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

Ib="File="C:\1C_BASE\DemoAccounting";Usr=Продавец;Pwd=123;"

Для строка подключения будет иметь вид:

Ib="Srvr="WIN2012"e;;Ref="e;Accounting"e;;"

Где WIN2012 — имя кластера серверов «1С:Предприятие», а Accounting — имя базы данных в кластере.

Подробнее про структуру данного файла можно почитать в книге «Руководство администратора» 2-е издание, Приложение 2, глава 3.12.

10.2. Файл web.config

Файл web.config — это файл, определяющий параметры для ASP.NET web-приложения. В каждом web-приложении должен быть файл web.config , находящийся в его корневом каталоге. Наш виртуальный каталог не является исключением. В текущем файле содержатся данные об обработчике «1С Web-service Extension», обрабатывающем запросы к данному приложению. Обработчик настроен таким образом, что все запросы передаются библиотеке wsisapi.dll , расположенной в каталоге bin , каталога с файлами «1С:Предприятие». В случае использования серверных информационных баз, версия библиотеки должна соответствовать версии кластера серверов «1С:Предприятия».

Данный обработчик можно найти (или добавить, если его нет) в Диспетчере служб IIS. Для этого необходимо выделить вкладку с текущим приложением и в окне свойств выбрать пункт «Сопоставления обработчиков » (Handler Mappings).

В таблице сопоставлений обработчиков увидим наш обработчик «1С Web-service Extension». Если такого обработчика в списке нет, его следует добавить выбрав в окне «Действия » (Actions) пункт «Добавление сопоставления сценария с подстановочными знаками » (Add Wildcard Script Map…).

При добавлении вводим имя обработчика и указываем путь к файлу wsisapi.dll . Данные параметры можно изменить и для действующего обработчика выбрав пункт «Изменить… » (Edit…) в окне списка действий.

Необходимо также убедиться, что для обработчика стоит флаг «Выполнение » (Execute) в окне изменений разрешений функции. Вызвать данное окно можно выбрав пункт «Изменение разрешений функции… » (Edit Feature Permissions…) в окне «Действия » (Actions).

Помогла ли Вам данная статья?

Понадобилось сделать вход в 1С 8.2 базу через интернет, посредством браузера. Раньше ничего такого не реализовывал, поэтому решил ознакомится и сделать. Версия платформы 8.2 может работать в режиме тонкого клиента, толстого клиента(нужна клиентская часть) и как веб-приложение, то есть практически в любом современном браузере. Начать решил с настройки IIS и подготовки необходимых файлов. Знаю, что 1С можно настраивать и в связке с Apache. Об этом написано много статей.

Весь процесс по подготовке связки 1С — IIS производился в 2 этапа:
1. Установка и настройка IIS
2. Установка 1С 8.2 и публикация базы на веб-сервере

После установки IIS все настройки у меня остались по умолчанию. IIS устанавливался на имеющийся сервер Win 2003. Корневой каталог оказался в директории C:\Inetpub\wwwroot\

Вот так у меня выглядела консоль приложений и диспетчер служб IIS, дальше создается папочка 1cv8, хотя Вы вправе ее называть как захотите.


Особых настроек для этой папки не требуется.


Так выглядят настройки веб-узла поумолчанию

Содержимое файла default.vrd:

XHTML

где
ИМЯ_СЕРВЕРА:ПОРТ — название сервера на котором стоит база 1С, у меня одновременно установлены платформы 8.1 и 8.2, причем для 8.2 используется порт 1641
НАЗВАНИЕ_БАЗЫ — имя базы на сервере 1С 8.2

Этот файл, как я узнал позже автоматически создается после публикации базы на сервере, поэтому не обязательно создавать его вручную:)

Далее необходимо на этот же компьютер где и установлен IIS установить 1С платформу, а при установке поставить галочку на веб-расирение. После установки платформы в соответствующем программном каталоге у Вас должен появится файл wsisapi.dll который отвечает за расширение веб-служб iis.


Подключаем этот файл в консоли управления IIS в расширениях веб-служб<


Производим публикацию базы.