Конструктор не обнаружен 1с веб клиент
Есть терминальный сервер, есть сервер MSSQL и Сервер 1С. Все подключаются через тонкий клиент к терминалу, а сервер 1С выдает ключи. Но при подключении через браузер - ключей не видно. Ошибка гласит:
Что самое интересное, ошиба на ключ происходит до открытия формы авторизации. Когда как обычно, когда ключи не видно - ошибка происходит уже после авторизации.
Что самое интересное, ошиба на ключ происходит до открытия формы авторизации. Когда как обычно, когда ключи не видно - ошибка происходит уже после авторизации.
При веб-доступе после ввода логина/пароля вы можете поймать проблему отсутствия свободных лицензий. Когда веб-сервер не видит сервер лицензирования, то он сразу об этом говорит.
Далее проверьте в консоли кластера название центрального компьютера (на котором крутится менеджер лицензирования) и доступность этого названия с компьютера веб-сервера. Я встречался и с такой ситуацией - помогает прописывание соответствие имени и IP адреса в файлике hosts.
Третий вариант который мне приходит в голову и который я видел на практике - фаервол на сервере блокирует порт по которому расширение веб-сервера пытается подключится к кластеру. Помогло изменение правил.
Веб сервер на терминальном стоит.
nethasp.ini лежит в C:\Program Files\1cv82\conf, стандартная конфигурация
лицензии выдает именно сервер приложений, отдельная машинка с MSSQL. Но вот веб клиент не видит ни nethasp, который лежит я уже сказал где, ни менеджера лицензий.
м.б. в апачи где то дело? Прав не хватает?
И разве веб клиент использует какой то свой порт, когда он подключается к скулю? Ведь тонкие клиенты работают.
Проблема с правами доступа возникает насколько мне известно только при использовании веб-сервера поверх файловой базы - явно не ваш вариант.
Как вы подключаетесь тонким клиентом? Напрямую к серверу? Сделай подключение в тонком через веб - будет ли проблема с ключем в этом случае? Если да, то попробуйте в качестве эксперимента в настройках стартера использование аппаратной лицензии - возможно есть другие проблемы, которые замаскированы ключем. А еще лучше было бы включить логирование и посмотреть эксепшены.
>И разве веб клиент использует какой то свой порт, когда он подключается к скулю? Ведь тонкие клиенты работают.
Вы написали, что все работают на терминальном сервере. Если бы веб-сервер у вас был в стороне, то могла бы быть проблема в правилах фаервола.
Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.
Особенности
Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.
Убедиться в причине ошибки возможно, если посмотреть логи системы.
Устранение:
- на сервере убиваем excel (taskkill /im excel.exe /f)
- открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
- в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
- справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.
Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае
- Запускаем REGEDIT
- Открываем ветку Computer\HKEY_CLASSES_ROOT\AppID\EXCEL.EXE, если ее нет, то создаем
- Создаем в ней строковый параметр AppID =
- Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
- После этого в Component Services должен появиться «Microsoft Excel Application»
Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.
Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.
Так что нельзя однозначно сказать, что же решило проблему.
Заключение
В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.
В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.
Бывает такое: вы прописываете для компонента пользователя и пароль.
Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.
Восторженное отношение жены к работе мужа — лучшая реклама его деятельности.
— Дороти Карнеги
В этом варианте работы пользователь, в общем случае, взаимодействует с информационной базой по следующей схеме:
На одном из компьютеров локальной сети расположен кластер серверов «1С:Предприятия 8». На другом компьютере расположена система управления базами данных, в которой хранится клиент-серверная информационная база. В сети Интернет существует веб-сервер, на котором опубликован веб-клиент этой базы.
Пользователь запускает браузер и вводит адрес веб-сервера, на котором опубликован веб-клиент информационной базы. Веб-клиент «приезжает» к нему на компьютер и начнет исполняться в среде браузера. На компьютере пользователя исполняется код на встроенном языке в контексте клиента. На компьютере кластера серверов исполняется код в контексте сервера.
Развертывание на компьютере разработчика
-
, содержащую кластер серверов; , поддерживаемую платформой; — по желанию, вы можете использовать один из встроенных веб-серверов 1C:EDT или установить собственный; .
Предупреждение: При работе в ОС macOS возможен единственный вариант — с использованием кластера, существующего в локальной сети, т. к. кластер работает только под управлением операционных систем Windows и Linux.
-
новую клиент-серверную базу; ее конфигурацию в новый проект; базу на веб-сервере; в проект нужные вам объекты конфигурации и алгоритмы; веб-клиента, имитируя работу пользователя.
Для отладки в этом варианте работы требуется дополнительная настройка (подробнее).
Когда конфигурация готова, вы можете создать CF-файл конфигурации, DT-файл информационной базы, собрать их в комплект поставки и создать дистрибутив (подробнее).
Установка платформы «1С:Предприятие 8»
Для разных операционных систем минимальный набор компонентов следующий:
- 1С:Предприятие (содержит конфигуратор и веб-клиента);
- Сервер 1С:Предприятия 8 ;
- Модули расширения веб-сервера .
- common ;
- client ;
- server (т. к. client зависит от server );
- ws .
При запуске 1C:EDT самостоятельно находит и добавляет в свои настройки все версии платформы, которые установлены на компьютере. Если этого не произошло или если вы устанавливали платформу в то время, когда 1C:EDT была запущена, вы можете самостоятельно добавить новую версию платформы в параметрах 1C:EDT .
Для администрирования кластера (в любой операционной системе) начиная с версии платформы 8.3.15 вы можете использовать стандартную функцию Управление серверами . Она доступна в любом прикладном решении в режиме 1С:Предприятие — Главное меню > Все функции > Стандартные > Управление серверами .
Возможная проблема: Если команда Все функции отсутствует, включите ее видимость — Главное меню > Настройки > Параметры. > Отображать команду «Все функции» .
В платформе 8.3.14 такая стандартная функция отсутствует, но вы можете использовать аналогичную универсальную обработку Управление серверами . Эту обработку можно запустить в любом прикладном решении.
Про администрирование кластера в более ранних версиях платформы вы можете прочитать в документации 1С:Предприятие 8.3. Клиент-серверный вариант. Руководство администратора.
Установка системы управления базами данных
Вам нужно будет установить одну из СУБД, работу с которыми поддерживает платформа «1С:Предприятие 8». Подробнее вы можете прочитать в документации «1С:Предприятие 8.3. Клиент-серверный вариант. Руководство администратора».
Установка веб-сервера
- Встроенный Apache 2.4 — веб-сервер, входящий в состав 1C:EDT ,
- 1С:Линк — веб-сервер, расположенный в сервисе 1С:Линк. 1C:EDT интегрирована с сервисом 1С:Линк и позволяет вам публиковать свои информационные базы на этом сервисе.
Если вы используете ОС macOS или если по каким-то причинам встроенные веб-серверы вас не устраивают, вам нужно будет установить один из веб-серверов, работу с которыми поддерживает платформа «1С:Предприятие 8». Подробнее вы можете прочитать в документации «1С:Предприятие 8.3. Руководство администратора».
При запуске 1C:EDT самостоятельно находит и добавляет все веб-серверы, которые установлены на компьютере.
Если вы устанавливали веб-сервер в то время, когда 1C:EDT была запущена, перейдите в панель Веб-серверы и нажмите в ее командной панели.
Если 1C:EDT не смогла добавить веб-сервер автоматически, вы можете добавить его вручную.
Установка браузера
Вам нужно будет установить один из браузеров, работу с которыми поддерживает платформа «1С:Предприятие 8». Подробнее вы можете прочитать в документации «1С:Предприятие 8.3. Руководство администратора».
Кроме этого необходимо выполнить некоторые настройки браузера - «Настройка веб-браузеров для работы в веб-клиенте».
Другие варианты развертывания
Если в вашей локальной сети установлена подходящая СУБД, вы можете не устанавливать СУБД на своем компьютере. Информационную базу вы создадите в
В этом случае предметы отладки ( Веб-клиент , Сервер ) будут исполняться на вашем компьютере.
Если в вашей локальной сети установлен кластер серверов «1С:Предприятия 8», вы можете не устанавливать на своем компьютере кластер и СУБД. Информационную базу вы создадите в имеющемся кластере.
В этом случае Веб-клиент будет исполняться на вашем компьютере, а Сервер будет исполняться на том компьютере, на котором работает кластер серверов.
Как выяснилось не все 1С-разработчики в курсе, что выполнять отладку можно и при запуске конфигурации в режиме web-клиента. Ведь как оно бывает, в толстом и тонком клиенте все работает нормально, а при работе через браузер начинают появляться разного рода подводные камни.
Если такие проблемы обнаружились, то лучший способ от них избавиться – пройтись по коду отладчиком. Правда здесь есть один нюанс. После публикации приложения на web-сервере, в окне «Подключение отладки» не отображается сеанс, открытый из веб-клиента.
Мой приятель столкнулся с подобной проблемой и был уверен, что отладка при работе в режиме веб-клиента в «1С:Предприятие» в принципе невозможна. А ведь на самом деле это заблуждения. Выполнять отладку можно стандартными средствами.
Как выполнить отладку в режиме веб-клиента
Первым делом выполняем публикацию на веб-сервере (я для разработки использую Apache). Следующим шагом запускаем браузер и вбиваем url для доступа к базе:
Например, у меня у меня решение опубликовано под именем test, следовательно в моем случае url будет таким:
Если все указали правильно, то попадете на стартовую форму своей конфигурации. Вводите логин/пароль, а затем возвращаетесь в конфигуратор. В главном меню выбираете пункт «Отладка» -> «Подключение» и выбираете предмет отладки «Веб-клиент». Дальше процесс отладки выполняете в обычном режиме.
А можно и по-другому
Это далеко не единственный способ выполнять отладку веб-клиента. Указать параметры для отладчика можно:
Если не работает
Первый способ у меня работает всегда. Вот при указании URL в окне публикации решения часто возникали мистические странности. Конфигуратор периодически отказывался находить предмет отладки. Решить проблему помогал перезапуск веб-сервера. В итоге чаще я пользуюсь первым способом.
Ах, да, чуть не забыл. Если вы работаете в клиент-серверном режиме, то убедитесь, что сервер «1С:Предприятие» запущен в отладочном режиме (применяется ключ debug).
Одной из приятных особенностей технологии 1С:Предприятие является то, что прикладное решение, разработанное по технологии управляемых форм, может запускаться как в тонком (исполняемом) клиенте под Windows, Linux, MacOS X, так и как веб-клиент под 5 браузеров – Chrome, Internet Explorer, Firefox, Safari, Edge, и все это – без изменения исходного кода приложения. Более того – внешне приложение в тонком клиенте и в браузере функционирует и выглядит практически идентично.
Найдите 10 отличий (под катом 2 картинки):
Окно тонкого клиента на Linux:
То же окно в веб клиенте (в браузере Chrome):
Зачем мы сделали веб-клиент? Говоря несколько пафосно, такую задачу перед нами поставило время. Уже давно работа через Интернет стала необходимым условием для бизнес-приложений. Вначале мы добавили возможность работы через Интернет для нашего тонкого клиента (некоторые наши конкуренты, кстати, на этом и остановились; другие, напротив, отказались от тонкого клиента и ограничились реализацией веб-клиента). Мы же решили дать нашим пользователям возможность выбрать тот вариант клиента, который им подходит больше.
Добавление возможности работы через Интернет для тонкого клиента было большим проектом с полной сменой архитектуры клиент-серверного взаимодействия. Создание же веб-клиента — и вовсе новый проект, начинавшийся с нуля.
Постановка задачи
Итак, требования к проекту: веб-клиент должен делать то же самое, что и тонкий клиент, а именно:
- Отображать пользовательский интерфейс
- Исполнять клиентский код, написанный на языке 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:
- WebTools – общие библиотеки, используемые остальными проектами (сюда же мы включаем Google Closure Library).
- Элемент управления ФорматированныйДокумент (реализован на JavaScript и в тонком клиенте, и в веб-клиенте)
- Элемент управления Планировщик (реализован на JavaScript и в тонком клиенте, и в веб-клиенте)
- Веб-клиент
Структурно веб-клиент по-крупному разделяется на следующие подсистемы:
- Управляемый интерфейс клиентского приложения
- Общий интерфейс приложения (системные меню, панели)
- Интерфейс управляемых форм, включающий, в том числе, около 30 элементов управления (кнопки, различные типы полей ввода – текстовые, цифровые, дата/время и пр., таблицы, списки, графики и т.д.)
- Работа с криптографией
- Работа с файлами
- Технология внешних компонент, позволяющая их использовать как в тонком, так и веб-клиенте
Особенности разработки
Реализация всего вышеописанного на JavaScript – дело непростое. Возможно, веб-клиент 1С – одно из самых больших client-side приложений, написанных на JavaScript – около 450.000 строк. Мы активно используем в коде веб-клиента объектно-ориентированный подход, упрощающий работу с таким большим проектом.
Для минимизации размера клиентского кода мы вначале использовали свой собственный обфускатор, а начиная с версии платформы 8.3.6 (октябрь 2014) стали использовать Google Closure Compiler. Эффект использования в цифрах – размер фреймворка веб-клиента после обфускации:
- Собственный обфускатор – 1556 кб
- Google Closure Compiler – 1073 кб
Google Closure Compiler очень хорошо работает с объектно-ориентированным кодом, поэтому его эффективность именно для веб-клиента максимально высокая. Closure Compiler делает для нас несколько хороших вещей:
- Статическая проверка типов на этапе сборки проекта (обеспечивается тем, что мы покрываем код аннотациями JSDoc). В итоге получается статическая типизация, очень близкая по уровню к типизации в С++. Это помогает отловить достаточно большой процент ошибок на стадии компиляции проекта.
- Уменьшение размера кода через обфускацию
- Ряд оптимизаций выполняемого кода, например, такие как:
- inline-подстановки функций. Вызов функции в JavaScript – достаточно дорогая операция, и inline-подстановки часто используемых небольших методов существенно ускоряют работу кода.
- Подсчет констант на этапе компиляции. Если выражение зависит от константы, в него будет подставлено фактическое значение константы
Для анализа кода мы используем SonarQube, куда интегрируем статические анализаторы кода. С помощью анализаторов мы отслеживаем деградацию качества исходного кода на JavaScript и стараемся ее не допускать.
Какие задачи решали/решаем
В ходе реализации проекта мы столкнулись с рядом интересных задач, которые нам пришлось решать.
Обмен данными с сервером и между окнами
Существуют ситуации, когда обфускирование исходного кода может помешать работе системы. Код, внешний по отношению к исполняемому коду веб-клиента, вследствие обфускации может иметь имена функций и параметров, отличающиеся от тех, которые наш исполняемый код ожидает. Внешним кодом для нас является:
- Код, приходящий с сервера в виде структур данных
- Код другого окна приложения
А чтобы избежать обфускации при взаимодействии с другими окнами мы используем так называемые экспортируемые интерфейсы (интерфейсы, у которых все методы являются экспортируемыми).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 и т.п. Если количество инструкций/операций в одном и том же сценарии в новой версии увеличилось – это почти всегда означает падение быстродействия, которое нужно исправлять.
Расширения браузеров
В случае, когда прикладному решению нужна функциональность, которой нет в JavaScript, мы используем расширения браузеров:
- для работы с файлами
- для работы с криптографией
- работа с внешними компонентами
При работе в Safari наши расширения используют NPAPI, при работе в Internet Explorer — технологию ActiveX. Microsoft Edge пока не поддерживает расширения, поэтому веб-клиент в нем работает с ограничениями.
Дальнейшее развитие
Одна из групп задач для команды разработки веб-клиента – это дальнейшее развитие функциональности. Функциональность веб-клиента должна быть идентична функциональности тонкого клиента, вся новая функциональность реализуется одновременно и в тонком, и в веб-клиенте.
Другие задачи — развитие архитектуры, рефакторинг, повышение производительности и надежности. Например, одно из направлений – дальнейшее движение в сторону асинхронной модели работы. Часть функциональности веб-клиента на настоящий момент построена на синхронной модели взаимодействия с сервером. Асинхронная модель сейчас становится в браузерах (и не только в браузерах) более актуальной, и это заставляет нас модифицировать веб-клиент путем замены синхронных вызовов на асинхронные (и соответствующего рефакторинга кода). Постепенный переход к асинхронной модели объясняется необходимостью поддержки выпущенных решений и постепенной их адаптации.
Читайте также: