No Image

Указанного модуля который требуется для данного обработчика

СОДЕРЖАНИЕ
3 просмотров
11 марта 2020

Пытаюсь опубликовать 1С на IIS, получаю вот такую ошибку

"Ошибка HTTP 500.21 – Internal Server Error

Обработчик "1C Web-service Extension" содержит поврежденный модуль "IsapiModule" в списке модулей"

У меня такая проблемы была когда была 32-х битная 1С и 64-х битная операционная система, IIS соответственно тоже был 64-х битный. Чтобы заработало нужно в настройках IIS разрешить использовать 32-х битный IsapiModule. Пока доступа к тому серверу нет, точно не скажу где искать эту настройку, но если очень нужно – вечером могу глянуть.

Данную статью-инструкцию решено было написать для помощи моим друзьям и коллегам по работе, так как большинство из них не сталкивалось с настройкой веб синхронизации в MS SQL, и я надеюсь, что она позволит избежать некоторых мелких проблем, с которыми столкнулся я сам при настройке. Надеюсь и вам, уважаемое хабрасообщество, она может пригодиться.

Информация по настройке в интернете имеется, но как мне показалось, что все очень разрознено и по большей части нет практической части в настройке. Возможно плохо искал.

Зачем и для чего

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

Почему бы не настроить репликацию с белыми IP или через VPN:

  1. Провайдер не предоставляет белый IP.
  2. Используется мобильный интернет с плохой скоростью.
  3. При использовании PPTP провайдеры блокируют GRE.
  4. VPN имеет особенность обрываться, хоть и после восстанавливает соединение.
  5. Из-за незначительной потери связи агент SQL Server не всегда успевает соединиться с подписчиком, и следующая попытка идет по расписанию через некоторое время, при не частой синхронизации это может быть достаточно критично.
  6. При большом количестве публикаций и подписчиков соединяющихся с сервером, опять же агент не всегда «успевает» соединиться с подписчиком. Помогает обычно настройка расписания для того, чтоб синхронизация не проходила для всех в одно время, что тоже не всегда удобно.

При работе с веб-синхронизацией в репликации слиянием синхронизация данных идет по HTTPS и обновления отсылаются в виде XML, это позволит избежать проблемы, описанные выше, возможно не все, но все же:

  1. Нам не требуется постоянный IP и соответственно пользователь не привязан к рабочему месту и может быть со своим ноутбуком где угодно.
  2. Соединение использует безопасный протокол.
  3. Маловероятно, что провайдером будет блокироваться порт 443.
  4. При медленном интернет соединении синхронизация проходит быстрее и обрывов по моим наблюдениям гораздо меньше.
  5. Агент слияния располагается на подписчике, что снижает нагрузку на сам сервер.

По своей работе очень часто приходится сталкиваться с репликацией слиянием, репликацию настраиваем для одной товаро-учетной системы болгарского разработчика. В основном вся настройка репликации у нас сводится с использованием белых IP адресов и пробросом порта 1433 наружу или настройкой VPN канала, а тут уже каждый настраивает по своим возможностям и знаниям.

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

Второй вариант уже более безопасный (хоть и не всегда), но требует от партнеров, которые занимаются автоматизацией больших знаний в настройке, в основном используются Hamachi, SoftEther или следующими по полярности это OpenVPN или функционал Windows Server (в основном PPTP).

Сам по большей части до поры до времени использовал при работе с репликацией возможности Windows Server (SSTP) иили OpenVPN.

Подготовка

Работать с веб-синхронизацией можно начиная с MS SQL 2005 и старше, на центральном сервере потребуется редакция Standard или старше, для подписчика достаточно Express редакции.

В данном примере используются:

Настройка IIS

  1. В первую очередь подготовим IIS для работы, создадим каталог для сервиса C:inetpubwwwrootWebSQL. Если на сервере предполагается работа с несколькими публикациями создайте отдельные каталоги в WebSQLRCU.
  2. Скопируйте replisapi.dll из C:Program FilesMicrosoft SQL Server120COM в каталог, созданный на первом шаге в WebSQL, при работе с несколькими публикациями скопируйте в WebSQLRCU.
  3. На многих интернет ресурсах рекомендуется провести регистрацию библиотеки, но в моем случае, как ни странно это не потребовалось. Для регистрации воспользуйтесь командой regsvr32 «C:inetpubwwwrootWebSQLRCU
    eplisapi.dll» от имени администратора.
  4. Создадим новый веб-сайт через диспетчер служб IIS. Физический путь указываем каталог, созданный на первом шаге, если есть подкаталоги внутри оставляем в любом случае корневой каталог.
Читайте также:  Почему компьютер начал резко тормозить

После добавим к нашему сайту виртуальный каталог. Псевдоним указываем согласно имени каталога и указываем физический путь до него. Если каталог один путь можно указать на коренной каталог.

Следующим шагом настроим разрешение для исполнения replisapi.dll для этого в диспетчере служб IIS выберем виртуальный каталог и в центральной панели в категории IIS найдем пункт сопоставление обработчиков. Далее в панели действий выберем пункт добавить сопоставление модуля.

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

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

  • Получаем SSL сертификат к примеру, на startssl и формируем PFX файл.
  • В диспетчере IIS для самого сервера IIS выбираем в центральной панели сертификаты сервера и в панели действий выберем импортировать, укажем путь до сохраненного сертификата и пароль к нему.

Последним шагом в настройке IIS проверим сервиса для этого перейдем по данному адресу https://server.domain.com/rcu/replisapi.dll?diag и введем логин и пароль пользователя Windows (для каждой публикации рекомендую создавать отдельного пользователя). При успешном подключении должна отобразиться диагностическая информация, как на скриншоте ниже.

Создание и настройка публикации

    Подключаемся к центральному серверу с Microsoft SQL Server 2014 Standard через Management Studio в Object Explorer -> Replication -> Local Publication -> New Publication (в контекстном меню), далее следуем по шагам мастера создания публикации. На данном этапе настройка репликации слиянием с использованием веб-синхронизации не отличается от настройки в локальной сети.

  • Выбираем базу данных для публикации.

  • Указание расписания для снятия моментального снимка, данный шаг можно, так же оставить по умолчанию или изменить его расписание по своему усмотрению.

После создания публикации нам потребуется произвести дополнительные настройки. Для этого выберем созданную публикацию в Object Explorer -> Replication -> Local Publication -> имя_публикации и откроем настройки.

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

Создание подписки и синхронизация

    Подписку при веб-синхронизации потребуется создавать скриптами, а не через мастер, по причине того, что синхронизация с подпиской у нас будет выполнять по запросу, а также из-за того, что на MSSQL Server Express нельзя запустить агент. Скриптами в любом случае получается на много быстрее.

  • В начала добавим подписчика на центральном сервере с публикацией
  • Далее добавляем подписку по запросу уже на самом подписчике
  • Так же на подписчике добавляем задание для агента для синхронизации подписки по запросу

Наконец доходим до самого главного до первой синхронизации, как уже было написано ранее Express редакция MSSQL не позволяет запустить встроенный агент, но никто не запрещает сделать свой агент при помощи RMO, мы же пойдем более простым путем и будем запускать агент слияния вручную при помощи батника, который после просто поместим в планировщик Windows.

По завершению синхронизации вы увидите примерно следующую информацию в CMD, как на скриншоте.

Контролировать ход репликации можно, как и раньше через монитор репликации.

Послесловие

Веб-синхронизация настроена нам остается только разместить созданный выше батник в планировщик Windows и запускать его автоматически, например, раз в 5-10 минут, конечно если это требуется. При запуске батника и синхронизации будет постоянно выскакивать окно с CMD, чтобы этого избежать можно запускать батник через WScript.exe, например, так:

Читайте также:  Самый дешевый монитор 240 герц

После чего данный скрипт указываем для запуска в планировщике. Дополнительно по синхронизации отмечу если планируются довольно объемные передачи данных, возможно потребуется увеличить значение для WebSyncMaxXmlSize. Настраивается данный параметр в реестре HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server120Replication, будьте аккуратнее с данной настройкой, так как при увеличении значения, увеличивается и количество потребляемой виртуальной памяти.

Ссылки

  1. Веб-синхронизация для репликации слиянием
  2. Как синхронизировать подписку по запросу (программирование репликации)
  3. Как синхронизировать подписку по запросу (программирование объектов RMO)

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

Спасибо всем, кто осилил статью до конца, буду рад любым вашим комментариям.

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

В данной статье я хочу рассмотреть использование подсистемы БСП «Заполнение объектов» для доработки типовых конфигураций. Доработки буем выполнять в расширении конфигурации.

Подсистема «Заполнение объектов» предназначена для вывода команд заполнения в формы списков и элементов различных объектов системы:

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

Рассматриваемые версии БСП: 2.4.5, 3.0.1.

Существует несколько способов разработки дополнительных команд заполнения объектов, которые поддерживаются БСП.

Подсистема поддерживает три мета описания команд заполнения:

  • В модуле менеджера объекта назначения
  • В процедуре общего модуля «ЗаполнениеОбъектовПереопределяемый»
  • В дополнительно подключенной обработке

Создание команд заполнения в модуле менеджера объекта назначения

Команды действуют только в рамках объекта в котором они определены.

Для реализации необходимо прописать объекты, в которых требуется выводить команды заполнения в процедуре «ПриОпределенииОбъектовСКомандамиЗаполнения» общего модуля «ЗаполнениеОбъектовПереопределяемый»:

А также указать перечень необходимых команд в модуле менеджера объекта назначений, в процедуре «ДобавитьКомандыЗаполнения»:

Важно : если объект указан в процедуре « ПриОпределенииОбъектовСКомандамиЗаполнения », процедура « ДобавитьКомандыЗаполнения » должна присутствовать в модуле менеджера объекта, даже если команды заполнения отсутствуют, иначе будет выдаваться ошибка при открытии форм объекта.

Создание команд заполнения с описанием в общем модуле

Команды могут действовать для группы объектов.

Как и в первом варианте, необходимо прописать объекты, в которых требуется выводить команды заполнения в процедуре «ЗаполнениеОбъектовПереопределяемый .ПриОпределенииОбъектовСКомандамиЗаполнения».

Необходимые команды, в данном случае, нужно описывать в процедуре «ПередДобавлениемКомандЗаполнения» общего модуля «ЗаполнениеОбъектовПереопределяемый»

Создание команд заполнения, с описанием в модулях отдельных обработок

Команды могут действовать для группы объектов.

Необходимо создать новую обработку и включить ее в подсистему « ПодключаемыеОтчетыИОбработки ».

В модуле менеджера обработки необходимо разместить экспортную процедуру «ПриОпределенииНастроек», с указанием объектов назначения команд заполнения и принадлежности обработки к функционалу заполнения объектов:

Необходимые команды нужно описывать в модуле менеджера обработки в специальной экспортной процедуре «ДобавитьКомандыЗаполнения»:

Процедура обязательна даже в случае отсутствия команд заполнения.

Добавление команд заполнения

Во всех трех случаях необходимо добавлять команды заполнения. Принцип добавления один и тот же, команды добавляются в коллекцию «КомандыЗаполнения», переданную в качестве параметра. Перечень возможных параметров команд заполнения приведен ниже:

Представление – п редставление команды в списке команд формы

Обработчик (обязательно для заполнения если не задан параметр «ИмяФормы») – и мя обработчика, выполняющего основное действие команды. Детальное описание обработчиков приведено ниже.

ИмяФормы (обязательно для заполнения если не задан параметр «Обработчик»)– и мя формы, в которой размещена процедура – обработчик команды. Если о бработчик не задан, вызывается метод формы « Открыть ».

Читайте также:  Удаленный доступ к папке windows 7

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

Важность – группы в подменю, в которой следует вывести эту команду. Доступные значение: "Важное", "Обычное" и "СмТакже". Команда будет выведена в соответствующей подгруппе (если подгруппа создана в командной панеле формы).

Порядок – п орядок размещения команды в списке по отношению к другим командам.

СочетаниеКлавиш – с очетание клавиш для быстрого вызова команды (тип «СочетаниеКлавиш».

ТипПараметра – используется для уточнения типов объектов, для которых предназначена команда в случае, когда поставщик команд подключен к нескольким объектам (тип «ОписаниеТипов»).

ВидимостьВФормах – и спользуется для уточнения состава форм (перечисленных через запятую), к которым требуется подключить команду. По умолчанию, команда доступна во всех формах объекта.

ФункциональныеОпции – имена функциональных опций (перечисленных через запятую) , определяющих видимость команды.

УсловияВидимости – массив условий, о пределяющих видимость команды в форме. Для добавления новых условий удобно использовать процедуру общего модуля «ПодключаемыеКоманды. ДобавитьУсловиеВидимостиКоманды(Команда, Реквизит, Значение, Знач ВидСравнения = Неопределено) » . Где параметр «Реквизит» является именем реквизита объекта назначения.

ИзменяетВыбранныеОбъекты – значение «Истина» означает что команда не будет доступна в случае отсутствия у пользователя прав на запись объекта, по умолчанию, значение равно «Ложь» .

МножественныйВыбор – поддержка множественного выбора для выполнения команды. В случае значения – «Истина» в первом параметре обработчика команды будет передан массив ссылок на объекты.

РежимЗаписи – н астройки действий, которые нужно выполнить перед обработкой команды. Доступные значения:

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

Значение по умолчанию: « Записывать».

Менеджер – п олное имя объекта метаданных, в модуле менеджера которого размещена процедура – обработчик команды. По умолчанию, заполняется именем объекта, в модуле менеджера которого описана команда.

ДополнительныеПараметры – структура дополнительных параметров, которые передаются обработчику команды.

Обработчики команд заполнения

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

  • клиентские общие модули,
  • серверные общие модули,
  • модули менеджеров объектов,
  • модули форм подключенных обработок.

Если обработчик команды размещен в общем модуле , указываем в описании имя модуля и имя обработчика через точку:

В соответствующем общем модуле необходимо разместить процедуру:

Если обработчик размещен в модуле формы или модуле менеджера , указываем просто имя обработчика

Если параметр команды « ИмяФормы » заполнен, то в модуле указанной формы необходимо разместить клиентскую процедуру следующего вида:

Если параметр « ИмяФормы » не заполнен, то в модуле менеджера объекта, указанного в параметре « Менеджер » или в модуле менеджера текущего объекта, необходимо разместить серверную процедуру следующего вида:

Примечание: Если обработчик серверный, можно изменить и записать в базу данных объект, из формы которого вызван данный обработчик. Для корректного обновления данных в форме в этом случае, параметр команды « РежимЗаписи » должен иметь значение «Записывать».

Параметры обработчиков команд заполнения

Имя первого параметра содержит ссылку на объект, в котором выбрана команда (если режим записи команды – «Не записывать» и это новый объект, передается пустое значение). Также необходимо иметь в виду, что тип параметра зависит от параметра команды « МножественныйВыбор ». В случае множественного выбора, передается массив ссылок.

Параметр обработчика « ПараметрыВыполнения » является структурой и содержит следующие поля:

ОписаниеКоманды – все параметры команды.

Идентификатор – и дентификатор команды.

Представление – представление команды в форме.

ДополнительныеПараметры – д ополнительные параметры команды.

Форма – ссылка на форму, из которой вызвана команда. Через данный параметр можно обращаться к элементам управляемой формы.

ЭтоФормаОбъекта – истина , если команда вызвана из формы объекта.

Источник – о бъект управляемой формы или список формы при условии множественного выбора.

Комментировать
3 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector