gifts2017

Примеры пользования web сервисов 1С из браузера

Опубликовал Трактор Трактор (Трактор) в раздел Программирование - Практика программирования

Даны примеры реализации доступа к web сервисам 1С из браузера. Примеры web сервисов, а также javascript'ы для доступа к этим сервисам. AJAX доступ к 1С.

1С'ники как правило не сильны в web программировании и при возникновении потребности в web интерфейсе к 1С первая мысль, приходящая в голову «Web расширение от 1С». Применение web расширения от 1С не всегда оправдано и целесообразно. Web расширение — решето. Пользователь через панель инструментов может просмотреть чуть ли не всю базу. Web сервис гораздо более защищён. Альтернативой web расширению может служить web сервис 8.1 в сочетании с javascript.
Думаю что сочетание web сервиса и javascript не утратит актуальности и при выходе следующей версии платформы — управляемого приложения. Если в базе 8.2 предусмотрена авторизация, то не получится организовать доступ для всех даже к малейшему отчёту. Сопряжение интерфейса 8.2 с остальной частью сайта - задача не для слабонервных. Объём обмена с сервером в 8.2 разработчиком не регулируется.
Прямая работа с web сервисами даёт разработчику полное управление над оформлением и над составом данных, передаваемых клиенту. Как хочешь, так и оформляй, что хочешь, то и передавай. За это надо платить трудоёмкостью разработки.
Web сервис по сути ещё одна ступень абстракции. XDTO отвязывает нас от структуры метаданных 1С. В примере №2 и 3 информация из двух справочников представляется в виде одной таблицы. С помощью входных параметров web сервисов можно обеспечить их редактирование как одного. Не всегда пользователю нужен полнофункциональный интерфейс как в управляемом приложении, часто из 1С должен получаться или вноситься небольшой объём данных. Кроме того, управляемое приложение не решит вопрос сопряжения интерфейса с остальной частью сайта. В этом случае доступ к web сервису из браузера остаётся самым простым штатным решением.
Статья рассчитана на 1С'ников, хорошо знающих 8.1. Знания javascript не требуется, можно рассматривать эту статью как первые два урока по javascript. При воспроизведении или запуске примеров потребуется настроенный web-сервер и 1С v 8.1, установленная на том же компьютере для публикации web сервисов.

 

В статье использованы готовые XML-запросы для удобства понимания механизмов web сервиса. В практической работе лучше использовать программных клиентов. Например, в PHP есть объект SoapClient.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Статья.rar
.1214750768 392,05Kb
27.09.09
5143
.1214750768 392,05Kb 5143 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. cs25 (cs25) 30.06.08 10:11
Интересная статья. И примеры тоже. Плюс.
garim1965; +1 Ответить
2. Андрей Скляров (coder1cv8) 30.06.08 10:35
Спасибо! Очень интересно почитать...
3. Andrew (polygrafin) 01.07.08 15:54
Еще не смотрел, но походу, весчь интересная
4. Евгений (Evgen_5) 02.07.08 09:23
Очень интересная и полезная статья
5. GSoft. (GSoft) 02.07.08 10:39
хорошая статья
но вот бы еще ее аналог для 7ки почитать (да раритет, но надо))))
6. luidgy (luidgy) 02.07.08 12:08
7. Sergey (Sergey K) 03.07.08 08:30
+
примеры не смотрел
но jqGrid - очень понравилась :)
8. Asmody (Asmody) 04.07.08 13:14
а зачем в архиве и .doc и .odt с одинаковым содержанием?
9. Трактор Трактор (Трактор) 06.07.08 21:48
а зачем в архиве и .doc и .odt с одинаковым содержанием?
Оригинал в odt. А doc для того чтобы могли прочесть и счастливые владельцы мс офиса.
.
GSoft, для 7-ки есть пример интернет-магазина на этом сайте. 7-ка не заточена для непосредственной работы с web, нужны сторонние приблуды.
10. Михаил Ражиков (tango) 09.07.08 18:49
"Опубликуем html файл на нашем web сервере под именем, например, preved.htm. "
букофка l важна?
11. Трактор Трактор (Трактор) 09.07.08 22:19
"Опубликуем html файл на нашем web сервере под именем, например, preved.htm. " букофка l важна?
Нет. Главное чтобы ты к этой странице обращался браузером по тому имени под каким опубликована страница.
12. Геннадий Владимирович (vgv8) 12.11.08 14:20
В чём проблема?

После нажатия кнопки
Поприветствовать web сервис
выдаётся messagebox с текстом
---------------------------
Windows Internet Explorer
---------------------------
Запрос завершился неудачно. Ответ сервера: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<html dir=ltr>



<head>

<style> a:link {font:8pt/11pt verdana; color:FF0000} a:visited {font:8pt/11pt verdana; color:#4e4e4e}

</style>



<META NAME="ROBOTS" CONTENT="NOINDEX">



<title>￿ ￿￿￿￿￿￿￿￿ ￿￿￿itle>



<META HTTP-EQUIV="Content-Type" Content="text-html; charset=Windows-1251">

</head>



<script>

function Homepage(){

<!--

// in real bits, urls get returned to our script like this:

// res://shdocvw.dll/http_404.htm#http://www.DocURL.com/bar.htm



//For testing use DocURL = "res://shdocvw.dll/http_404.htm#https://www.microsoft.com/bar.htm"

DocURL=document.URL;



//this is where the http or https will be, as found by searching for :// but skipping the res://

protocolIndex=DocURL.indexOf("://",4);



//this finds the ending slash for the domain server

serverIndex=DocURL.indexOf("/",protocolIndex + 3);



//for the href, we need a valid URL to the domain. We search for the # symbol to find the begining

//of the true URL, and add 1 to skip it - this is the BeginURL value. We use serverIndex as the end marker.

//urlresult=DocURL.substring(protocolIndex - 4,serverIndex);

BeginURL=DocURL.indexOf("#",1) + 1;

urlresult=DocURL.substring(BeginURL,serverIndex);



//for display, we need to skip after http://, and go to the next slash

displayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);

InsertElementAnchor(urlresult, displayresult);

}



function HtmlEncode(text)

{

return text.replace(/&/g, '&').replace(/'/g, '"').replace(/</g, '<').replace(/>/g, '>');

}



function TagAttrib(name, value)

{

return ' '+name+'="'+HtmlEncode(value)+'"';

}



function PrintTag(tagName, needCloseTag, attrib, inner){

document.write( '<' + tagName + attrib + '>' + HtmlEncode(inner) );

if (needCloseTag) document.write( '</' + tagName +'>' );

}



function URI(href)

{

IEVer = window.navigator.appVersion;


---------------------------
ОК
---------------------------

13. Трактор Трактор (Трактор) 12.11.08 14:34
Я вижу только заготовок страницы с описанием ошибки, но самого описания ошибки нет.
Прокрути дальше и покажи что написано после тега <body>
Ты установил модуль web сервисов в IIS?
C:\Program Files\1cv81\bin\wsinst.exe -IIS
14. RomDron (RomDron) 21.11.08 08:56
А продолжение будет??? Как с авторизацией быть?
15. Трактор Трактор (Трактор) 21.11.08 09:57
>> А продолжение будет??? Как с авторизацией быть?
А надо? Какие-то наработки ещё есть, но они не представляют собой качественного изменения. Только развитие изложенной идеи.
Среди обнаруженных ограничений нашёл что средствами javascript в 1С не получится по-человечески ни затолкать ни получить файл. Поэтому если требуется добавлять/читать файлы, то лучше использовать серверный язык, например PHP.

С авторизацией немного разобрался.
1. После танцев с бубном боги сказали что если база файловая, то ей лучше лежать на fat32. Тогда проблем с авторизацией средствами 1С нет.
Для файловой базы на NTFS авторизацию средствами 1С запустить не удалось, зато хорошо работает доменная авторизация.
Если к 1С обращаться серверным языком, то можно всегда это делать под одним пользователем с доменной авторизацией. Это не слишком безопасно, но работоспособно.
2. В клиент-серверной версии проблем с авторизацией нет. Прекрасно катит авторизация средствами 1С.
16. Трактор Трактор (Трактор) 10.12.08 11:28
Кстати, слабодокументированная возможность - анонимный доступ к базе. Для этого в опубликованном файле *.1cws надо указать имя и пароль
Вот пример файла primer.1cws

<?xml version="1.0" encoding="UTF-8"?>
<service namespace="http://primer.ru" name="РаботаСКлиентами" connectString="Srvr="192.168.0.8";Ref="uttest";Usr="traktor";Pwd="123456";"/>

Если теги покоцаются, то я не виноват.
taishy; WiseSnake; +2 Ответить 1
17. Михаил Ражиков (tango) 10.12.08 13:54
(15) "средствами javascript в 1С не получится по-человечески ни затолкать ни получить файл"
Извините, в чем проблема?
речь идет об обмене файлами между IIS и 1С
или между клиентом и сервером?
18. Трактор Трактор (Трактор) 10.12.08 16:49
>> Извините, в чем проблема?
Речь идёт об отношениях между клиентом (браузером) и сервером (Apache, IIS).
1. При передаче файла клиенту 1C отдаёт XML файл в котором файл закодирован в base64. Браузер получает этот файл, закодированный в base64 и ничего с ним сделать не может. javascript не может записать файл на диск. Отобразить файл как картинку может только если размер файла меньше 4-х кБ.
2. При передаче файла на сервер наступаем на те же грабли, только с другого края. javascript не может прочитать файл клиента. Это ограничение безопасности. Если бы удалось обойти это ограничение, то проблем бы не было. На javascript.ru мне посоветовали отправлять файл на сервер, там PHP'ом кодировать в base64 и возвращать клиенту. Нафига это надо? Чем так легче РНР'ом сразу писать файл в web сервис 1С.
.
tango, если ты знаешь как обойти эти ограничения - подскажи. Моя благодарность не будет иметь границ в пределах разумного :-)
19. Михаил Ражиков (tango) 10.12.08 16:59
в порт-фолио две задачи по веб-доступу, обе без "сервисов", чисто СОМ-объект,
в модуле внешнего соединения формирую текст для asp-response, при этом файл на сервере
указывается просто как <A href="file">
а получаю из формы обыкновенным POSTом
единственное, на что наткнулся - и то - не грабли - просто не в лоб решается - удаление файла на сервере, 1ска во внешнем соединении этого не может
20. Михаил Ражиков (tango) 10.12.08 17:06
в модуле внешнего вся эта радость выглядит примерно так:
Код
// customers
Функция getCustList() Экспорт
СписокКонтрагентов = "";
Попытка
спр = Справочники.Контрагенты.Выбрать(Константы.КонтрагентыWWW.Получить());
СписокКонтрагентов = СписокКонтрагентов + "
|<table cellspacing=1 cellpadding=1 border=1 ID=Table>";
Пока спр.Следующий() Цикл
   Если SelCust.НайтиПоЗначению(спр.Ссылка)=Неопределено тогда
      Check =Ложь;
   Иначе
      Check = Истина;
   КонецЕсли;
   value = спр.Код;
СписокКонтрагентов = СписокКонтрагентов + "<tr><td><INPUT id=Check type=checkbox name=Check
|value="+value+" "+?(Check,"checked","")+">
|</td><td>"+спр.Наименование+"</td></tr>";   
КонецЦикла;
СписокКонтрагентов = СписокКонтрагентов + "</table>";
Исключение
Константы.Лог.Установить(Константы.Лог.Получить()+Символы.ПС+ОписаниеОшибки());      
КонецПопытки;
Возврат СписокКонтрагентов;
КонецФункции
Показать полностью
21. Михаил Ражиков (tango) 10.12.08 17:09
to support, фигня какая-то со слешами
22. Трактор Трактор (Трактор) 10.12.08 17:36
Пользовать com объекты тоже хорошее решение. Правда только для windows+IIS.
Файлы на сервере надо будет удалять ASP'ом после отдачи их их клиенту или после завершения сессии. Но тут я не силён.
23. Михаил Ражиков (tango) 10.12.08 17:57
фишка еще в том, что ком есть и для 77
удалять у меня по ходу не надо, админ удалит, ежели чё, потому и не заморачивался
но, похоже, решение на яваскрипте встроено:
Код
 var fso, f;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.CreateTextFile("c:\\testfile.txt", true);
f.WriteLine("This is a test.");
f.Close();
f = fso.GetFile("c:\\testfile.txt");
f.Delete();
Показать полностью

24. Трактор Трактор (Трактор) 11.12.08 12:43
ActiveXObject это не javascript. Это огромная дыра в безопасности IE. Твой код работает только в IE.
Если предполагается использовать только ИЕ, то да, твоё решение прокатит.
.
>> фишка еще в том, что ком есть и для 77
Базару нет. Для 77 предложенный тобой способ единственный. Иначе вживую к базе не достучаться. Для 8-ки он тоже хорош, серьёзных минусов назвать не возьмусь.
Но я бы отдал построение страниц web серверу, а из 1С отдавал только данные. Как говорится каждому своё.
25. Chippo (TbSasha) 25.01.09 19:31
Подскажите пожалуйста почему у меня не получается подключиться. В apache я все прописал вроде как надо. Пытаюсь подключиться и когда в браузере набираю http://localhost/ws/preved.1cws выводит {http://www.sample-package.org}:ЗдоровенькиБулы и когда нажимаю на это то выходит:

soap:Client Ошибка вызова операции сервиса: {http://www.sample-package.org}:ЗдоровенькиБулы:getWSDL() по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор Ошибка вызова операции сервиса: {http://www.sample-package.org}:ЗдоровенькиБулы:getWSDL() по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор

В чем может быть проблема?
26. Сергей (seermak) 25.01.09 19:52
я искал в гугле по строке "inurl:"asmx?wsdl"" сервисы и их юзал
27. Трактор Трактор (Трактор) 26.01.09 09:09
25 Модуль web сервиса ЗдоровенькиБулы выглядит так:


Функция ПриветХлопцы()
Возврат "Здоровеньки булы, друзи!"
КонецФункции

Такая ошибка может выдаваться если
1. ты ничего не написал после слова Возврат.
Или
2. В свойствах метода ПриветХлопцы не указал тип возвращаемого значения string (http://www.w3.org/2001/XMLSchema)
28. Михаил Ражиков (tango) 26.01.09 14:56
(24) "ActiveXObject это не javascript. Это огромная дыра в безопасности IE. Твой код работает только в IE."
в IIS, да? до IE этот код, в общем-то не доходит, ранэтсервер, так сказать... :)
29. Трактор Трактор (Трактор) 26.01.09 17:44
В 27 и это была попытка выделить текст курсивом. Не получилось :-( Не обращайте на них внимания.

28 tango, или ты или я не в теме. Я всегда считал что яваскрипт не исполняется на сервере. Это клиентский язык. Неужели я ошибаюсь?
30. Сергей (zsergey) 09.02.09 12:28
Подскажите, пожалуйста, какие настройки нужно произвести, чтобы заработало под IIS?

Сейчас при нажатии на кнопку выскакивает сообщение:

"Запрос завершился неудачно. Ответ сервера:
<?xml version="1.0" encoding="UTF-8"?>
<service namespace="http:/sample-package.org" name="ЗдоровенькиБулы" connectString="File="C:\Work\1c\WSDemo";"/>."

C:\Work\1c\WSDemo - путь по которому расположены файлы конфигурации.
31. Трактор Трактор (Трактор) 10.02.09 09:53
Такой ответ говорит о том что IIS не видит компоненты 1С, обеспечивающей работу web сервисов.
Посмотри на файл *.1cws браузером. Обращение к нему может выглядеть так http://localhost/preved.1cws
Сервер должен выдавать ссылку в этом роде:
{http:/sample-package.org}:ЗдоровенькиБулы

Под этим текстом должна быть WS ссылка на получение описания сервиса.
http://localhost/preved.1cws?wsdl

Если ты увидишь что-то вроде {http:/sample-package.org}:ЗдоровенькиБулы, то это значит что модуль web сервисов в IIS установлен верно. До получения такой ссылки базу 1С трогать не стоит, IIS к ней ещё не обращается.
32. Михаил (bme) 13.02.09 06:18
Подскажите, пожалуйста, как можно вызвать операцию из строки браузера?

Например: http://localhost/preved.1cws/ПриветХлопцы

Окружение: Apache 2.2, 1C 8.1.13, Win 2003
33. Михаил (bme) 13.02.09 09:14
Разобрался, есть хороший инструмент для отладки web сервисов - SoapUI
34. Владимир Лошко (Loshko_WR) 05.03.09 14:21
Скачал, установил по инструкции.
При входе на http://localhost/wwwroot/www1csrv/preved.htm пишет:
Запрос завершился неудачно. Ответ сервера:<?xml version"1.0" encoding="UTF-8"?><service namespace="htto://www.sample-package.org" name="ЗдоровенькиБулы" connectString="File="\\Ste\Base1c8\EnterpriseTE&;;">
Если открываю файл preved.htm из папки или из IIS то сначала открывается страница с кнопкой, после нажатия на нее выходит та же ошибка.
WinXP Pro, 1С:Предприятие 8.1 (8.1.12.101), УПП редакция 1.2 (1.2.19.1)
WEB расширение 1.1 на этом-же ПК и с этой же базой работает
Че делать-то??? СПАСИБО заранее.
35. Владимир Лошко (Loshko_WR) 05.03.09 14:53
Сделал как в 31 ссылка http://localhost/preved.1cws?wsdl теперь ссылка есть.
Но при нажатии кнопки пишет ошибка доступа к файлу \\Ste\Base1c8\EnterpriseTE\1Сv8.cdn, а уменя его (1Сv8.cdn) в базе 1С по сетевому пути нет.
36. Трактор Трактор (Трактор) 05.03.09 15:52
(35) Это значит что ты пользуешь файловую 1Сину и в базе есть пользователи. Как бороть я уже писал. Либо снеси всех пользователей либо переведи базу в клиент-серверный вариант либо переложи на диск на с FAT32.
37. Владимир Лошко (Loshko_WR) 31.03.09 07:46
По выложенному примеру сделал вывод списка платежек.
Но не знаю как передать параметры в вызов процедуры, чтобы можно было задать период выборки и, например, подразделение.
И еще как тут на форуме свои разработки выкладывать, а то мож кому пригодится.
38. Трактор Трактор (Трактор) 31.03.09 09:44
39. Dmitry Zhulyabin (1dz) 22.04.09 16:33
Здоровеньки Булы!
помогите заставить работать этот сервис, плиз
установил, пример 1 работает:
http://localhost/preved.1cws выдает:
http://www.sample-package.org}:ЗдоровенькиБулы
http://localhost/preved.1cws?wsdl выдает описание веб сервиса.

пример 2:
http://localhost/sotrudniki.1cws выдает:
{http://www.sample-package.org}:Сотрудники
http://localhost/sotrudniki.1cws?wsdl выдает:

- <ht ml>
- <head>
<title>A server error occurred.</title>
</head>
<h1>Неизвестная ошибка. server_addr=tcp://SERV1C:1562 descr=Ошибка сетевого доступа к серверу (Windows Sockets - 10054(0x00002746). An existing connection was forcibly closed by the remote host. ) line=1031 file=.\src\DataExchangeTcpClientImpl.cpp по причине: server_addr=tcp://SERV1C:1562 descr=Ошибка сетевого доступа к серверу (Windows Sockets - 10054(0x00002746). An existing connection was forcibly closed by the remote host. ) line=1031 file=.\src\DataExchangeTcpClientImpl.cpp</h1>
<hr />
An error occurred processing this request.
</html>

включен технологический журнал в дамп падает rphost
запускаем отладчик, вызываем ошибку, анализируем дамп:
In rphost__PID__952__Date__04_21_2009__Time_08_47_22PM__71__Sec­ond_Chance_Exception_C0000005.dmp the assembly instruction at backend!SCOM_Main+d180 in C:\1cv81\bin\backend.dll from 1C has caused an access violation exception (0xC0000005) when trying to read from memory location 0x00000000 on thread 5

Почему так? Жду помощи....
БД на MSSQL 2005 sp2, 1С 8.1.13.41, www -серверы были испробованы Apache2.2 и IIS6.
Может сразу в техподдержку?
40. Трактор Трактор (Трактор) 22.04.09 21:37
Я ничего толкового про эту ошибку сказать не могу.
Рекомендую обратиться к Славе Гилёву.
У него описаны способы лечения. http://www.gilev.ru/1c/81/error54/
41. Трактор Трактор (Трактор) 22.04.09 21:43
1С при обращении просит логи технологического журнала и дампы аварийного завершения. Если решишься обращаться в 1С, то укажи в logcfg.xml каталог для дампов:
<dump location="C:\Program Files\1cv81\dumps" create="1" type="3"/>

В технологический журнал пиши всё. Потом всё что получишь высылай в 1С может помогут.
42. Dmitry Zhulyabin (1dz) 23.04.09 08:14
http://www.gilev.ru/1c/81/error54/ видел, делал как написано, переустанавливал 1с и MSSQL на другом железе, дампы 1с есть, только читать их неизвестно чем. Напишу Гилеву
43. Тимофей Галиаскаров (zorkKiy) 18.05.09 17:49
Подскажите, пытаюсь получить список сотрудников, получаю следующее:
____________________________
Запрос завершился неудачно. Ответ сервера: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Неверный аргумент. </faultstring>
<detail>Неверный аргумент. </detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
________________________

Web-сервис подключен - дебагер вываливается на брейкпоинте в модуле внешнего соединения (1С), а в модуль Web-сервиса не попадает. Я так понимаю ошибка происходит до вызова модуля Web-соединения. Причем с Web-сервисом "ЗдоровенькиБулы" все хорошо - отрабатывает как надо. Похоже входящий параметр как-то не так обрабатывается при разборе SOAP пакета..
44. Трактор Трактор (Трактор) 18.05.09 21:08
(43) Значит дело действительно во входном аргументе (параметре). Посмотри текст запроса, который идёт в 1С. У тебя, скорей всего, нет тега СтрокаПоиска.
Добавь хоть пустой тег <m:СтрокаПоиска> </m:СтрокаПоиска>

1С при получении запроса сначала проверяет его на соответствие WSDL. А в WSDL прописан обязательный входной параметр СтрокаПоиска. Только после этого управление передаётся твоему коду в модуле web сервиса.
45. Тимофей Галиаскаров (zorkKiy) 18.05.09 22:02
<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:ПолучитьСписокСотрудников xmlns:m="http://www.sample-package.org"> <m:СтрокаПоиска xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">кар</m:СтрокаПоиска> </m:ПолучитьСписокСотрудников> </soap:Body> </soap:Envelope>
_________________________
Вот то, что уходит в 1С..
46. Трактор Трактор (Трактор) 18.05.09 22:53
(45) Только что проверил. Поднял заново сервис. Работает. Вот текст запроса.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.sample-package.org">
<soapenv:Header/>
<soapenv:Body>
<sam:ПолучитьСписокСотрудников>
<sam:СтрокаПоиска>вич</sam:СтрокаПоиска>
</sam:ПолучитьСписокСотрудников>
</soapenv:Body>
</soapenv:Envelope>

Попробуй http://83.237.194.40:180/ws/sotrudniki.1cws?wsdl
47. Трактор Трактор (Трактор) 18.05.09 22:53
имя пользователя inet без пароля
49. Армен Арабханян (Arabo_xv) 20.05.09 12:28
Наличие базы в файловом режиме на разделе NTFS не создаёт проблемм с авторизацией. Там 3 уровня авторизации.
1 - Веб сервер
2 - Права доступа на файлы (в том числе и для файлов базы) для пользователя под которым запускается веб сервис.
3 - Авторизация в информационной базе.

В 99% случаях вы упираетесь в 2 пункт. Решение этой проблеммы простая настройка права доступа к вайлам.
50. fantasy2 (fantasy2) 03.06.09 17:34
1с 8.1 файловая так работает?
51. fantasy2 (fantasy2) 03.06.09 17:54
http://localhost/preved.htm
после загрузки этой страницы
видим кнопку "Поприветствовать web сервис"
при нажатии
или ошибка на весь экран
Запрос завершился неудачно Отвер сервера
<DOC TIPE HTMLPUBLIC DTD HTML 3.2 FINAL>
или кнопка меняет надпись на "ждем ответа" и все.
52. Трактор Трактор (Трактор) 03.06.09 19:14
(51) Ответ сервера похож на заголовок ошибки. Скорей всего причина в том что не подключён модуль wsap22.so (wsapch2.so, wsap22.dll, wsapch2.dll, wsisapi.dll) к web серверу. Проверь что возвращает http://localhost/preved.1cws
Если к фирефоксу подключишь firebug, то сможешь видеть запросы, ушедшие на сервер и полученные браузером. Они должны быть похожи на запросы, приведёные в статье.
Почитай обсуждение. Тут много писалось. Повторять не хочется.
53. ValentinV (ValentinV) 24.06.09 10:10
Здорово!
А в качестве сервера SOAP что-то другое, кроме 1с, использовать?
54. ValentinV (ValentinV) 24.06.09 11:59
Очень хорошо с методической точки зрения написано.
Я такого стиля очень давно не видал.
Огромное спасибо.
55. megatrend - (megatrend) 15.09.09 15:58
Путь к документации в doc-файле теперь должен быть такой : file:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634
56. mc2 31.10.09 11:54
Может кто подскажет, почему не работает с 8.2?
Если указываю относительный путь в Open, то запрос не отсылается, если полный - статус ответа 0. Пытался такой же скрипт на 1С смоделировать - там возвращается ошибка 500. Что не так делаю?
57. Трактор Трактор (Трактор) 31.10.09 21:22
8.2 ещё не пробовал. Что браузер говорит при открытии http://localhost/preved.1cws ?
58. Вячеслав Кадацкий (marsohod) 05.12.09 02:57
+
Мне тоже нравится SciTE ... :)
59. Pavel Kalegin (pk_xD) 10.06.10 00:56
кто нить подключал веб сервисы в асп, почему то когда вызываю метод сервиса пишет: There is an error in XML document (7, 4).
60. Трактор Трактор (Трактор) 10.06.10 09:40
(59) Сграбь снифером (сетевым монитором) ответ web сервиса и дай его сюда. Не видя xml документа трудно сказать что не так в четвёртом символе седьмой строки.
61. Pavel Kalegin (pk_xD) 10.06.10 10:22
омг... кажеться понял в чем ошибка, тип возвращаемого значения ф-ии был не тот...
теперь проблеема как в асп описать тип возвращаемого значения... ))
62. assan assan (assan) 11.07.10 22:07
под IIS всё работало , поставил Apache, IIS убрал
вызовы .....xxxx.1cws и .....xxxx.1cws?wsdl возврвщают одно и тоже - содержимое файла xxxx.1cws
и, видимо поэтому, 1с не могу импортировать wsdl , получить ws ссылку.
63. Трактор Трактор (Трактор) 11.07.10 22:14
(62) Модуль 1С не подгружен в апач. Ты точно добавил в httpd.conf такую строку ?
LoadModule _1cws_module "C:\Program Files\1cv81\bin\wsap22.dll"
64. assan assan (assan) 11.07.10 22:39
LoadModule _1cws_module "C:\Program Files\1cv81\bin\wsap22.dll"

добавил, с правами вроде нормально. Похоже, что модуль не подгружается, или ещё
ProcessMonitor пишет
Operation: QueryOpen
Result: SUCCESS
Path: C:\Program Files\1cv81\bin\wsap22.dll
65. Трактор Трактор (Трактор) 12.07.10 11:45
(64) Странно. С таким не сталкивался.
Версия модуля 1С совпадает с версией апача? Если апач 2.0, то надо писАть так LoadModule _1cws_module "C:\Program Files\1cv81\bin\wsapch2.dll"
66. assan assan (assan) 12.07.10 12:18
версии соответствуют.
есть версия apache , которая проверена и работает? (а апач 2.2.15 скачивал с ихнего сайта, последняя версия, мож глючит)
и папка conf в которой есть изменения ?
скинь на мыло, может я чё в конфиге не то делаю.
67. Трактор Трактор (Трактор) 12.07.10 14:08
(66) lyay собака яндэкс точка ру пришли httpd.conf
68. assan assan (assan) 12.07.10 14:17
поставил ISS - работает.
останавливаю ISS, устанавливаю apache, (при установке пишу localhost)
в httpd вставляю
LoadModule _1cws_module "c:/Program Files/1cv81/bin/wsap22.dll"
в папку htdocs помещаю файл ***.1cws
обращаюсь http://localhosc/***.1cws и http://localhosc/***.1cws?wsdl
результат одинаковый.
останавливаю apache, запускаю IIS (http://localhost/ws/***.1cws?wsdl) - работает......
наверно я что-то не так настраиваю....
69. Трактор Трактор (Трактор) 12.07.10 14:20
(66) раскопал у себя httpd.conf от 8.1
Оказывается я уже начал забывать как она публикуется. Файлы ws надо класть в папку, указанную в алиасе. Вот полная цитата публикации:

LoadModule _1cws_module "C:\Program Files\1cv81\bin\wsap22.dll"

Alias /ws "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ws"

<Location /ws >
    DirectorySlash Off
    SetHandler 1cws-process
    Allow from all
</Location>
...Показать Скрыть
70. assan assan (assan) 12.07.10 15:16
ТРАКТОРУ - УРА!!!!!!
для IIS рекомендую инструкцию Настройка IIS
71. Авдеев Иван (wonrims85) 15.09.10 19:36
Запускаю сервис, требует аутентификацию. Если ввести пароль и имя пользователя из 1с, то возвращает Ошибка соединения с информационной базой. Что за черт, уже всю голову сломал, в инструкции ничего про это нет. У меня apache 2.2?
72. Трактор Трактор (Трактор) 15.09.10 20:28
(71) почитай обсуждение. Этот вопрос задавался многажды. У пользователя под которым работает апач нет прав на файл базы 1С.
73. Авдеев Иван (wonrims85) 17.09.10 00:07
(72) Дело не в этом, когда я удаляю всех пользователей из конфигуратора, то все работает, если добавить хотя бы одного, то при запуске веб-сервиса требует аутентификацию, причем пароль из 1с не подходит, у пользователя стоят полные права
74. Трактор Трактор (Трактор) 17.09.10 07:48
(73) Перейди на клиент-серверную версию. Это точно поможет.
75. assan assan (assan) 17.09.10 15:34
76. Сергей Доровенко (DSirius) 05.02.11 19:54
Очень полезная и нужная статья.
А как реализовать загрузку в 1с измененных данныйх. На пример, изменили фамилию на сайте и эти изменения отразились в базе. Очень нужно реализовать именно такое взаимодействие и причем онлайн. На платформе 8.2
77. Дмитрий Павлик (DimaP) 15.04.11 09:12
в 8.2 вообще файлы .1cws не публикуются :(
Как надо настраивать IIS для этого случая и каким образом делать обращение к веб-сервису?
Пока что экспериментирую на "Здоровеньки булы".

У меня задача такая: по переданному коду 1с должна возвратить таблицу с данными.
78. Трактор Трактор (Трактор) 25.04.11 21:50
(77)Что-то перестали приходить уведомления. В 8.2 обычно публикуются файлы default.vrd
79. Виталий Трач (vitalya24) 09.09.11 03:15
полезная весчь эти веб сервисы, реализовал при их помощи связь с тсд)))
80. Вадим Matvienko (1cvirus) 10.09.11 12:03
Супер - наконец-то я хоть немного понял.
81. евгений федоров (tartalia) 26.09.11 12:18
Мне удалось реализовать подключение для разработки таких WEB-интерфесов, почему-то 1С это не очень широко рассказывает.
82. Валерий Tester (kxl) 07.10.11 11:46
Примеры помогли в свое время
83. me Halyna (mehalyna) 16.10.11 19:05
84. FFFF FFF (Gasdrubal) 19.10.11 06:12
Не работает под IIS? подскажите как нстроить? в чем различия? Может быть я пути неверно прописываю?
85. Трактор Трактор (Трактор) 19.10.11 09:55
(84) Пошаговая инструкция настройки web-сервисов для 1Сv8.1 и IIS 7.5/7.0 http://infostart.ru/public/75205/
Настройка веб-клиента 1С:Предприятие 8.2 под Windows 7 x64 и IIS http://infostart.ru/public/71480/
88. Трактор Трактор (Трактор) 19.10.11 10:10
(86) Всё верно написал. Так всё и есть. Или править настройки безопасности браузера, как это делает 1С, или работать php. Примеры даны на яваскрипте только для лучшего понимания внутренностей обмена меж браузером и веб сервером.
tango тебя тут врядли услышит.
89. Евгения (ntvg) 01.11.11 18:55
Спасибо! Очень интересная статья
90. Олег Наумов (Oleg51) 06.11.11 09:45
при публикации веб-сервиса в папке с веб доступом появляется *.vrd, а не *.1cws
ошибка 405 после отправки данных на сервак, соответственно ответа нет.
91. Трактор Трактор (Трактор) 06.11.11 16:33
(90) Всё верно в 1С 8.2 публикуется именно default.vrd, а обращаться надо по адресу ИмяСервиса.1cws
92. Макс Савостин (mc1c80) 09.11.11 15:44
Не могу пока скачать файлы , но очень хочется.
Очень был бы рад, если бы кто-то выложил на другом сайте эту статью.
93. Алексей Горнеев (gorneev) 12.11.11 18:11
Это точно, пример очень нужный
95. Степан Запорный (zastep) 17.11.11 15:45
Интересно, надо попробовать [+]
96. Леонид Мельников (Kaperang) 22.11.11 17:34
Объединил свою тестовую конфигурацию с конфигурацией из примера.
Платформа 8.2.13.219

Опубликовал на IIS под именем "AlfaTest82" в папку "C:\Inetpub\wwwroot\AlfaTest82\" с установленной галкой "Использовать аутентификацию операционной системы на веб-сервере".
В папке "C:\Inetpub\wwwroot\AlfaTest82\" при публикации был создан файл default.vrd следующего содержания:
<?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="/AlfaTest82"
		ib="Srvr="Srv1C:1641";Ref="AlfaTest82";">
	<ws>
		<point name="ЗдоровенькиБулы"
				alias="preved.1cws"/>
		<point name="Сотрудники"
				alias="sotrudniki.1cws"/>
	</ws>
</point>
...Показать Скрыть


Ввожу в браузере "http://localhost/AlfaTest82/preved.1cws"

Получаю сообщение: "Файл не обнаружен 'v8res://mngsrv/preved.1cws' "
97. Трактор Трактор (Трактор) 22.11.11 17:38
(96) Такой ошибки я не встречал, но путь приведён внутри 1С. Значит опубликовано верно. Похоже что криво объединил.
98. Леонид Мельников (Kaperang) 22.11.11 17:50
(97) Создал пустую базу (платформа 8.2, клиент-серверный вариант, MS SQL 2005).
Загрузил в нее конфигурацию из примера, опубликовал

Ввожу в браузере:"http://srv1c/IISTest/preved.1cws"

Получаю ту же ошибку: "Файл не обнаружен 'v8res://mngsrv/preved.1cws' "
99. Трактор Трактор (Трактор) 22.11.11 17:53
(98) Сейчас не с руки подымать весь пример, извини.
Я IIS не пользовал. Только апач. С ним проблем не было.
100. Леонид Мельников (Kaperang) 25.11.11 16:33
снес IIS, поставил Апач. Все один в один.
Если на установку и натсройку IIS было потрачено пару часов вдумчивого чтения мануалов, настройка Апача заняла 15 минут. Это пока единственное замеченное преимущество. Из недостатков - один фиг не работает, причем симптоматика один в один.
Непонятно, как у Апача в плане информационной безопасности, IIS как то посерьзнее кажется.
101. Трактор Трактор (Трактор) 25.11.11 16:38
(100) В порядке танцев с бубном могу предлагаю попробовать запустить web сервис на другой базе. Путь внутри 1С, ошибка, похоже тоже там. Или коцаная конфигурация или платформа 1С криво работает.
Попробуй тестирование исправление, затем другую базу.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа