Доступ к веб сервису отсутствует 1с
Описанный метод позволяет обратиться к веб-сервисам 1С из html-страницы через JavaScript. В качестве примера выводится список справочников. При нажатии на любой справочник выводятся первые буквы наименований. При нажатии на букву выводятся данные с наименованиями, начинающимися на эту букву.
Способ применим для случаев, когда веб-сервис и html-страница опубликованы на одном сервере. В этом случае не возникает кросс-доменных проблем. Например, если домены будут отличаться, то Chrome выдаст ошибку:
Failed to load resource: Origin localhost:3299 is not allowed by Access-Control-Allow-Origin
Не вдаваясь в подробности публикации веб-сервисов, предположим, что на стороне 1С создан и опубликован веб-сервис catalogs с операцией Execute. На входе — параметр script типа string, на выходе тип string. Операция запускает на стороне произвольный код script из параметра и возвращает JSON-сериализацию от переменной result.
С JSON-сериализацией удобно работать средствами JavaScript и преобразовать строку в объект/массив одной командой eval(resultText). В Интернете можно найти несколько JSON-сериализаторов для 1С.
Удостоверимся, что веб-сервис отвечает, введя его адрес:
На форме сверху разместим элементы настройки веб-сервера: wsUrl — адрес веб-сервиса, wsUser — логин, wsPassword — пароль. На стороне веб-сервиса 1С включена basic autherization. Логин и пароль соответствуют пользователю, прописанному в 1С.
Левая панель отвечает за отображение доступных справочников catalogsList, правая — за отображение букв (letters) и данных (catalogRecords).
JavaScript
Функция обращения к SOAP веб-сервису определена следующим образом:
Получение списка наименований каталогов.
Получение первых букв наименований справочника
Получение данных для каталога , где первая буква входит в условие .
При нажатии на кнопку Обновить происходит вызов функции
и при успешном выполнении вызывается обработчик processSuccess
Веб-сервис возвращает xml, где значимым является содержимое m:return-тэга — JSON-сериализация. Перевести его в объекты JavaScript можно через eval-вызов. Обработчик очищает перечень справочников и заново его формирует через li-тэги с атрибутом catalog. Каждому элементу устанавливается класс catalogTitle.
Веб-сервис возвращает xml, где значимым является содержимое m:return-тэга — JSON-сериализация. Перевести его в объекты JavaScript можно через eval-вызов. Обработчик очищает перечень справочников и заново его формирует через li-тэги с атрибутом catalog. Каждому элементу устанавливается класс catalogTitle.
Аналогично обрабатываются нажатия на все управляющие элементы. Нажатие на справочник очищает буквы и данные, перезаполняет буквы. Нажатие на букву перезаполняет данные из справочника. За обработку кода на 1С отвечают куски кода в script-блоках с типом «text/1c».
Приложение выглядит так:
Нерешенная проблема авторизации на браузере IE
Существует проблема авторизации на IE. На IE 8/9 не удалось решить проблему basic authorization аналогичным для остальных браузеров методом.
На IE Ajax не работает с использованием user/password — свойств $.ajax. На FF и Chrome все работает нормально. По какой-то причине на сервер в случае с IE не передается заголовок
Authorization: Basic 0JHQsNGF0YjQuNC10LLQn9CYICjRgNGD0LrQvtCy0L7QtNC40YLQtdC70YwpOg==
Если кто-нибудь знает причину и как обойти, пожалуйста, напишите в комментариях.
Выводы
Предложенный подход на основе SOAP имеет право на существование для несложных задач, так как сопровождается достаточно большим числом JavaScript кода. Возможно, в будущем удастся создать JavaScript фреймворк для упрощения процесса создания приложений.
Разработчики в этом способе самостоятельно отвечают за безопасность. Необходимо проверять входные параметры при записи, не позволять запуск произвольных скриптов, переданных с клиента. В статье выполнение произвольного кода показано только для примера. Унифицировать можно выполнение произвольного запроса, но это связано с опасностью SQL-инъекций.
Внешние компоненты Native API от 1С не будут работать в данной среде. Это значит, что нужно дополнительно решать проблему с написанием драйверов для оборудования.
Описание проблемы
В платформе 8.3.10 была переработана логика валидации доверенных сертификатов.
При работе в ОС Windows для проверки сертификата происходит обращение к внешнему ресурсу в сети Internet. Для успешного выполнения данной операции у пользователя, от которого запускается процесс rphost, должна быть возможность обратиться к этому внешнему ресурсу, а также сам ресурс должен быть доступен.
В случае некорректно заданных настроек доступа в Internet после перехода на 8.3.10 с более ранних версий платформы могут возникать ошибки :
а) при обращении к веб-сервисам или получении определения веб-сервиса по причине «ошибка работы с Интернет: Удаленный узел не прошел проверку»
б) при попытке выполнить OpenID-авторизацию вида «Ошибка подключения к OpenID провайдеру», сопровождающиеся появлением в технологическом журнале событий EXCP вида:
Также может не происходить попытка OpenID-авторизации, сопровождающаяся появлением в технологическом журнале аналогичных указанным ранее событий EXCP.
Диагностика проблемы
В большинстве случаев проблема может быть вызвана отсутствием у пользователя, под которым запускается rphost, доступа к необходимому ресурсу в Internet.
Целенаправленно только сайты, предназначенные для валидации сертификатов, никто не блокирует, поэтому скорее всего у пользователя не доступен ни один сайт (можно легко проверить, запустив браузер от имени данного пользователя – зажать Shift, правой кнопкой мыши на ярлык браузера, «Запустить от имени другого пользователя»). Однако расследование необходимо проводить именно на том примере, на котором ошибка воспроизводится.
Наиболее распространенные причины:
- Доступ к ресурсу заблокирован через файл hosts
- Нет доступа к ресурсу из-за использования прокси-сервера
- Ресурс заблокирован firewall
- Ресурс блокирован антивирусом
Для подробной диагностики ошибки в случае, если причина оказалась нетривиальной, рекомендуется настроить сбор дополнительных event-логов Windows, согласно описанию, приведенному в статье (раздел Use CAPI2 logging)
Решение проблемы
Про антивирус и firewall все очевидно – проверяем, какие ресурсы блокируются, и понимаем, есть ли в списке нужный нам ресурс (похожий по имени на ссылку на сайт поставщика сертификата, если точное имя сайта неизвестно).
Про настройки прокси и hosts опишем подробнее.
Прокси сервер
1) Запустить Internet Explorer от имени пользователя, под которым работает rphost
2) В меню Свойства браузера (Свойства обозревателя) на закладке Подключения нажать кнопку Настройка сети
3) Если в настройках указано использование прокси-сервера, которая не предусмотрена политикой безопасности (кто-то когда-то установил и забыл) – отключить использование прокси-сервера, сняв соответствующий флаг
4) Если использование прокси действительно предусмотрено, нужно разрешить прямое обращение к ресурсам, на которые пытается обратиться платформа для валидации сертификата, нажав кнопку Дополнительно и указав данный ресурс в качестве исключения для прокси-сервера
Файл hosts
Доступ к некоторым сайтам может блокироваться через файл hosts. Лежит здесь:
Использован релиз 3.0.76
Корректность заполнения ИНН и КПП контрагентов в программе можно проверить через специализированный веб-сервис ФНС в режиме онлайн.
Проверка осуществляется по ЕГРН (Единому государственному реестру налогоплательщиков) в автоматическом и ручном режиме.
- Проверка ИНН в автоматическом режиме:
- Раздел: Администрирование – Интернет-поддержка и сервисы (рис. 1).
- Откройте блок "Проверка контрагентов" и установите флажок "Автоматически проверять контрагентов по ЕГРН". По кнопке "Проверить доступ к веб-сервису" можно проверить подключение к веб-сервису ФНС. Подключение к веб-сервису ФНС возможно только при включенной интернет-поддержке. Для включения интернет-поддержки используйте кнопку "Подключить" в блоке "Настройки интернет- поддержки", в открывшейся форме укажите свой логин и пароль.
- При включенном флажке "Автоматически проверять контрагентов по ЕГРН" проверка будет осуществляться в автоматическом режиме. При вводе нового контрагента (или при изменении реквизитов существующего) его данные (ИНН и КПП) будут обрабатываться с помощью сервиса ФНС, который в онлайн-режиме проверит факт существования контрагента, сверит введенный в программу номер ИНН и КПП с данными из ЕГРН.
- Результат проверки можно увидеть в карточке контрагента (рис. 2).
- По итогам проверки может быть присвоен один из следующих статусов:
- "Контрагент есть в базе ФНС" - означает, что контрагент найден в реестре ФНС и имеет статус действующего в интервале ±6 дней от даты запроса.
- "Контрагент отсутствует в базе ФНС" - означает, что контрагент отсутствует в реестре ФНС.
- "Неверный ИНН" - означает, что в проверяемых данных ИНН найдены ошибки.
- "Неверная длина ИНН" - означает, что код ИНН имеет неверную длину.
- т.п.
- По итогам проверки может быть присвоен один из следующих статусов:
- Статус проверки отображается не только в карточке контрагента, но и в формах списка и выбора справочника "Контрагенты". Если контрагент отсутствует в реестре или не имеет статус действующего, ИНН окрашивается в серый цвет, красным цветом выделены некорректно введенные ИНН контрагентов, если с ИНН все в порядке, он отображается черным цветом (рис. 3).
- Кроме того, данный сервис позволяет отслеживать статус контрагентов компании при формировании книги покупок и книги продаж. Контрагент с недействующим ИНН отображается в книгах розовым цветом.
- Для проверки корректности введенного ИНН в ручном режиме (такая проверка рекомендуется для маломощных компьютеров) флажок "Автоматически проверять контрагентов по ЕГРНО" в блоке "Проверка контрагентов" ставить не нужно. Проверка контрагента по ИНН в ручном режиме производится по кнопке "Еще" (в справочнике "Контрагенты, в документах поступления и реализации), команда "Проверить контрагентов" (рис. 4).
Дополнительно к вышеописанному сервису можно подключить и сервис "1С:Контрагент", который позволит автоматически заполнять реквизиты контрагентов по ИНН (в т.ч. реквизиты ИФНС и внебюджетных фондов), получать актуальные сведения из ФИАС, полезную информацию для оценки благонадежности контрагентов ("Досье контрагента"), а также информацию о плановых и внеплановых проверках организации.
Смотрите также
- Вопрос задан более трёх лет назад
- 11284 просмотра
В моём списке это были следующие ip-адреса:
npchk.nalog.ru
oasis-open.org
schemas.xmlsoap.org
api.orgregister.1c.ru
api.taxregister.1c.ru
api.orgaddress.1c.ru
Возможно, я что-то упустил, может просто где то не срабатывает правило на шлюзе. Нюансов может быть много.
Проблема была решена, указав настройки авторизации на прокси-сервере для передачи отчетности.
Что бы это сделать в конфигурации 1С БП 2.0 (да и 3.0 думаю тоже) необходимо зайти в меню:
Отчёты --> Регламентированные отчёт. Далее нажать кнопку "Настройки", после чего в открывшемся окне в поле "Документооборот с контролирующими органами" нажать на ссылку "здесь". Далее указать настройки авторизации на прокси сервере.
Всем спасибо.
Руслан Федосеев @martin74ua Куратор тега Системное администрирование
а что мешает открыть серверу с 1с полный доступ в инет на шлюзе?
Во первых, не виду смысла давать серверам полный доступ. Каждый должен ходить только туда куда ему позволено администратором. Во вторых в приведённом мной пример 1С сервер не причём, так как запрос идёт со стороны клиента, т.е. пк и 1С бухгалтера!
Руслан Федосеев @martin74ua Куратор тега Системное администрирование
Ну вам виднее.
Вы сначала уточните - 1с про слово прокси сервер в курсе? Если нет - придется отслеживать все нужные адреса и открывать доступ через нат. Еще учтите вариант - сегодня работает, завтра какой нить нужный клиент банк сменит ип адрес, но при этом останется на прежнем домене. И вы получите жалобу "вчера работало, сегодня нет". И опять заново отслеживать.
Так что вы подумайте, может проще открыть все? )
Если ну совсем не хотите открывать, то хотя бы логи включите на прокси и ловите там все реджекты. Ну и прокси - это зло, больше проблем.
Читайте также: