Зачастую пользователи конфигурации сталкиваются с проблемой доступа к личному кабинету в виде ошибки 1С:Enterprise 8 application error. Большинство сразу приходит к выводу, что проблема заключается в базе или самой конфигурации. Это и понятно, так как значение заголовка ошибки
«Ошибка приложения 1С:Предприятие 8»
на русском не дает никаких объяснений.
Но на самом деле это не так и сейчас разберемся почему? Как видно на скриншоте, расположенном выше, текст HTTP:Not found говорит о том, что http-сервис не найден. Единственной причиной воспроизведения данного сообщения может быть только неправильная публикация базы(неопубликованный http-сервис «Личный кабинет»). Для решения проблемы необходимо открыть конфигурацию в режиме «Конфигуратор». Далее перейти в «
Конфигуратор
«-«
Администрирование
«-«
Публикация на веб-сервере
» и на закладке «http-сервисы» установить все чек-боксы, включая «Личный кабинет«.
В конце все, что остается, это заново переопубликовать базу и перезапустить веб-сервер (Apache или IIS).
Cancell
18.11.19 — 09:59
Всем доброго дня, у нас был работающий веб-сервис на стороне 1С, потом им долго не пользовались, а сейчас решили возобновить работу. И при тестировании через фиддлер дает такую ошибку в сабже.
Поиск ничего толком не дал, vrd пересоздавали и там вроде все корректно, база сама открывается через веб клиент.
Запрос делаем GET
http://IP_Address:8080/VM2014/ws/CardActivate.1cws?wsdl&CardNumber=9051112233&ClientPhone=9051112233&ClientName=Name&ClientEmail=name@mail.ru&BDate=111111
В vrd такая строка — ib=»Srvr="SERVER_1C";Ref="VM2014";»
Подскажите плз куда копать?
На Localhost в Эксплорере просто возвращает описание сервиса, в отладке не попадат в обработчик вообще
Cyberhawk
1 — 18.11.19 — 10:04
Ни о чем
Cancell
2 — 18.11.19 — 10:07
(1) сервер апач 2.2, платформа (8.3.13.1644)
Что еще уточнить?
Cancell
3 — 18.11.19 — 11:01
Никто не сталкивался с такой проблемой?
Я так понимаю судя по ошибке «Ошибка в строке соединения с информационной базой.» проблема в default.vrd но сама база запускается через веб клиент…
bolero
4 — 18.11.19 — 11:47
(0) тебе ж машина написала русским языком: Ошибка в строке соединения с информационной базой
как оно тебе соединится с сервером "SERVER_1C", когда он называется SERVER_1C ?
Cancell
5 — 18.11.19 — 12:09
(4) так я так понимаю это кавычка так закодирована,база то сама открывается.
hhhh
6 — 18.11.19 — 12:10
(5) уберите эти кавычки.
Cancell
7 — 18.11.19 — 12:14
(4)(6) сделал
ib=»Srvr=SERVER_1C;Ref=VM2014;»
ничего не изменилось
Cancell
8 — 18.11.19 — 12:15
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/vm2014″
ib=»Srvr=SERVER_1C;Ref=VM2014;»>
hhhh
9 — 18.11.19 — 12:38
(7) ib=»Srvr=SERVER_1C;Ref=VM2014;;»
Cancell
10 — 18.11.19 — 12:47
(9)
Добавил точку с запятой, опять ничего = та же ошибка
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/vm2014″
ib=»Srvr=SERVER_1C;Ref=VM2014;;»>
Cancell
11 — 18.11.19 — 13:04
Что такого в строке соединения ему может не нравится?
вот описание сервиса в vrd
<point name=»Dart_CardActivation»
alias=»CardActivate.1cws»
enable=»true»
reuseSessions=»dontuse»
sessionMaxAge=»20″
poolSize=»10″
poolTimeout=»5″/>
Cyberhawk
12 — 18.11.19 — 13:35
Со строкой соединения все нормально, высказавшиеся выше — мимо
bolero
13 — 18.11.19 — 13:35
есть еще вариант, что SERVER_1C не резолвится по dns с машины, где веб-сервер
Cancell
14 — 18.11.19 — 13:49
(12) а есть предположения в чем может быть проблема, а то в запасе только вариант перезагрузки сервера… но это уже после 23:00 =
Cancell
15 — 18.11.19 — 13:50
(13) все на одном серваке поднято
Cyberhawk
16 — 18.11.19 — 13:54
(14) См. (1)
Cancell
17 — 18.11.19 — 14:11
(16) спасибо, но там ни о чем не понятно
bolero
18 — 18.11.19 — 14:12
(15) это не мешает не резолвиться
Cyberhawk
19 — 18.11.19 — 15:17
(17) Зеркало
ДенисЧ
20 — 18.11.19 — 15:21
ping SERVER_1C
что говорит?
Cancell
21 — 18.11.19 — 15:34
(20) по ИП пингуется, запросы я по ИП отправляю
а локально по имени пингуется , только ответ в странном формате, ответ не от ИП и как будто от МАКадреса
acht
22 — 18.11.19 — 17:30
acht
23 — 18.11.19 — 17:34
(21) > и как будто от МАКадреса
Вау, так на моей памяти ipv6 еще никто не называл.
Чини DNS.
Cancell
24 — 19.11.19 — 21:02
(22) а как правильно передавать? это мне разработчик сайта такую передачу параметров организовал
Переводим сервисы на 8.3.3, возможны некоторые шероховатости
Модераторы: Дмитрий Юхтимовский, Лысиков Денис
Переводим сервисы на 8.3.3, возможны некоторые шероховатости
просим отнестись с пониманием
- Гилёв Вячеслав
- Сообщений: 2543
- Зарегистрирован: 11 фев 2013, 15:40
- Откуда: Россия, Москва
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
syncmas » 13 июн 2013, 09:56
Сервис SQLSize пока не работает. Пишет вот что:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://skynet:5541 descr=192.168.0.3:5541:10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ; line=813 file=SrcDataExchangeTcpClientImpl.cpp
- syncmas
- Сообщений: 8
- Зарегистрирован: 19 май 2013, 16:45
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
syncmas » 13 июн 2013, 11:31
Сервис sqlsize пока не работает. Пишет вот что:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://skynet:5541 descr=192.168.0.3:5541:10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ; line=813 file=SrcDataExchangeTcpClientImpl.cpp
- syncmas
- Сообщений: 8
- Зарегистрирован: 19 май 2013, 16:45
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
EuLeEr » 17 июн 2013, 20:10
Личные сообщения запрещены и я не нашел, куда могу написать.
13.06.2013 года активировал свою учетную запись , потом через 3 минуты пришло сообщение
«Заявка на регистрацию учетной записи успешно выполнена!»и с тех пор так и нет подтверждения регистрации учетной записи, которое, как я понял из инструкций, должно прийти в виде имени пользователя и пароля для сервисов gilev.ru
Это сбой в системе регистрации или проблема на моей стороне — мой почтовый сервер выкинул письмо от вашего сервиса ?
Или быть может я вообще чего-то не понял ?
- EuLeEr
- Сообщений: 1
- Зарегистрирован: 17 июн 2013, 19:32
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
Гилёв Вячеслав » 21 июн 2013, 18:28
Совершенно верно, Вам должно прийти письмо с подтверждением с логином и паролем. Часто попадает в спам, обязательно проверьте там.
Если не разберетесь, пишите на
gilv@rarus.ru
- Гилёв Вячеслав
- Сообщений: 2543
- Зарегистрирован: 11 фев 2013, 15:40
- Откуда: Россия, Москва
Вернуться в Сервисы gilev.ru
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
При эксплуатации 1С Предприятия часто возникает потребность установки разных версий платформы. При этом, в том случае если имеется публикация WEB или HTTP сервисов, то возникает проблема несоответствия версий клиента в виде модуля расширение 1С для веб-сервера и версии самого сервера 1С. К сожалению, на веб-сервер возможно подключить только один модуль расширения 1С. Поэтому если мы попытаемся через данный веб-сервер обратиться к базе или веб-сервису 1С другой версии платформы, то получим ошибку несоответствия версии клиента и сервера 1С.
Текст ошибки:
1C:Enterprise 8 application error:
HTTP: Conflict
by reason:
Различаются версии клиента и сервера (8.3.13.1513 - 8.3.15.1830), клиентское приложение: Модуль расширения веб-сервера
by exception: 9f06d311-1431-4a54-bd6f-fa93c4d4c471
Окно браузера с ошибкой
Для чего нужен второй веб-сервер 1С
Самая частая причина, по которой может понадобиться второй веб-сервер — это необходимость тестового контура 1С для платформы другого релиза, чем та на которой работает уже существующий продуктивный контур. Это бывает нужно либо при переходе и тестировании новой платформы, либо наоборот при необходимости тестового контура старого релиза. Однако не редки случаи, когда есть потребность запустить и продуктивные контуры 1С разных релизов на одном сервере.
Установка второго сервера Апач
Итак, предположим, что у нас в системе уже установлен веб-сервер Apache 2.4. Далее по шагам:
1. Копируем всю папку с файлами веб-сервера Апач в новое расположение по своему усмотрению. Например, у нас был каталог первого экземпляра сервера в папке C:Apache24, копируем в папку C:Apache24_17001
2. Меняем в файле httpd.conf следующие настройки:
- указываем новый путь к каталогу второго севера:
Define SRVROOT «C:Apache24_17001» |
- меняем порт, на котором второй сервер будет принимать подключения, укажем 17001 (можно указать свой порт):
- При необходимости использования протокола HTTPS, дополнительно меняем в файле C:Apache24_17001confextra httpd-ahssl.conf номер порта для SSL, укажем 17443:
ServerName localhost:17443 |
- прописываем загрузку модуля расширения 1С для веб-сервера нужного релиза (путь к модулю на вашем сервер может отличаться). Допустим у нас на первом веб-сервере подключен модуль версии 8.3.15.1830, а мы хотим так же работать с платформой 8.3.17.1549. Подключим модуль данного релиза:
LoadModule _1cws_module «C:/Program Files/1cv8/8.3.17.1549/bin/wsap24.dll» |
3. Запускаем утилиту «Командная строка» от имени Администратора:
4. Переходим в каталог C:Apache24_17001bin
5. Установим службу для второго экземпляра веб-сервера Апач. Введем команду:
httpd.exe —k install —n «Apache_17001» |
В результате должны увидеть сообщение об успешно установленной службе «Apache_17001»:
6. Переходим в оснастку «Службы», находим там службу с именем «Apache_17001» и если она не запущена, то стартуем ее:
7. Проверяем работу. Вводим в браузере адрес localhost:17001. Если видим тестовую страницу веб-сервера, то все прошло успешно
8. Проверяем HTTPS, вводим адрес https:// localhost:17443. После вопроса о безопасности сертификата так же должны увидеть тестовую страницу.
Итоги
Теперь после установки второго веб-сервера Апач мы получили возможность работать через веб-расширение как с сервером 1С версии 8.3.15.1830, так и с сервером 1С версии 8.3.17.1549.
Так для подключения к базе расположенной на сервере версии 8.3.15.1830 обращение идет по адресу:
localhost/base15/
а для обращения к базе на сервере версии 8.3.17.1549:
localhost:17001/base17/
Аналогично происходит обращение к web- и http- сервисам на указанных серверах.
После успешного выполнения публикации при подключении получаю ошибку.
/opt/1C/v8.3/x86_64/webinst -apache24 -wsdir mlt -dir /var/www/mlt -connstr "Srvr=127.0.0.1;Ref=mlt;" -confPath /etc/httpd/conf/httpd.conf
Ошибка:
1C:Enterprise 8 application error:
Connection error
by reason:
server_addr=tcp://192.168.0.48:1541 descr=192.168.0.48:1541:13(0x0000000D): Permission denied; line=1040 file=./src/DataExchangeTcpClientImpl.cpp
netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1545 0.0.0.0:* LISTEN 12189/ras
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 11187/smbd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1037/sshd
tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN 12122/rphost
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 12699/postmaster
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2327/master
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 11187/smbd
tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN 12071/ragent
tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN 12079/rmngr
-
Вопрос заданболее трёх лет назад
-
3394 просмотра
Нужно было проверить /var/log/audit/audit.log и добавить исключение для httpd в selinux
grep httpd /var/log/audit/audit.log | grep denied
semanage port -a -t http_port_t -p tcp 1541
semanage port -a -t http_port_t -p tcp 1560
Пригласить эксперта
мне помогло просто
setsebool -P httpd_can_network_connect 1
service httpd restart
-
Показать ещё
Загружается…
21 июн. 2023, в 14:53
2000 руб./за проект
21 июн. 2023, в 14:43
6000 руб./за проект
21 июн. 2023, в 14:18
10000 руб./за проект
Минуточку внимания
При подключении к веб хранилищу вываливается ошибка:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://Storage descr=192.168.0.3:1542:10060(0x0000274C): Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. ; line=1045 file=srcDataExchangeTcpClientImpl.cpp
В логах апача:
127.0.0.1 — — [25/Oct/2017:18:22:46 +0300] «GET /storage/repository.1ccr/Base_1cStorage HTTP/1.1» 408 558
Может кто то сталкивался?
Платформу переустанавливал, апачь тоже.
Зачастую пользователи конфигурации сталкиваются с проблемой доступа к личному кабинету в виде ошибки 1С:Enterprise 8 application error. Большинство сразу приходит к выводу, что проблема заключается в базе или самой конфигурации. Это и понятно, так как значение заголовка ошибки
«Ошибка приложения 1С:Предприятие 8»
на русском не дает никаких объяснений.
Но на самом деле это не так и сейчас разберемся почему? Как видно на скриншоте, расположенном выше, текст HTTP:Not found говорит о том, что http-сервис не найден. Единственной причиной воспроизведения данного сообщения может быть только неправильная публикация базы(неопубликованный http-сервис «Личный кабинет»). Для решения проблемы необходимо открыть конфигурацию в режиме «Конфигуратор». Далее перейти в «
Конфигуратор
«-«
Администрирование
«-«
Публикация на веб-сервере
» и на закладке «http-сервисы» установить все чек-боксы, включая «Личный кабинет«.
В конце все, что остается, это заново переопубликовать базу и перезапустить веб-сервер (Apache или IIS).
Cancell
18.11.19 — 09:59
Всем доброго дня, у нас был работающий веб-сервис на стороне 1С, потом им долго не пользовались, а сейчас решили возобновить работу. И при тестировании через фиддлер дает такую ошибку в сабже.
Поиск ничего толком не дал, vrd пересоздавали и там вроде все корректно, база сама открывается через веб клиент.
Запрос делаем GET
http://IP_Address:8080/VM2014/ws/CardActivate.1cws?wsdl&CardNumber=9051112233&ClientPhone=9051112233&ClientName=Name&ClientEmail=name@mail.ru&BDate=111111
В vrd такая строка — ib=»Srvr="SERVER_1C";Ref="VM2014";»
Подскажите плз куда копать?
На Localhost в Эксплорере просто возвращает описание сервиса, в отладке не попадат в обработчик вообще
Cyberhawk
1 — 18.11.19 — 10:04
Ни о чем
Cancell
2 — 18.11.19 — 10:07
(1) сервер апач 2.2, платформа (8.3.13.1644)
Что еще уточнить?
Cancell
3 — 18.11.19 — 11:01
Никто не сталкивался с такой проблемой?
Я так понимаю судя по ошибке «Ошибка в строке соединения с информационной базой.» проблема в default.vrd но сама база запускается через веб клиент…
bolero
4 — 18.11.19 — 11:47
(0) тебе ж машина написала русским языком: Ошибка в строке соединения с информационной базой
как оно тебе соединится с сервером "SERVER_1C", когда он называется SERVER_1C ?
Cancell
5 — 18.11.19 — 12:09
(4) так я так понимаю это кавычка так закодирована,база то сама открывается.
hhhh
6 — 18.11.19 — 12:10
(5) уберите эти кавычки.
Cancell
7 — 18.11.19 — 12:14
(4)(6) сделал
ib=»Srvr=SERVER_1C;Ref=VM2014;»
ничего не изменилось
Cancell
8 — 18.11.19 — 12:15
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/vm2014″
ib=»Srvr=SERVER_1C;Ref=VM2014;»>
hhhh
9 — 18.11.19 — 12:38
(7) ib=»Srvr=SERVER_1C;Ref=VM2014;;»
Cancell
10 — 18.11.19 — 12:47
(9)
Добавил точку с запятой, опять ничего = та же ошибка
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/vm2014″
ib=»Srvr=SERVER_1C;Ref=VM2014;;»>
Cancell
11 — 18.11.19 — 13:04
Что такого в строке соединения ему может не нравится?
вот описание сервиса в vrd
<point name=»Dart_CardActivation»
alias=»CardActivate.1cws»
enable=»true»
reuseSessions=»dontuse»
sessionMaxAge=»20″
poolSize=»10″
poolTimeout=»5″/>
Cyberhawk
12 — 18.11.19 — 13:35
Со строкой соединения все нормально, высказавшиеся выше — мимо
bolero
13 — 18.11.19 — 13:35
есть еще вариант, что SERVER_1C не резолвится по dns с машины, где веб-сервер
Cancell
14 — 18.11.19 — 13:49
(12) а есть предположения в чем может быть проблема, а то в запасе только вариант перезагрузки сервера… но это уже после 23:00 =
Cancell
15 — 18.11.19 — 13:50
(13) все на одном серваке поднято
Cyberhawk
16 — 18.11.19 — 13:54
(14) См. (1)
Cancell
17 — 18.11.19 — 14:11
(16) спасибо, но там ни о чем не понятно
bolero
18 — 18.11.19 — 14:12
(15) это не мешает не резолвиться
Cyberhawk
19 — 18.11.19 — 15:17
(17) Зеркало
ДенисЧ
20 — 18.11.19 — 15:21
ping SERVER_1C
что говорит?
Cancell
21 — 18.11.19 — 15:34
(20) по ИП пингуется, запросы я по ИП отправляю
а локально по имени пингуется , только ответ в странном формате, ответ не от ИП и как будто от МАКадреса
acht
22 — 18.11.19 — 17:30
acht
23 — 18.11.19 — 17:34
(21) > и как будто от МАКадреса
Вау, так на моей памяти ipv6 еще никто не называл.
Чини DNS.
Cancell
24 — 19.11.19 — 21:02
(22) а как правильно передавать? это мне разработчик сайта такую передачу параметров организовал
После успешного выполнения публикации при подключении получаю ошибку.
/opt/1C/v8.3/x86_64/webinst -apache24 -wsdir mlt -dir /var/www/mlt -connstr "Srvr=127.0.0.1;Ref=mlt;" -confPath /etc/httpd/conf/httpd.conf
Ошибка:
1C:Enterprise 8 application error:
Connection error
by reason:
server_addr=tcp://192.168.0.48:1541 descr=192.168.0.48:1541:13(0x0000000D): Permission denied; line=1040 file=./src/DataExchangeTcpClientImpl.cpp
netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1545 0.0.0.0:* LISTEN 12189/ras
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 11187/smbd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1037/sshd
tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN 12122/rphost
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 12699/postmaster
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2327/master
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 11187/smbd
tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN 12071/ragent
tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN 12079/rmngr
-
Вопрос заданболее трёх лет назад
-
3265 просмотров
Нужно было проверить /var/log/audit/audit.log и добавить исключение для httpd в selinux
grep httpd /var/log/audit/audit.log | grep denied
semanage port -a -t http_port_t -p tcp 1541
semanage port -a -t http_port_t -p tcp 1560
Пригласить эксперта
мне помогло просто
setsebool -P httpd_can_network_connect 1
service httpd restart
-
Показать ещё
Загружается…
09 февр. 2023, в 07:25
50000 руб./за проект
09 февр. 2023, в 06:50
2500 руб./за проект
05 февр. 2023, в 06:37
100000 руб./за проект
Минуточку внимания
Какие настройки нужно выполнить, чтобы опубликовать http сервис по нестандартному пути
(4) Попытки (перед каждой новой попыткой система возвращается в первоначальное состояние):
При выполнении запроса к сервису получаю ошибку:
Forbidden
You don’t have permission to access this resource. (403)
2) в каталоге, где находится файл vrd сервиса, к которому идет обращение, создал файл .htaccess со строками:
RewriteEngine On
При выполнении запроса к сервису получаю ошибку:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@example.com to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log. (500)
3) в каталоге, где находится файл vrd сервиса, к которому идет обращение, создал вложенный каталог «api» и переместил туда файл vrd.
При выполнении запроса к сервису получаю ошибку:
1C:Enterprise 8 application error:Ошибка при разборе дескриптора виртуальных ресурсов
by reason:
Файл не обнаружен ‘C:1C_DB1C_WEBUT_Localdefault.vrd’. 2(0x00000002): Не удается найти указанный файл. (500)
Подскажите, что не так делаю?
(7) ошибки в этих двух строках:
# Order allow,deny
# Allow from all
если раскомментирю любую из них, апач не стартует
Источник
Не получается опубликовать веб-сервис
Добрый день!
Не получается опубликовать веб сервис. Точнее обратиться к нему через браузер — пишет ошибка 404 (страница не найдена).
Самописная конфигурация, платформа 1С 8.3. Веб сервер Апаче 2.2. База 1с находится на одном сервере, сервер 1с на другом, сервер апаче на третьем.
При публикации веб сервиса через: Администрирование — Публикация на веб-сервисе. — создается в каталоге файл default.vrd.
Пытаюсь в браузере (с сервера апаче) перейти по адресу «http://localhost/Имя_указанное_при_публикации/ws/имя_сервиса?wsdl» — выдает ошибку 404.
Не понимаю уже в какую сторону копать. Перерыл весь интернет, из подобных проблем — описано только в одной теме (http://www.bizkit.ru/2013/05/24/1722/). Но она не помогла.
Есть у кого какие идеи, в каком направлении искать?
Есть в браузере зайти просто в локалхост, он видит только этот единственный файл, его можно посмотреть — содержание ниже:
Если я не ошибаюсь, то не получится опубликовать не из под админа.
Может нужны какие-то дополнительные манипуляции с апачем?
Была проблема в сервере. Установил Апаче на свой ПК и с него все развернул и запустил. Заработало сразу.
Но при попытке выполнить процедуру веб сервиса вываливается ошибка:»<ОбщаяФорма.ФормаОбмена.Форма(26)>: Ошибка при вызове метода контекста (Приветствие): При вызове веб-сервиса произошла ошибка. Ошибка вызова операции сервиса: :Hello:Приветствие(): При вызове веб-сервиса произошла ошибка. Ошибка HTTP: HTTP Status 500 — Внутренняя ошибка сервера.
1C:Enterprise 8 application error:Ошибка при разборе дескриптора виртуальных ресурсовby reason: Файл не обнаружен ‘C:wwwdefault.vrd’. 2(0x00000002): Не удается найти указанный файл.»
Почему в ошибке указан файл в папке C:www? я его ни где не прописывал.
Решил изменить в конфиге апача директорию документов как раз на www, чтобы 1с создала там нужный файл.
Ошибка не пропала. Пробовал и сервер из под админа запускать, права на папку есть у всех (в том числе и у админа, от которого пробовал запускать сервер).
В базе веб сервиса в процедуре следующий код:
В другой базе добавил ws-ссылку на веб сервис.
Пытаюсь подключиться:
Пробовал и динамически создавать подключение:
Получаю следующую ошибку:
<ОбщаяФорма.ФормаОбмена.Форма(15)>: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. URL сервиса: http://localhost:80/Hello/ws/ws2.1cws?wsdl
Код ответа сервера: 500
(7) в том то и дело — там даже намека нет на эту папку, точнее не было.
Так как я потом сам поменял, чтобы доументы там хранились, но это не помогло.
Сам файл лежит в указанном пути, но ошибка не исчезает.
На всякий случай все после 1с publication выложу:
# 1c publication
Alias «/Hello» «C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/»
#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, «text/plain» is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use «application/octet-stream» instead to
# keep browsers from trying to display binary files as though they are
# text.
#
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
#
# AddHandler allows you to map certain file extensions to «handlers»:
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add «ExecCGI» to the «Options» directive.)
#
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add «Includes» to the «Options» directive.)
#
#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type. The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 «The server made a boo boo.»
#ErrorDocument 402 http://localhost/subscription_info.html
#
#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values ‘default’, ‘none’ or ‘unlimited’.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited
#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files. This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#
# The configuration files in the conf/extra/ directory can be
# included to add extra features or to modify the default configuration of
# the server, or you may simply copy their contents here and change as
# Server-pool management (MPM specific)
# Multi-language error messages
# Fancy directory listings
# User home directories
# Real-time info on requests and configuration
# Local access to the Apache HTTP Server Manual
# Distributed authoring and versioning (WebDAV)
# Various default settings
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
Извиняюсь, не знаю как тут прикреплять файлы/изображения. Выложу весь текст файла.
This XML file does not appear to have any style information associated with it. The document tree is shown below.
Источник
Интеграция 1С и C#
сервис кто предоставляет? 1С?
имхо iis криво настроен. базовая авторизация, а должна быть анонимная
(5) делаю публикацию на веб-сервере iis, да.
Как сделать анонимную, подскажите пожалуйста, буду признателен.
есть номер зем. участка. есть сайт госрееста. там есть форма куда можно номер вбить — в ответ будут две ссылки на описание участка в разных реестрах.
как это автоматизировать через 1с?
могу получить текст формы с сайта, а дальше чего?
парсить ее вставлять значение в нужное поле и отправлять форму обратно + submit()?
или как такое делается?
там url какой-то невменяемый.
или. а как можно посмотреть что по submit на сервер уходит?
var binding = new BasicHttpBinding();
<
<
var httpRequestProperty = new HttpRequestMessageProperty();
>
>
(28) Вы писали статью в которой прописывали следующий код
var uriString = @»http://localhost/LinqBD/odata/standard.odata/»;
var context = new ServiceReference1.EnterpriseV8(new Uri(uriString));
ServiceReference1 Вы создавали через «Reference — Add Service reference» однако я пока даже не могу создать данный класс для подключения к сервису.
(31) Да. А сервис на 1С у тебя работает?
Кроме того нужно галку на ODATA проставить при публикации и соответсвтвено прописать какие объекты будут использоваться
Кроме для ODATA или вэб сервисов можешь отключить авторизацию Как отключить http аутентификацию в 1с 8.3.7?
1C:Enterprise 8 application error:
Ошибка при разборе дескриптора виртуальных ресурсов
by reason:
Ошибка разбора XML: — [6,49] Фатальная ошибка: Input is not proper UTF-8, indicate encoding ! Bytes: 0xD1 0xE0 0xE9 0xF2 SystemId: file://C:/inetpub/wwwroot/1C/default.vrd
(35) 1С позволяет использовать и HTTP сервисы. Там тебе придется самоу сериализовать десериализовать. Хотя можно использовать обвязки например
https://habrahabr.ru/company/microsoft/blog/310704/
Самым популярным в настоящее время протоколом для общения мобильных приложений с сервером является REST в связке с Json. Поэтому наше сегодняшнее знакомство начнем с библиотеки Refit.
Refit позволяет описать спецификации для работы с REST-сервисом в виде простого Interface с понятным набором входных и выходных параметров, включая возможность манипулировать HTTP-заголовками для отдельных запросов.
var context = new StandardODATA.EnterpriseV8(new Uri(uriString));
А ты не используй CreateQuery.
var result = (from ТипыДокументов in context.Catalog_ТипыДокументов select ТипыДокументов).ToList();
An exception of type ‘System.Data.Services.Client.DataServiceQueryException’ occurred in Microsoft.Data.Services.Client.dll but was not handled in user code
Additional information: При обработке этого запроса возникла ошибка.
из-за того что убрал where такое вываливается? По идее в запросах он же необязательный
(52)
foreach(var c in context.Catalog_ТипыДокументов)
<
>
тоже выдает аналогичную ошибку
(61) у меня так. Если ставлю fiddler вываливается ошибка
(65) 1С:Предприятие 8.3 (8.3.8.1675)
не ставил, дома уже посмотрю тогда и отпишусь
Единственно, что нужно вместо Encoding.ASCII
использовать Encoding.UTF8
(74) Спасибо за помощь. Оказалось, что ты мне писал не совсем по теме, но для общего развития не помешало) В общем все было намного проще. Нужно было в C# проделать ряд операций:
1. References — Add service references
2. Нажать кнопку Advanced далее Add web references
3. Ввести веб-сервис
4. Ввести в окне авторизации пользователя IUSR
P.S. не знаю почему, но пришлось создать пользователя в 1С с именем IUSR и без пароля как и пользователя под которым выполняется запрос к публикации с 1С.
Что конкретно до этого было не так, я так и не понял. Возможно нужно создавать Пользователя и пароль на английском.
Ели у тебя английская версия то измени язык на английйский
(78) Читаю статью http://catalog.mista.ru/public/403524/ пытаюсь делать по аналогии, но:
Format подчеркивает красным, пишет, что такого нет
An exception of type ‘System.Data.Services.Client.DataServiceQueryException’ occurred in Microsoft.Data.Services.Client.dll but was not handled in user code
Additional information: An error occurred while processing this request.
в Exception пишет, что не прошел авторизацию
(79) Не используй CreateQuery
Пиши сразу 59.
(82) Хотя преобразование в формат JSon в ASP.NET MVC решается примерно так:
public JsonResult GetFormsForLevels1(int Id)
<
Источник
Мой личный опыт и заметки по использованию веб-сервисов. А также обработка для тестирования произвольного веб-сервиса.
В данной статье будет рассмотрены вопросы интеграции 1С с уже существующими веб-сервисами и использование самой 1С как веб-сервиса.
При этом под веб-сервисами будет пониматься системы, работающие в интернете и обеспечивающие взаимодействие с ними не только по SOAP (что является именно веб-сервисом), но и другими способами, включая обычные HTTP(S)-запросы.
Далее для экономии веб-сервис будет именоваться просто сервис.
Риски использования веб-сервисов 1С
В платформе 1С81 появилась реализация веб-сервисов.
Но их использование чревато рисками:
- 1С8 плохо работает через HTTPS, средства диагностики отсутствуют, поэтому понять, почему при наличии сертификата сервис не хочет работать через HTTPS порой невозможно. Выход — реализация веб-сервисов через CURL или поднятие HTTPS-туннеля.
- 1С8 придерживается своих правил валидации WSDL-схем. Порой по необъяснимым причинам WSDL-схема не хочет загружаться в WS-ссылку. Узнать причину можно только на партнерском форуме у одного специалиста. Средства диагностики WSDL-схемы отсутствуют, не указывается даже причина или строка, на которой прерывается загрузка схемы.
Правила построения сервисов по продаже
Клиенту выдается документ о продаже (чек) только в том случае, если транзакция по сервису прошла успешно. Иначе возможна ситуация, когда клиент получит чек и будет пребывать в уверенности, что получил услугу, а на самом деле это не так.
Использование внешних SOAP-сервисов
Веб-сервисы SOAP используют WSDL схемы и объекты XDTO для представления данных.
Загрузка WSDL
Для того, чтобы использовать внешний сервис, нужно загрузить его WSDL-схему.
Проверка валидности WSDL-схемы
Иногда WSDL-схема не загружается в 1С. Проверить валидность (правильность) схемы можно любым валидатором WSDL-схем, например http://www.validwsdl.com/.
Нужно загрузить схему на какой-нибудь http-сайт (можно по ftp) и указать адрес файла, в который загружена схема:
Особенности загрузки WSDL в 1С
Особенность загрузки WSDL в 1С в том, что валидные схемы могут не загружаться. Никакого встроенного валидатора нет, поэтому приходится искать ошибку методом деструктивного анализа, последовательно уменьшая количество элементов в схеме. Можно, например, удалить описание веб-сервиса.
1С не любит слово «policies». Если WS-ссылка не загружается, нужно убрать все, что связано с этим словом в любом XML-редакторе.
Обработка для тестирования работающего внешнего веб-сервиса
Для тестирования работающего внешнего веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf» из пакета к этой статье.
Тестирование можно использовать на примере сервиса Morpher, склоняющего имена (адрес сервиса http://www.morpher.ru/WebServices/Morpher.asmx?WSDL ):
Таким способом можно протестировать любой сервис, который имеет простые точки входа, содержащие параметры простых типов: число, дата, строка.
В обработке можно указать также логин и пароль, которые требуются для авторизации доступа к веб-сервису.
Стандартные средства отладки сервисов
Для отладки можно использовать программу SoapUI, который может передать произвольный запрос веб-сервису и получить от него ответ.
SOAP и HTTPS
К сожалению, SOAP в 1С достаточно капризно ведет себя при работе через протокол HTTPS, практика показывает, что добиться HTTPS соединения невозможно, хотя возможность и продекларирована в платформе. Сказывается отсутствие средств диагностики и отладки для выяснения причин, из-за которых не устанавливается соединение. Поэтому удобно использовать SOAP через CURL.
Встроенный механизм использования HTTPS подразумевает, что все сертификаты должны быть опубликованы в общем файле pem в каталоге программы 1С.
Использование 1С как сервиса
Правила разработки сервиса на базе 1С
Операция «Hello»
Правилом хорошего тона является создание в сервисе операцию, которая информирует о том, что сервис доступен. Это облегчает жизнь интеграторов, им будет проще проверять, налажена ли связь с сервисом.
Например, можно использовать операцию Hello без параметров, которая просто возвращает булево значение Истина.
Публикация веб-сервиса
Процедура хорошо описана в документации: file:///C:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634 :
Задача публикации Web-сервисов сводится к размещению конфигурационных файлов *.1cws Web-сервисов в соответствующем каталоге веб-сервера с соответствующими настройками для веб сервера. Для того, чтобы выполнить публикацию Web-сервисов, следует выполнить команду меню «Администрирование | Публикация Web-сервисов».
В результате выполнения этой команды будет открыто окно публикации Web-сервисов.
Окно публикации Web-сервисов содержит путь к веб-серверу и два списка:
- «Web-сервисы» — список Web-сервисов конфигурации;
- «Публикация» — список Web-сервисов, опубликованных на указанном веб-сервере.
С помощью кнопки «Соединение…» следует указать веб-сервер, на котором требуется опубликовать Web-сервисы.
Окно выбора пути к веб-серверу позволяет указать путь двумя способами:
- на закладке «Файлы» — этот способ используется в том случае, когда публикация выполняется на том же компьютере, на котором установлен веб-сервер. В качестве пути указывается локальный каталог, соответствующий интернет-странице, с которой будет выполняться вызов публикуемого Web-сервера;
- на закладке «FTP сайт» — этот способ используется в том случае, когда требуется опубликовать Web-сервис на удаленном компьютере. Для выполнения публикации необходимо указать параметры FTP-соединения с удаленным компьютером и каталог, в котором будет опубликован Web-сервис.
Публикация выбранного Web-сервиса осуществляется с помощью кнопки «Опубликовать»
Для отмены публикации Web-сервиса используется кнопка «Удалить».
Для обновления списка опубликованных Web-сервисов используется кнопка «Обновить текущий список».
Публиковать можно в локальном каталоге или по FTP. Можно публиковать и на удаленный сервер по UNC-пути, если удаленный сервер входит в локальную сеть.
После публикации веб-сервис доступен по адресу «http://localhost/test.1cws» или «http://xxx.ru/test.1cws», где xxx.ru — адрес удаленного сервера а localhost — типовой адрес локального сервера.
Авторизация к веб-сервису 1С
Для доступа к сервису нужно пройти аутентификацию.
Вопросы авторизации хорошо рассмотрены тут: http://www.forum.mista.ru/topic.php?id=341168 и в документации file:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm
Обычно веб-сервис работает под одним конкретным пользователем (чаще — специально созданным). Можно пользователя 1С «прикрепить» средствами Windows-аутентификации к пользователю Windows IUSR_ (для пользователя отключить авторизацию 1С). Как вариант, можно очистить список пользователей 1С, тогда авторизация не требуется.
Если требуется несколько пользователей, то можно создать несколько логинов для веб-сервера, к каждому из них привязать пользователя Windows и соответственно, прописать в 1С доступ к пользователям Windows.
В свойствах Пользователь и Пароль объекта WSПрокси используется не логин 1С, а логин пользователя веб-сервера.
Тестирование веб-сервиса 1С
Для тестирования 1С как веб-сервиса используйте обработку «ТестПроизвольногоВебСервиса.epf», как описано в разделе «Тестирование работающего внешнего веб-сервиса».
Файл 1cws и является WSDL-описанием веб-сервиса 1С.
Использование сервисов в Рознице
Обычно в рознице сервисы используются для оказания различных услуг населению — прием платежей, погашение кредитов, денежные переводы, покупка программного обеспечения и т.п.
При этом по оказанной услуге в 1С формируется чек, в котором сохраняются параметры транзакции. После чего этот чек распечатывается клиенту с подробной информацией об оказанной услуге. Возможна печать предварительного чека, для того, чтобы клиент подтвердил введенные с его слов данные своей подписью.
Сервис может быть по-разному интегрирован в розничную программу, написанную на языке 1С (УТ, Розница и другие):
- Может быть написана обработка или код на языке 1С, который выполняет всю работу с сервисом.
- Может использоваться программа, которая работает с сервисом, а в 1С передает только информацию для пробития чеков.
Организация служебных данных в 1С
Для хранения информации о транзакции в чеке необходимо создать дополнительную табличную часть «Сложные продажи» с реквизитами:
- Номенклатура — привязка к номенклатуре чека.
- Параметр — ссылка на справочник «Сложные продажи: Параметры».
- Значение — значение параметра, составного типа. Строковое представление должно быть довольно длинным (1024 символа), чтобы помещался текст чека.
Справочник «Сложные продажи: Параметры» содержит перечень параметров транзакции.
Табличную часть выгоднее использовать, чем набор реквизитов, т.к. у транзакции их может быть очень много, а в других чеках, не связанных с сервисом, эти реквизиты не будут использоваться, и будут занимать лишнее место. Кроме того, такое решение универсально для любого сервиса и не требует реструктуризации данных после внедрения нового сервиса.
Продавцу делается отдельная закладка (или печатная форма, чтобы не менять конфигурацию), в которой он может посмотреть табличку реквизитов транзакции для чека.
Использование обработок на языке 1С
Рассмотрим на примере условной услуги Paym для конфигурации «Розница».
- Заведем в 1С предопределенный элемент справочника номенклатуры «Paym». В режиме 1С:Предприятия после обновления конфигурации ему нужно назначить вид товара «Услуга».
- В процедуре «Добавить номенклатуру в таб. часть» модуля формы «Регистрация продаж» вызываем обработку работы с сервисом, написанную на языке 1С. В случае успешного осуществления платежа записываем и проводим чек:
Если (Номенклатура = Справочники.Номенклатура.Paym) И (ВидОперации Перечисления.ВидыОперацийЧекККМ.Возврат) Тогда
ОбработкаПлатежа = Функции.ДатьВнешнююОбработку("Paym");
ФормаПлатежа = ОбработкаПлатежа.ПолучитьФорму();
Результат = ФормаПлатежа.ОткрытьМодально();
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ЭтотОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
- Обработка должна напечатать предчек (если требуется), заполнить табличную часть сложных продаж и подготовить текст печати чека в предопределенном реквизите «PaymТекстЧека».
- В процедуре «Провести и распечатать чек» модуля чека подменяем наименование товара на сохраненное в реквизите для чека. Текст подменяется только для продажи, для возврата печатается просто название услуги, как обычно.
ИначеЕсли ВидОперации Перечисления.ВидыОперацийЧекККМ.Возврат И Выборка.НомеклатураСсылка = Справочники.Номенклатура.Paym Тогда
//Осипов PaymMaster
СтрокаСложныхПродаж = СложныеПродажи.Найти(Справочники.СложныеПродажиПараметры.PaymТекстЧека, "Реквизит");
Если СтрокаСложныхПродаж Неопределено Тогда
Товар.Наименование = СокрЛП(СтрокаСложныхПродаж.Значение);
КонецЕсли;
Отдельный вопрос — как обеспечить завершенность транзакции. Т.е. если транзакция прошла в сервисе, как сделать, чтобы она не потерялась в 1С. Наиболее оптимальный путь — сверка реестров. Но это предмет отдельного рассмотрения.
Использование программ, интегрируемых с 1С
XDTO
Часто в веб-сервисах используется XDTO. Приведем наиболее важные советы и рецепты по использованию XDTO в 1С.
XDTO в платформе 1С
XDTO-пакеты, описанные в ветке «XDTO-объекты» конфигурации, доступны для создания типов и объектов в глобальной фабрике Фабрика XDTO. Это не сразу становится очевидным.
Некоторые типы в схеме не имеют имени, чтобы их получить, надо пройтись по иерархии типов.
В примере был описан список System, содержавший структуры XDTO. Чтобы создать саму структуру, нужно было получить ее тип таки вот образом:
Тип = Фабрика.Тип("urn:my.ru:MasterData:Business", "Business").Свойства.Получить("System").Тип;
Частые проблемы с XDTO
Разные форматы XSD-схем
В некоторых форматах теги называются xs:, в некоторых xsd:, но 1С благополучно понимает оба формата. Однажды была ситуация, что XSD нормально без ошибок импортировалась в 1С, но не создавала ни одного пакета. Причина была в отсутствии атрибута targetNamespace у тега , соответственно 1С не знала, в какой пакет помещать схему, но ошибок не выдавала.
Сопровождение сервисов
Учитывая, что сервис — это совокупность двух систем — 1С и внешней, ошибки могут быть в обоих системах, что снижает общую надежность работы.
Для того, чтобы проще было разбираться в причинах отказов в работе сервисов, рекомендуется использовать комплекс мер.
Протоколирование запросов
Рекомендуется сохранять все запросы и ответы на них в каталог программы, файлы сохранять в папки вида ГГГГММДД по дням. Это очень способствует пониманию причин проблем.
Ссылки
- XDTO
- Хорошее описание XDTO http://pro1c.org.ua/index.php?showtopic=214
- Бесплатные интересные веб-сервисы:
- Аэрофлот — информация о расписании самолетов
- Морфер — склонение имен http://www.morpher.ru/WebServices/Morpher.aspx
- Неразобранные:
- Установка и использование Веб-сервисов
- v8: как изменить конфигурационный файл апача?
- v8: продолжение темы с web-сервисами — не могу подключить web-сервис
- v8: дальше ползу по веб-сервисам — не могу создать прокси…
- Книга знаний: v8: Использование внешних web-сервисов в 1С:Предприятие 8;
- Установка и использование Веб-сервисов
Возникла необходимость взаимодействовать с 1C с мобильного клиента под Windows Phone 7/8. Самым простым способом взаимодействия показалось работа через web сервисы, поддерживаемые 1С.
С точки зрения публикации web сервиса особых сложностей нет. Шаги подробно описаны в статьях:
- http://habrahabr.ru/post/136684/
- http://howknow1c.ru/programmirovanie-1c/web-servisy-1s.html
- http://infostart.ru/public/86791/
- http://1cprogrammistu.ru/60-sozdanie-web-servisa-v-1s-predpriyatii.html
- http://www.basic.visual2000.ru/kolesov/pcmag/2006-1c/2006-05/web_1c.htm
- http://v8.1c.ru/overview/Term_000000286.htm
- http://1c-dn.com/forum/forum1/topic1184/
- http://fixin.com.ru/articles/1s_web_services/article.htm
- http://infostart.ru/public/327963/
Проблемы возникли с доступом к опубликованному web-сервису 1С. Под IIS 7.5 из под Windows 2008R2 после полудня танцев с бубном проблему решить не удалось. Были изучены статьи и ветки форумов:
- http://infostart.ru/public/75205/
- http://www.forum.mista.ru/topic.php?id=568905
- http://www.forum.mista.ru/topic.php?id=665708
- http://www.forum.mista.ru/topic.php?id=539933
- и т.д.
но счастье так и не наступило.
В результате решил, что стоит попробовать поднять web сервис на Apache, поскольку с ним у меня обычно все было несколько проще с настройкой. Итак, на другом порту (8080) на том-же сервере был поднят Apache 2.2.22. В 1С был создан ещё один web сервис и опубликован уже на Apache. С настройками по умолчанию он также не заработал. Разберем ошибки.
Web сервис был опубликован в 1С под именем wsApache.
Публикация web-сервиса 1С под Apache
Соответственно, в указанном при публикации каталоге появился файл default.vrd следующего содержания:
В httpd.conf 1С добавила следующие строчки:
# 1c publication
LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.17.153/bin/wsap22.dll"
Alias "/ws" "C:/inetpub/wwwroot/ws/"
<
Directory
"C:/inetpub/wwwroot/ws/">
AllowOverride All
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/inetpub/wwwroot/ws/default.vrd"
</
Directory
>
В целом, файлы/изменения создаваемые 1С почти рабочие. Теперь о проблемах.
Правильный линк на сервис
В некоторых статьях путь к web сервису указан как: http://имя_сервера:порт/имя_при_публикации/alias?wsdl.
В моем случае:
- Имя сервера: s-1s-1-hw
- Порт: 8080
- Имя при публикации: wsApache
- Alias из файла default.vrd: service.1cws
Соответственно, НЕПРАВИЛЬНАЯ ссылка на web сервис 1С такая: http://s-1c-1-hw:8080/wsApache/service.1cws?wsdl
Если использовать такой линк, то 1C 8.2 выдаст сообщение вида:
1C:Enterprise 8 application error:
HTTP: Not found Ошибка при работе с ресурсом /ws/service.1cws
Правильный вариант:
http://имя_сервера:порт/имя_при_публикации/ws/alias?wsdl.
Это обращение эквивалентно обращению по имени сервиса из default.vrd:
http://имя_сервера:порт/имя_при_публикации/ws/name?wsdl.
В моем случае:
- Name из файла default.vrd: Service
Соответственно, ПРАВИЛЬНЫЙ линк для доступа к web сервису 1С будет такой:
http://s-1c-1-hw:8080/wsApache/ws/service.1cws?wsdl
или такой
http://s-1c-1-hw:8080/wsApache/ws/service?wsdl
Если указать ссылку с суффиксом ?wsdl, то в веб браузере отобразиться XML файл с описанием опубликованного сервиса.
Если указать ссылку без суффикса ?wsdl, то при правильной настройке должна появится страница с гиперссылкой на опубликованный сервис:
http://s-1c-1-hw:8080/wsApache/ws/Service
Авторизация пользователя при обращении к web сервису 1С
Если попытаться получить доступ к web сервису опубликованному под Apache не исправляя файл default.vrd, то появиться стандартный диалог авторизации:
Диалог авторизации на web сервисе 1С
В тестовой базе был заведен тестовый пользователь IUSR с полными правами с пустым паролем. Если ввести в диалог в качестве логина этого пользователя, то авторизация пройдет успешно и отобразиться либо XML файл, либо ссылка на него (см. выше).
Можно исключить запрос авторизационной информации вбив логин и пароль прямо в файл default.vrd, что, конечно, не рекомендуется с точки зрения безопасности, но иногда необходимо.
Это все. В моем случае каких-то дополнительных правок конфиг файлов не потребовалось.
В некоторых статьях указывалось, что нужно убрать из httpd.conf опцию «Options None«. У меня работает в обоих вариантах, т.е. когда строка присутствует и когда она удалена.
Публикация web сервиса 1С на IIS 7.5
Как уже упоминал выше, с публикацией web сервиса на IIS 7.5 с первого раза у меня не задалось, хотя тонкий клиент запускается без проблем. Поскольку пароль в конфигурационном файле по соображениям безопасности меня не устраивал, вернулся к вопросу настройки IIS. Был опубликован web сервис с именем wsIIS и именем сервиса ServiceIIS и alias-ом serviceIIS.1cws. Галка в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере» для простоты эксперимента была снята.
Публикация web сервиса 1С в IIS 7.5.
Корректная ссылка в моем случае: http://s-1c-1-hw/wsIIS/ws/ServiceIIS?wsdl. При попытке зайти из Chrome/IE получаем ошибку возвращенную IIS:
Ошибка HTTP 401.2 — Unauthorized
дабы избавиться от ошибки правим web.config сформированный 1С следующим образом:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
configuration
>
<
system.webServer
>
<
handlers
>
<
add
name
=
"1C Web-service Extension"
path
=
"*"
verb
=
"*"
modules
=
"IsapiModule"
scriptProcessor
=
"C:Program Files (x86)1cv82binwsisapi.dll"
resourceType
=
"Unspecified"
requireAccess
=
"None"
/>
</
handlers
>
<
security
>
<
authorization
>
<
add
accessType
=
"Allow"
users
=
"*"
/>
</
authorization
>
</
security
>
</
system.webServer
>
</
configuration
>
Эта правка эквивалента изменению через консоль управления IIS для нашего опубликованного приложения с именем wsIIS правил авторизации пользователя.
Настройки IIS 7.5 для доступа к web сервисам 1C
Добавление тегов security в web.config или правка правил авторизации в консоли IIS приводит к тому, что при обращении к сервису по указанной выше ссылке появляется запрос на авторизацию. Вводим нашего тестового пользователя IUSR без пароля и получаем нужный XML файл в ответе сервера.
Прописав в default.vrd логин и пароль пользователя, как было указано выше для Apache, уберем окно авторизации и сервис будет всегда авторизовываться под указанным пользователем. Как проходит авторизация можно посмотреть в логах 1C. Но вариант с прописыванием пользователя в конфигурационный файл — не наш путь, ибо не секьюрно.
Изменим настройки авторизации пользователя (в IIS проверка подлинности), чтобы использовалась Windows авторизация. Сменить можно в консоли управления IIS, либо в конфигурационном файле. Мне больше нравиться конфигурационный файл. так как проще переносить настройки при миграции на другой сервер.
Поскольку изменения секции web.config <authentication> заблокированы на уровне IIS в файле
%windir%system32inetsrvconfigapplicationHost.config
нужно зайти туда и сменить «Deny» на «Allow» для секции «authentication»:
<
sectionGroup
name
=
"authentication"
>
<
section
name
=
"anonymousAuthentication"
overrideModeDefault
=
"Allow"
/>
<
section
name
=
"basicAuthentication"
overrideModeDefault
=
"Allow"
/>
<
section
name
=
"clientCertificateMappingAuthentication"
overrideModeDefault
=
"Deny"
/>
<
section
name
=
"digestAuthentication"
overrideModeDefault
=
"Deny"
/>
<
section
name
=
"iisClientCertificateMappingAuthentication"
overrideModeDefault
=
"Deny"
/>
<
section
name
=
"windowsAuthentication"
overrideModeDefault
=
"Allow"
/>
</
sectionGroup
>
после чего РАБОЧИЙ web.config для опубликованного web сервиса 1С будет выглядеть следующим образом:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
configuration
>
<
system.webServer
>
<
handlers
>
<
add
name
=
"1C Web-service Extension"
path
=
"*"
verb
=
"*"
modules
=
"IsapiModule"
scriptProcessor
=
"C:Program Files (x86)1cv82binwsisapi.dll"
resourceType
=
"Unspecified"
requireAccess
=
"None"
/>
</
handlers
>
<
security
>
<
authorization
>
<
add
accessType
=
"Allow"
users
=
"*"
/>
</
authorization
>
<
authentication
>
<
windowsAuthentication
enabled
=
"true"
useKernelMode
=
"true"
>
<
providers
>
<
clear
/>
<
add
value
=
"Negotiate"
/>
<
add
value
=
"NTLM"
/>
</
providers
>
<
extendedProtection
tokenChecking
=
"Allow"
/>
</
windowsAuthentication
>
<
basicAuthentication
enabled
=
"false"
/>
<
anonymousAuthentication
enabled
=
"false"
/>
</
authentication
>
</
security
>
</
system.webServer
>
</
configuration
>
Эквивалент последней выполненной операции (настройка <authentication>) — публикация сервиса с включенной галкой в чекбоксе «Использовать аутентификацию операционной системы на веб-сервере». 1С при публикации меняет эту настройку не в web.config, а в настройках IIS через API. В любом случае изменения должны быть видны в консоли управления IIS:
Настройка аутентификации при публикации web сервиса 1С в IIS
На всякий случай для проверки настроек при публикации web сервиса имеет смысл в консоли управления IIS зайти в следующие разделы:
Публикация web сервиса 1С в IIS. Настройка через консоль.
После указанной выше настройки web.config, удаляем жестко прописанные логин и пароль из файла default.vrd. На всякий случай перегружаем IIS. Если для доменных пользователей прописаны корректные соответствия в учетных записях 1С, то авторизация пройдет прозрачно под доменными учетными записями, в чем можно будет убедиться посмотрев в логах авторизации 1С.
Здесь приводится ряд ошибок IIS (и способы их устранения) которые с высокой вероятностью могут возникнуть при публикации web сервиса 1С на IIS.
Доступ из Visual Studio 2012
Как подробно описано в статье на хабре, чтобы добавить ссылку на опубликованный web сервис 1С в Visual Studio для разработки клиента необходимо создать приложение (например, консольное), кликнуть правой кнопкой мышки на solution и выбрать пункт «Add Service Reference…». Следует обратить внимание на точное указание ссылки непосредственно на WSDL описание, т.е. без указания суффикса ?wsdl Visual Studio ничего не обнаружит.
Добавление reference к web службе 1С из Visual Stiudio.
Далее разрабатываем обычный клиент для web сервиса.
Удачи!!!
Переводим сервисы на 8.3.3, возможны некоторые шероховатости
Модераторы: Дмитрий Юхтимовский, Лысиков Денис
Переводим сервисы на 8.3.3, возможны некоторые шероховатости
просим отнестись с пониманием
- Гилёв Вячеслав
- Сообщений: 2544
- Зарегистрирован: 11 фев 2013, 15:40
- Откуда: Россия, Москва
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
syncmas » 13 июн 2013, 09:56
Сервис SQLSize пока не работает. Пишет вот что:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://skynet:5541 descr=192.168.0.3:5541:10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ; line=813 file=SrcDataExchangeTcpClientImpl.cpp
- syncmas
- Сообщений: 8
- Зарегистрирован: 19 май 2013, 16:45
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
syncmas » 13 июн 2013, 11:31
Сервис sqlsize пока не работает. Пишет вот что:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://skynet:5541 descr=192.168.0.3:5541:10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ; line=813 file=SrcDataExchangeTcpClientImpl.cpp
- syncmas
- Сообщений: 8
- Зарегистрирован: 19 май 2013, 16:45
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
EuLeEr » 17 июн 2013, 20:10
Личные сообщения запрещены и я не нашел, куда могу написать.
13.06.2013 года активировал свою учетную запись , потом через 3 минуты пришло сообщение
«Заявка на регистрацию учетной записи успешно выполнена!»и с тех пор так и нет подтверждения регистрации учетной записи, которое, как я понял из инструкций, должно прийти в виде имени пользователя и пароля для сервисов gilev.ru
Это сбой в системе регистрации или проблема на моей стороне — мой почтовый сервер выкинул письмо от вашего сервиса ?
Или быть может я вообще чего-то не понял ?
- EuLeEr
- Сообщений: 1
- Зарегистрирован: 17 июн 2013, 19:32
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
Гилёв Вячеслав » 21 июн 2013, 18:28
Совершенно верно, Вам должно прийти письмо с подтверждением с логином и паролем. Часто попадает в спам, обязательно проверьте там.
Если не разберетесь, пишите на
gilv@rarus.ru
- Гилёв Вячеслав
- Сообщений: 2544
- Зарегистрирован: 11 фев 2013, 15:40
- Откуда: Россия, Москва
Вернуться в Сервисы gilev.ru
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Переводим сервисы на 8.3.3, возможны некоторые шероховатости
Модераторы: Дмитрий Юхтимовский, Лысиков Денис
Переводим сервисы на 8.3.3, возможны некоторые шероховатости
просим отнестись с пониманием
- Гилёв Вячеслав
- Сообщений: 2719
- Зарегистрирован: 11 фев 2013, 15:40
- Откуда: Россия, Москва
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
syncmas » 13 июн 2013, 09:56
Сервис SQLSize пока не работает. Пишет вот что:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://skynet:5541 descr=192.168.0.3:5541:10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ; line=813 file=SrcDataExchangeTcpClientImpl.cpp
- syncmas
- Сообщений: 8
- Зарегистрирован: 19 май 2013, 16:45
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
syncmas » 13 июн 2013, 11:31
Сервис sqlsize пока не работает. Пишет вот что:
1C:Enterprise 8 application error:
Ошибка установки соединения
by reason:
server_addr=tcp://skynet:5541 descr=192.168.0.3:5541:10061(0x0000274D): Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. ; line=813 file=SrcDataExchangeTcpClientImpl.cpp
- syncmas
- Сообщений: 8
- Зарегистрирован: 19 май 2013, 16:45
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
EuLeEr » 17 июн 2013, 20:10
Личные сообщения запрещены и я не нашел, куда могу написать.
13.06.2013 года активировал свою учетную запись , потом через 3 минуты пришло сообщение
«Заявка на регистрацию учетной записи успешно выполнена!»и с тех пор так и нет подтверждения регистрации учетной записи, которое, как я понял из инструкций, должно прийти в виде имени пользователя и пароля для сервисов gilev.ru
Это сбой в системе регистрации или проблема на моей стороне — мой почтовый сервер выкинул письмо от вашего сервиса ?
Или быть может я вообще чего-то не понял ?
- EuLeEr
- Сообщений: 1
- Зарегистрирован: 17 июн 2013, 19:32
Re: Переводим сервисы на 8.3.3, возможны некоторые шероховат
Гилёв Вячеслав » 21 июн 2013, 18:28
Совершенно верно, Вам должно прийти письмо с подтверждением с логином и паролем. Часто попадает в спам, обязательно проверьте там.
Если не разберетесь, пишите на
gilv@rarus.ru
- Гилёв Вячеслав
- Сообщений: 2719
- Зарегистрирован: 11 фев 2013, 15:40
- Откуда: Россия, Москва
Вернуться в Сервисы gilev.ru
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1