IE 2016

Примеры пользования 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
5131
.1214750768 392,05Kb 5131 Скачать

См. также

Лучшие комментарии

16. Трактор 10.12.2008 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";"/>

Если теги покоцаются, то я не виноват.
Ответили: (143)
+ 2 [ taishy; WiseSnake; ]
# Ответить
223. newborn 17.04.2015 14:31
(221) Трактор,
Спасибо, но я опять чего-то не доганяю.
Вызываю в браузере.
http://127.0.0.1/test/preved.htm
Ответ
{"#exception":"{http://v8.1c.ru/8.2/virtual-resource-system}Exception","exception":{"clsid":"580392e6-ba49-4280-ac67-fcd6f2180121","reason":404,"descr":"HTTP: Not found\nОшибка при выполнении запроса GET к ресурсу /preved.htm:"}}
+ 1 [ mkostya; ]
# Ответить
177. Трактор 19.12.2012 16:59
(176) ПакетXDTO может быть никак не связан с типами данных конфигурации. В примере картинка с примером как может быть отображён документ в xdto. Показаны поля xdto объекта и одно из полей имеет сложную структуру и может повторяться много раз - некий аналог табличной части.
Про манипуляции с данными документа я не говорю, подразумеваю что это всем известно.
+ 1 [ cs25; ]
# Ответить
137. Трактор 04.12.2012 11:19
(136)
1. Читаем обсуждение. Эти вопросы уже обсуждались.
2. Выясняем имя базы в файлике default.vrd в параметре base="/ИмяБазы1С"
3. Переходим http://localhost/ИмяБазы1С/ws/preved.1cws?1cws
Если видим описание wsdl Тогда
1С состыкована с Апачем правильно.
Иначе
приводим здесь файлики default.vrd и httpd.conf
КонецЕсли;
+ 1 [ cs25; ]
# Ответить
179. Трактор 24.12.2012 11:23
(178) cs25,
>> Как тут добавить добавление строк из ТЧ "Tovary" ?
Так:
ДокументТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "ZakazPokupatelya");
ZakazPokupatelya = ФабрикаXDTO.Создать(ДокументТип);
TovaryТип = ДокументТип.Свойства.Получить("Tovary").Тип;
Пока Выборка.Следующий() Цикл
	Tovary = ФабрикаXDTO.Создать(TovaryТип);
	Tovary.Nomenklatura = ПолучитьЭлементСсылка(Выборка.Номенклатура, Строка(Выборка.Номенклатура));
	Tovary.Kolichestvo = Выборка.КоличествоТовара;
	ZakazPokupatelya.Tovary.Добавить(Tovary);
КонецЦикла;
...Показать Скрыть
+ 1 [ cs25; ]
# Ответить
143. Трактор 04.12.2012 16:11
(142) Честно говоря я уже подзабыл 8.1. Там есть файлик C:\Program Files\1cv81\bin\wsinst.exe. Он умеет настраивать Апач. Попользуй его. Затем прочти комментарии (15), (16) и (63).
Ответили: (145)
+ 1 [ cs25; ]
# Ответить
69. Трактор 12.07.2010 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>
...Показать Скрыть
+ 1 [ assan; ]
# Ответить
1. cs25 30.06.2008 10:11
Интересная статья. И примеры тоже. Плюс.
+ 1 [ garim1965; ]
# Ответить
159. zShamaNz 07.12.2012 18:21
Просто ФайрФокс17 оказался - для него также как в ФайрФокс3.
function определитьБраузер(){
	var userAgent = navigator.userAgent.toLowerCase();
	// Определим используемый браузер
	browser = {
		version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
		safari: /webkit/.test( userAgent ),
		opera: /opera/.test( userAgent ),
		msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
		firefox17: /firefox\/17/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
		firefox3: /firefox\/3/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
		firefox2: /firefox\/2/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
		firefox1: /firefox\/1/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
	}
}
...Показать Скрыть
Ответили: (166)
+ 1 [ Трактор; ]
# Ответить
193. Трактор 17.05.2013 15:11
(192) В свойствах пользователя базы 1С надо для всех пользователей снять галку "Показывать в списке выбора"

Или набиваешь таким образом себе стартмани для скачивания?
Ответили: (194)
+ 1 [ xxxpb_; ]
# Ответить

Комментарии

1. cs25 30.06.2008 10:11
Интересная статья. И примеры тоже. Плюс.
+ 1 [ garim1965; ]
# Ответить
2. coder1cv8 30.06.2008 10:35
Спасибо! Очень интересно почитать...
# Ответить
3. polygrafin 01.07.2008 15:54
Еще не смотрел, но походу, весчь интересная
# Ответить
4. Evgen_5 02.07.2008 09:23
Очень интересная и полезная статья
# Ответить
5. GSoft 02.07.2008 10:39
хорошая статья
но вот бы еще ее аналог для 7ки почитать (да раритет, но надо))))
# Ответить
6. luidgy 02.07.2008 12:08
Спасибо за статью
# Ответить
7. Sergey K 03.07.2008 08:30
+
примеры не смотрел
но jqGrid - очень понравилась :)
# Ответить
8. Asmody 04.07.2008 13:14
а зачем в архиве и .doc и .odt с одинаковым содержанием?
# Ответить
9. Трактор 06.07.2008 21:48
а зачем в архиве и .doc и .odt с одинаковым содержанием?
Оригинал в odt. А doc для того чтобы могли прочесть и счастливые владельцы мс офиса.
.
GSoft, для 7-ки есть пример интернет-магазина на этом сайте. 7-ка не заточена для непосредственной работы с web, нужны сторонние приблуды.
# Ответить
10. tango 09.07.2008 18:49
"Опубликуем html файл на нашем web сервере под именем, например, preved.htm. "
букофка l важна?
# Ответить
11. Трактор 09.07.2008 22:19
"Опубликуем html файл на нашем web сервере под именем, например, preved.htm. " букофка l важна?
Нет. Главное чтобы ты к этой странице обращался браузером по тому имени под каким опубликована страница.
# Ответить
12. vgv8 12.11.2008 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.2008 14:34
Я вижу только заготовок страницы с описанием ошибки, но самого описания ошибки нет.
Прокрути дальше и покажи что написано после тега <body>
Ты установил модуль web сервисов в IIS?
C:\Program Files\1cv81\bin\wsinst.exe -IIS
# Ответить
14. RomDron 21.11.2008 08:56
А продолжение будет??? Как с авторизацией быть?
Ответили: (197)
# Ответить
15. Трактор 21.11.2008 09:57
>> А продолжение будет??? Как с авторизацией быть?
А надо? Какие-то наработки ещё есть, но они не представляют собой качественного изменения. Только развитие изложенной идеи.
Среди обнаруженных ограничений нашёл что средствами javascript в 1С не получится по-человечески ни затолкать ни получить файл. Поэтому если требуется добавлять/читать файлы, то лучше использовать серверный язык, например PHP.

С авторизацией немного разобрался.
1. После танцев с бубном боги сказали что если база файловая, то ей лучше лежать на fat32. Тогда проблем с авторизацией средствами 1С нет.
Для файловой базы на NTFS авторизацию средствами 1С запустить не удалось, зато хорошо работает доменная авторизация.
Если к 1С обращаться серверным языком, то можно всегда это делать под одним пользователем с доменной авторизацией. Это не слишком безопасно, но работоспособно.
2. В клиент-серверной версии проблем с авторизацией нет. Прекрасно катит авторизация средствами 1С.
Ответили: (17) (143)
# Ответить
16. Трактор 10.12.2008 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";"/>

Если теги покоцаются, то я не виноват.
Ответили: (143)
+ 2 [ taishy; WiseSnake; ]
# Ответить
17. tango 10.12.2008 13:54
(15) "средствами javascript в 1С не получится по-человечески ни затолкать ни получить файл"
Извините, в чем проблема?
речь идет об обмене файлами между IIS и 1С
или между клиентом и сервером?
# Ответить
18. Трактор 10.12.2008 16:49
>> Извините, в чем проблема?
Речь идёт об отношениях между клиентом (браузером) и сервером (Apache, IIS).
1. При передаче файла клиенту 1C отдаёт XML файл в котором файл закодирован в base64. Браузер получает этот файл, закодированный в base64 и ничего с ним сделать не может. javascript не может записать файл на диск. Отобразить файл как картинку может только если размер файла меньше 4-х кБ.
2. При передаче файла на сервер наступаем на те же грабли, только с другого края. javascript не может прочитать файл клиента. Это ограничение безопасности. Если бы удалось обойти это ограничение, то проблем бы не было. На javascript.ru мне посоветовали отправлять файл на сервер, там PHP'ом кодировать в base64 и возвращать клиенту. Нафига это надо? Чем так легче РНР'ом сразу писать файл в web сервис 1С.
.
tango, если ты знаешь как обойти эти ограничения - подскажи. Моя благодарность не будет иметь границ в пределах разумного :-)
# Ответить
19. tango 10.12.2008 16:59
в порт-фолио две задачи по веб-доступу, обе без "сервисов", чисто СОМ-объект,
в модуле внешнего соединения формирую текст для asp-response, при этом файл на сервере
указывается просто как <A href="file">
а получаю из формы обыкновенным POSTом
единственное, на что наткнулся - и то - не грабли - просто не в лоб решается - удаление файла на сервере, 1ска во внешнем соединении этого не может
# Ответить
20. tango 10.12.2008 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.2008 17:09
to support, фигня какая-то со слешами
# Ответить
22. Трактор 10.12.2008 17:36
Пользовать com объекты тоже хорошее решение. Правда только для windows+IIS.
Файлы на сервере надо будет удалять ASP'ом после отдачи их их клиенту или после завершения сессии. Но тут я не силён.
# Ответить
23. tango 10.12.2008 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.2008 12:43
ActiveXObject это не javascript. Это огромная дыра в безопасности IE. Твой код работает только в IE.
Если предполагается использовать только ИЕ, то да, твоё решение прокатит.
.
>> фишка еще в том, что ком есть и для 77
Базару нет. Для 77 предложенный тобой способ единственный. Иначе вживую к базе не достучаться. Для 8-ки он тоже хорош, серьёзных минусов назвать не возьмусь.
Но я бы отдал построение страниц web серверу, а из 1С отдавал только данные. Как говорится каждому своё.
Ответили: (28)
# Ответить
25. Chippo 25.01.2009 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.2009 19:52
я искал в гугле по строке "inurl:"asmx?wsdl"" сервисы и их юзал
# Ответить
27. Трактор 26.01.2009 09:09
25 Модуль web сервиса ЗдоровенькиБулы выглядит так:


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

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

28 tango, или ты или я не в теме. Я всегда считал что яваскрипт не исполняется на сервере. Это клиентский язык. Неужели я ошибаюсь?
# Ответить
30. zsergey 09.02.2009 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.2009 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.2009 06:18
Подскажите, пожалуйста, как можно вызвать операцию из строки браузера?

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

Окружение: Apache 2.2, 1C 8.1.13, Win 2003
# Ответить
33. bme 13.02.2009 09:14
Разобрался, есть хороший инструмент для отладки web сервисов - SoapUI
Ответили: (212)
# Ответить
34. Loshko_WR 05.03.2009 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.2009 14:53
Сделал как в 31 ссылка http://localhost/preved.1cws?wsdl теперь ссылка есть.
Но при нажатии кнопки пишет ошибка доступа к файлу \\Ste\Base1c8\EnterpriseTE\1Сv8.cdn, а уменя его (1Сv8.cdn) в базе 1С по сетевому пути нет.
Ответили: (36)
# Ответить
36. Трактор 05.03.2009 15:52
(35) Это значит что ты пользуешь файловую 1Сину и в базе есть пользователи. Как бороть я уже писал. Либо снеси всех пользователей либо переведи базу в клиент-серверный вариант либо переложи на диск на с FAT32.
# Ответить
37. Loshko_WR 31.03.2009 07:46
По выложенному примеру сделал вывод списка платежек.
Но не знаю как передать параметры в вызов процедуры, чтобы можно было задать период выборки и, например, подразделение.
И еще как тут на форуме свои разработки выкладывать, а то мож кому пригодится.
# Ответить
38. Трактор 31.03.2009 09:44
Отписался на странице разработки http://infostart.ru/projects/3748/
# Ответить
39. 1dz 22.04.2009 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.2009 21:37
Я ничего толкового про эту ошибку сказать не могу.
Рекомендую обратиться к Славе Гилёву.
У него описаны способы лечения. http://www.gilev.ru/1c/81/error54/
# Ответить
41. Трактор 22.04.2009 21:43
1С при обращении просит логи технологического журнала и дампы аварийного завершения. Если решишься обращаться в 1С, то укажи в logcfg.xml каталог для дампов:
<dump location="C:\Program Files\1cv81\dumps" create="1" type="3"/>

В технологический журнал пиши всё. Потом всё что получишь высылай в 1С может помогут.
# Ответить
42. 1dz 23.04.2009 08:14
http://www.gilev.ru/1c/81/error54/ видел, делал как написано, переустанавливал 1с и MSSQL на другом железе, дампы 1с есть, только читать их неизвестно чем. Напишу Гилеву
# Ответить
43. zorkKiy 18.05.2009 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)
# Ответить
44. Трактор 18.05.2009 21:08
(43) Значит дело действительно во входном аргументе (параметре). Посмотри текст запроса, который идёт в 1С. У тебя, скорей всего, нет тега СтрокаПоиска.
Добавь хоть пустой тег <m:СтрокаПоиска> </m:СтрокаПоиска>

1С при получении запроса сначала проверяет его на соответствие WSDL. А в WSDL прописан обязательный входной параметр СтрокаПоиска. Только после этого управление передаётся твоему коду в модуле web сервиса.
# Ответить
45. zorkKiy 18.05.2009 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)
# Ответить
46. Трактор 18.05.2009 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.2009 22:53
имя пользователя inet без пароля
# Ответить
49. Arabo_xv 20.05.2009 12:28
Наличие базы в файловом режиме на разделе NTFS не создаёт проблемм с авторизацией. Там 3 уровня авторизации.
1 - Веб сервер
2 - Права доступа на файлы (в том числе и для файлов базы) для пользователя под которым запускается веб сервис.
3 - Авторизация в информационной базе.

В 99% случаях вы упираетесь в 2 пункт. Решение этой проблеммы простая настройка права доступа к вайлам.
# Ответить
50. fantasy2 03.06.2009 17:34
1с 8.1 файловая так работает?
# Ответить
51. fantasy2 03.06.2009 17:54
http://localhost/preved.htm
после загрузки этой страницы
видим кнопку "Поприветствовать web сервис"
при нажатии
или ошибка на весь экран
Запрос завершился неудачно Отвер сервера
<DOC TIPE HTMLPUBLIC DTD HTML 3.2 FINAL>
или кнопка меняет надпись на "ждем ответа" и все.
Ответили: (52)
# Ответить
52. Трактор 03.06.2009 19:14
(51) Ответ сервера похож на заголовок ошибки. Скорей всего причина в том что не подключён модуль wsap22.so (wsapch2.so, wsap22.dll, wsapch2.dll, wsisapi.dll) к web серверу. Проверь что возвращает http://localhost/preved.1cws
Если к фирефоксу подключишь firebug, то сможешь видеть запросы, ушедшие на сервер и полученные браузером. Они должны быть похожи на запросы, приведёные в статье.
Почитай обсуждение. Тут много писалось. Повторять не хочется.
# Ответить
53. ValentinV 24.06.2009 10:10
Здорово!
А в качестве сервера SOAP что-то другое, кроме 1с, использовать?
# Ответить
54. ValentinV 24.06.2009 11:59
Очень хорошо с методической точки зрения написано.
Я такого стиля очень давно не видал.
Огромное спасибо.
# Ответить
55. megatrend 15.09.2009 15:58
Путь к документации в doc-файле теперь должен быть такой : file:///c:/Program%20Files/1cv81/AddDoc/RU/V8AddDoc81.htm#_Toc176167634
# Ответить
56. mc2 31.10.2009 11:54
Может кто подскажет, почему не работает с 8.2?
Если указываю относительный путь в Open, то запрос не отсылается, если полный - статус ответа 0. Пытался такой же скрипт на 1С смоделировать - там возвращается ошибка 500. Что не так делаю?
# Ответить
57. Трактор 31.10.2009 21:22
8.2 ещё не пробовал. Что браузер говорит при открытии http://localhost/preved.1cws ?
# Ответить
58. marsohod 05.12.2009 02:57
+
Мне тоже нравится SciTE ... :)
# Ответить
59. pk_xD 10.06.2010 00:56
кто нить подключал веб сервисы в асп, почему то когда вызываю метод сервиса пишет: There is an error in XML document (7, 4).
Ответили: (60)
# Ответить
60. Трактор 10.06.2010 09:40
(59) Сграбь снифером (сетевым монитором) ответ web сервиса и дай его сюда. Не видя xml документа трудно сказать что не так в четвёртом символе седьмой строки.
# Ответить
61. pk_xD 10.06.2010 10:22
омг... кажеться понял в чем ошибка, тип возвращаемого значения ф-ии был не тот...
теперь проблеема как в асп описать тип возвращаемого значения... ))
# Ответить
62. assan 11.07.2010 22:07
под IIS всё работало , поставил Apache, IIS убрал
вызовы .....xxxx.1cws и .....xxxx.1cws?wsdl возврвщают одно и тоже - содержимое файла xxxx.1cws
и, видимо поэтому, 1с не могу импортировать wsdl , получить ws ссылку.
Ответили: (63)
# Ответить
63. Трактор 11.07.2010 22:14
(62) Модуль 1С не подгружен в апач. Ты точно добавил в httpd.conf такую строку ?
LoadModule _1cws_module "C:\Program Files\1cv81\bin\wsap22.dll"
# Ответить
64. assan 11.07.2010 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)
# Ответить
65. Трактор 12.07.2010 11:45
(64) Странно. С таким не сталкивался.
Версия модуля 1С совпадает с версией апача? Если апач 2.0, то надо писАть так LoadModule _1cws_module "C:\Program Files\1cv81\bin\wsapch2.dll"
# Ответить
66. assan 12.07.2010 12:18
версии соответствуют.
есть версия apache , которая проверена и работает? (а апач 2.2.15 скачивал с ихнего сайта, последняя версия, мож глючит)
и папка conf в которой есть изменения ?
скинь на мыло, может я чё в конфиге не то делаю.
Ответили: (69)
# Ответить
67. Трактор 12.07.2010 14:08
(66) lyay собака яндэкс точка ру пришли httpd.conf
# Ответить
68. assan 12.07.2010 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.2010 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>
...Показать Скрыть
+ 1 [ assan; ]
# Ответить
70. assan 12.07.2010 15:16
ТРАКТОРУ - УРА!!!!!!
для IIS рекомендую инструкцию Настройка IIS
Ответили: (75)
# Ответить
71. wonrims85 15.09.2010 19:36
Запускаю сервис, требует аутентификацию. Если ввести пароль и имя пользователя из 1с, то возвращает Ошибка соединения с информационной базой. Что за черт, уже всю голову сломал, в инструкции ничего про это нет. У меня apache 2.2?
Ответили: (72)
# Ответить
72. Трактор 15.09.2010 20:28
(71) почитай обсуждение. Этот вопрос задавался многажды. У пользователя под которым работает апач нет прав на файл базы 1С.
Ответили: (73)
# Ответить
73. wonrims85 17.09.2010 00:07
(72) Дело не в этом, когда я удаляю всех пользователей из конфигуратора, то все работает, если добавить хотя бы одного, то при запуске веб-сервиса требует аутентификацию, причем пароль из 1с не подходит, у пользователя стоят полные права
Ответили: (74)
# Ответить
74. Трактор 17.09.2010 07:48
(73) Перейди на клиент-серверную версию. Это точно поможет.
# Ответить
75. assan 17.09.2010 15:34
ппробуй поставить IIS (70)
# Ответить
76. DSirius 05.02.2011 19:54
Очень полезная и нужная статья.
А как реализовать загрузку в 1с измененных данныйх. На пример, изменили фамилию на сайте и эти изменения отразились в базе. Очень нужно реализовать именно такое взаимодействие и причем онлайн. На платформе 8.2
# Ответить
77. DimaP 15.04.2011 09:12
в 8.2 вообще файлы .1cws не публикуются :(
Как надо настраивать IIS для этого случая и каким образом делать обращение к веб-сервису?
Пока что экспериментирую на "Здоровеньки булы".

У меня задача такая: по переданному коду 1с должна возвратить таблицу с данными.
Ответили: (78)
# Ответить
78. Трактор 25.04.2011 21:50
(77)Что-то перестали приходить уведомления. В 8.2 обычно публикуются файлы default.vrd
# Ответить
79. vitalya24 09.09.2011 03:15
полезная весчь эти веб сервисы, реализовал при их помощи связь с тсд)))
# Ответить
80. 1cvirus 10.09.2011 12:03
Супер - наконец-то я хоть немного понял.
# Ответить
81. tartalia 26.09.2011 12:18
Мне удалось реализовать подключение для разработки таких WEB-интерфесов, почему-то 1С это не очень широко рассказывает.
# Ответить
82. kxl 07.10.2011 11:46
Примеры помогли в свое время
# Ответить
83. mehalyna 16.10.2011 19:05
Спасибо, пригодилось.
# Ответить
84. Gasdrubal 19.10.2011 06:12
Не работает под IIS? подскажите как нстроить? в чем различия? Может быть я пути неверно прописываю?
Ответили: (85)
# Ответить
85. Трактор 19.10.2011 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.2011 10:10
(86) Всё верно написал. Так всё и есть. Или править настройки безопасности браузера, как это делает 1С, или работать php. Примеры даны на яваскрипте только для лучшего понимания внутренностей обмена меж браузером и веб сервером.
tango тебя тут врядли услышит.
# Ответить
89. ntvg 01.11.2011 18:55
Спасибо! Очень интересная статья
# Ответить
90. Oleg51 06.11.2011 09:45
при публикации веб-сервиса в папке с веб доступом появляется *.vrd, а не *.1cws
ошибка 405 после отправки данных на сервак, соответственно ответа нет.
Ответили: (91)
# Ответить
91. Трактор 06.11.2011 16:33
(90) Всё верно в 1С 8.2 публикуется именно default.vrd, а обращаться надо по адресу ИмяСервиса.1cws
# Ответить
92. mc1c80 09.11.2011 15:44
Не могу пока скачать файлы , но очень хочется.
Очень был бы рад, если бы кто-то выложил на другом сайте эту статью.
Ответили: (94)
# Ответить
93. gorneev 12.11.2011 18:11
Это точно, пример очень нужный
Ответили: (94)
# Ответить
95. zastep 17.11.2011 15:45
Интересно, надо попробовать [+]
# Ответить
96. Kaperang 22.11.2011 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)
# Ответить
97. Трактор 22.11.2011 17:38
(96) Такой ошибки я не встречал, но путь приведён внутри 1С. Значит опубликовано верно. Похоже что криво объединил.
Ответили: (98)
# Ответить
98. Kaperang 22.11.2011 17:50
(97) Создал пустую базу (платформа 8.2, клиент-серверный вариант, MS SQL 2005).
Загрузил в нее конфигурацию из примера, опубликовал

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

Получаю ту же ошибку: "Файл не обнаружен 'v8res://mngsrv/preved.1cws' "
Ответили: (99)
# Ответить
99. Трактор 22.11.2011 17:53
(98) Сейчас не с руки подымать весь пример, извини.
Я IIS не пользовал. Только апач. С ним проблем не было.
# Ответить
100. Kaperang 25.11.2011 16:33
снес IIS, поставил Апач. Все один в один.
Если на установку и натсройку IIS было потрачено пару часов вдумчивого чтения мануалов, настройка Апача заняла 15 минут. Это пока единственное замеченное преимущество. Из недостатков - один фиг не работает, причем симптоматика один в один.
Непонятно, как у Апача в плане информационной безопасности, IIS как то посерьзнее кажется.
Ответили: (101)
# Ответить
101. Трактор 25.11.2011 16:38
(100) В порядке танцев с бубном могу предлагаю попробовать запустить web сервис на другой базе. Путь внутри 1С, ошибка, похоже тоже там. Или коцаная конфигурация или платформа 1С криво работает.
Попробуй тестирование исправление, затем другую базу.
# Ответить
102. Kaperang 25.11.2011 17:16
1. Опубликовал средствами 1С на Апаче Web-сервис "ЗдоровенькиБулы" в папку "с:/IISTest" под виртуальным именем "IISTest" - имя файла публикации "preved.1ws"
В папке "с:/IISTest" при этом создался файл 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="/IISTest"
		ib="Srvr="Srv1C:1641";Ref="IISTest";"
		enable="false">
	<ws>
		<point name="ЗдоровенькиБулы"
				alias="preved.1cws"/>
		<point name="Сотрудники"
				alias="sotrudniki.1cws"
				enable="false"/>
	</ws>
</point>
...Показать Скрыть

Как я понял, при обращении к файлу "preved.1cws" запрос перенаправляется на Web-сервис "ЗдоровенькиБулы".
Самого файла "preved.1cws" при этом в природе не существует.
2.Создал папку "c:/ws", выложил в нее файлы preved.htm и preved.js
3.В файле preved.js переписал путь к "preved.1cws"
было
xmlhttp.open('POST', 'preved.1cws', true)
стало
xmlhttp.open('POST', '/./IISTest/preved.1cws', true)
...Показать Скрыть

4. опубликовал папку "c:/ws" под именем "WS", добавив в конец конфигурационного файла Апача httpd.conf следующие строчки
Alias "/ws" "C:/ws/"
<Directory "C:/ws/">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
...Показать Скрыть

5. ввожу в браузере "http://localhost/ws/preved.htm" - появляется окошко с плашкой, жму по ней, вываливается ошибка:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" 
href="/redirect.php?url=aHR0cDovL2xvY2FsaG9zdC9JSVNUZXN0L2UxY3N5cy92cnNjb3JlL2V4Y2VwdGlvbi54c2x0P3N5c3Zlcj04LjIuMTMuMjE5"?>
<exception 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" 
xsi:type="Exception" clsid="580392e6-ba49-4280-ac67-fcd6f2180121" reason="405">
<descr xmlns="http://v8.1c.ru/8.1/data/core">
HTTP: Method not allowed 
Ошибка при выполнении запроса POST к ресурсу /preved.1cws:</descr></exception>
...Показать Скрыть
Ответили: (104)
# Ответить
103. Kaperang 25.11.2011 17:26
А сейчас выдал сообщение:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>1C:Enterprise 8 application error</title>
</head><body><h2>1C:Enterprise 8 application error:</h2>
HTTP: Not found
Ошибка при работе с ресурсом /IISTest/preved.1cws</html>
...Показать Скрыть
Ответили: (105)
# Ответить
104. Трактор 25.11.2011 17:26
(102) Надо добиться чтобы ссылка http://localhost/IISTest/ws/preved.1cws?1cws давала описание wsdl. Что она даёт сейчас?
Ответили: (106)
# Ответить
105. Трактор 25.11.2011 17:34
(103) что-то у тебя в файле default.vrd написано enable="false". Это неправильно. Попробуй изменить файл так:

<?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="/IISTest"
      ib="Srvr="Srv1C:1641";Ref="IISTest";Usr="POLZOVATEL";Pwd="PAROL";">
   <ws>
      <point name="ЗдоровенькиБулы"
            alias="preved.1cws"/>
      <point name="Сотрудники"
            alias="sotrudniki.1cws"/>
   </ws>
</point>
...Показать Скрыть


Я добавил Usr="POLZOVATEL";Pwd="PAROL"; , чтобы 1С пароль не спрашивала.
Ответили: (107)
# Ответить
106. Kaperang 25.11.2011 17:55
(104) Трактор, адрес http://localhost/IISTest/ws/preved.1cws?1cws сейчас выдает окно с ссылкой http://localhost/IISTest/ws/preved.1cws.
кликаю по ней - выдается, я так понимаю описание
<?xml version="1.0" encoding="UTF-8" ?>
- <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.sample-package.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://www.sample-package.org" name="ЗдоровенькиБулы" targetNamespace="http://www.sample-package.org">
- <types>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://www.sample-package.org" targetNamespace="http://www.sample-package.org" attributeFormDefault="unqualified" elementFormDefault="qualified">
- <xs:complexType name="Сотрудник">
- <xs:sequence>
<xs:element name="Код" type="xs:string" />
<xs:element name="Наименование" type="xs:string" nillable="true" />
<xs:element name="ДатаРождения" type="xs:date" nillable="true" />
<xs:element name="ИНН" type="xs:string" nillable="true" />
<xs:element name="Пол" type="xs:string" nillable="true" />
<xs:element name="Ссылка" type="xs:string" />
</xs:sequence>
</xs:complexType>
- <xs:complexType name="СписокСотрудников">
- <xs:sequence>
<xs:element name="Сотрудник" type="tns:Сотрудник" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
- <xs:element name="ПриветХлопцы">
- <xs:complexType>
<xs:sequence />
</xs:complexType>
</xs:element>
- <xs:element name="ПриветХлопцыResponse">
- <xs:complexType>
- <xs:sequence>
<xs:element name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
- <message name="ПриветХлопцыRequestMessage">
<part name="parameters" element="tns:ПриветХлопцы" />
</message>
- <message name="ПриветХлопцыResponseMessage">
<part name="parameters" element="tns:ПриветХлопцыResponse" />
</message>
- <portType name="ЗдоровенькиБулыPortType">
- <operation name="ПриветХлопцы">
<input message="tns:ПриветХлопцыRequestMessage" />
<output message="tns:ПриветХлопцыResponseMessage" />
</operation>
</portType>
- <binding name="ЗдоровенькиБулыSoapBinding" type="tns:ЗдоровенькиБулыPortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="ПриветХлопцы">
<soapbind:operation style="document" />
- <input>
<soapbind:body use="literal" />
</input>
- <output>
<soapbind:body use="literal" />
</output>
</operation>
</binding>
- <binding name="ЗдоровенькиБулыSoap12Binding" type="tns:ЗдоровенькиБулыPortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <operation name="ПриветХлопцы">
<soap12bind:operation style="document" />
- <input>
<soap12bind:body use="literal" />
</input>
- <output>
<soap12bind:body use="literal" />
</output>
</operation>
</binding>
- <service name="ЗдоровенькиБулы">
- <port name="ЗдоровенькиБулыSoap" binding="tns:ЗдоровенькиБулыSoapBinding">
- <documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1" />
</documentation>
<soapbind:address location="http://localhost/IISTest/ws/preved.1cws" />
</port>
- <port name="ЗдоровенькиБулыSoap12" binding="tns:ЗдоровенькиБулыSoap12Binding">
<soap12bind:address location="http://localhost/IISTest/ws/preved.1cws" />
</port>
</service>
</definitions>
Ответили: (109)
# Ответить
107. Kaperang 25.11.2011 17:58
(105) параметр enable="false"/> устанавливает использование/отключение Web-клиента,
в <ws ... /ws> данный параметр отвечает за включение/выключение конкретного web-сервиса
Ответили: (109)
# Ответить
108. Kaperang 25.11.2011 18:01
Заново опубликовал базу средствами 1С на Апаче:
выставил галочку "Использовать тонкий клиент и web-клиент"
выставил галочки обоих сервисов: "ЗдоровенькиБулы" и "Сотрудники"
содержимое файла 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="/IISTest"
		ib="Srvr="Srv1C:1641";Ref="IISTest";">
	<ws>
		<point name="ЗдоровенькиБулы"
				alias="preved.1cws"/>
		<point name="Сотрудники"
				alias="sotrudniki.1cws"/>
	</ws>
</point>
...Показать Скрыть
# Ответить
109. Трактор 25.11.2011 18:02
(106) Прекрасно! Значит 1С с апачем снюхались. Теперь отправляй POST запрос по адресу http://localhost/IISTest/ws/preved.1cws?1cws и должно быть счастье.
(107) Не знал. Спасибо.
Ответили: (111)
# Ответить
110. Kaperang 25.11.2011 18:02
ппо строке "http://localhost/IISTest/" успешно открывается web-клиент
# Ответить
111. Kaperang 25.11.2011 18:04
(109)Мммммм.........коллега, я с java как-бы только второй день общаюсь. Не подскажете, как это сделать?
Ответили: (112)
# Ответить
112. Трактор 25.11.2011 18:05
(111) xmlhttp.open('POST', 'http://localhost/IISTest/ws/preved.1cws?1cws', true)
# Ответить
113. Kaperang 25.11.2011 18:07
Яхуууууу!!!!!!!
Поменял в preved.xml
было
xmlhttp.open('POST', '/./IISTest/preved.1cws', true)
стало
xmlhttp.open('POST', '/./IISTest/ws/preved.1cws', true) 
...Показать Скрыть
Ответили: (130)
# Ответить
114. Kaperang 25.11.2011 18:22
Выложил в папку ""c:/ws" файлы sotrudniki.js и sotrudniki.html, рестартовал Апач

Изменил в sotrudniki.js
было
xmlhttp.open('POST', 'sotrudniki.1cws', true)
стало
xmlhttp.open('POST', '/./IISTest/ws/sotrudniki.1cws', true)
...Показать Скрыть


Поправил конфигурацию базы - создал там справочники "Сотрудники" и "ФизическиеЛица", чтобы было откуда 1С-ным запросом данные выдергивать.

Все работает: и "ЗдоровенькиБулы" и "Сотрудники"!!!
# Ответить
115. Kaperang 25.11.2011 18:39
цепанулись смартфоном к внутренней wi-fi сети, открыли ссылку в браузере, порадовались )))
собственно, под это все и пишется - внесение данных в 1С-ку из любой точки здания, не отходя от клиента, так сказать ... :)
Ответили: (116)
# Ответить
116. Трактор 25.11.2011 18:42
(115) Я так и не нашёл wsdl клиента на яваскрипте. Получается что легче всего с 1С работать php'ом, а яваскрипт использовать минимально.
# Ответить
117. Kaperang 25.11.2011 18:52
положил в папку ""c:/ws" файлы третьего примера,изменил путь вызова Web-сервиса в sotrudnikiJQ.js, так же как в предыдущих двух примерах (добавил "'/./IISTest/ws/"), рестартовал Апач

все работает

Респект и уважуха за статью, коллега !!!

Конечно, она писалась под 8.1, а там немного все по другому, но после легкой доработки напильником все прекрасно заработало и на 8.2
# Ответить
118. slavik27 28.11.2011 12:41
Нужная информация, главное вовремя! СпасибО!
# Ответить
119. Kaperang 30.11.2011 17:06
Коллега, помогите пожалуйста:

Переписал немного ваш файл sotrudniki.js под свои цели.
Пользователь заполняет несколько полей на экранной форме, по кнопке "Записать" через параметры эти значения передаются Web-сервису
Отладчик IE показывает, что ошибка в следующей строке
xmlhttp.send('<?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"> '
+document.getElementById('Пользователь').value+' </m:Пользователь> '+
'<m:Дата xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('Дата').value+' </m:Дата> '+
'<m:Действие xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('Действие').value+' </m:Действие> '+
'<m:Контрагент xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('Контрагент').value+' </m:Контрагент> '+
'<m:Модель xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('Модель').value+' </m:Модель> '+
'<m:ВремяЗвонка xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('ВремяЗвонка').value+' </m:ВремяЗвонка> '+
'<m:ВремяПрихода xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('ВремяПрихода').value+' </m:ВремяПрихода> '+
'<m:ТестДрайв xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('ТестДрайв').value+' </m:ТестДрайв> '+
'<m:ТойотаБанк xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('ТойотаБанк').value+' </m:ТойотаБанк> '+
'<m:КонтактнаяИнформация xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('КонтактнаяИнформация').value+' </m:КонтактнаяИнформация> '+
'<m:Комментарий xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('Комментарий').value+' </m:Комментарий> '+
'<m:ПервичныйКлиент xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> '
+document.getElementById('ПервичныйКлиент').value+' </m:ПервичныйКлиент> ' +
'</m:ПолучитьДанныеКонтакта> </soap:Body> </soap:Envelope>')
...Показать Скрыть


Никак не могу понять, где поправить
# Ответить
120. a_mironov 11.12.2011 03:47
Интеграция с сайтом - тема нынче моднаяю Спасибо за труды
# Ответить
121. pako_amadi 14.12.2011 11:30
хорошая статья
# Ответить
122. raym0n 16.12.2011 16:49
Спасибо за интересную информацию!
Приходилось решать похожие задачи. Подключение внешних клиентов к нашей информационной базе.

Использовал Бесплантый Апач, который прекрасно работает как под Виндой, так и в Линуксе.

Огромное спасибо!
# Ответить
123. ][p 26.12.2011 13:12
сейчас правда можно уже пользоваться внешними источниками данных в дереве конфигурации.
# Ответить
124. ntvg 27.12.2011 12:03
Очень интересная и полезная статья. Спасибо автору за проделанную работу. Очень помогла с разработкой веб сервисов, так как маловато информации на эту тему
# Ответить
125. simpal 27.12.2011 13:53
Здравствуйте!
подскажите, можно ли с помощью web-сервиса организовать возможность делать sql запросы к базе 1с из php или js ?
Ответили: (126)
# Ответить
126. Трактор 27.12.2011 14:03
(125) не sql, но можно. Делаешь сервис 1С, который принимает в один параметр текст запроса, а в другой параметр список параметров запроса и возвращает некую таблицу. Текст запроса должен быть на языке запросов 1С. Обработка запроса web сервиса делается на языке 1С, поэтому изучения 1С или общения с 1Сниками тебе не избежать.
# Ответить
127. Slim 15.01.2012 23:52
Всем привет!
Сначала хочу выразить огромное спасибо автору за данную статью!!!
Тестировал ранее на 8.1 проблем не было.
Сейчас на 8.2 Здоровеньки работают, а вот по Сотрудникам выдаёт
подключение прервано (Ошибка 101 (net::ERR_CONNECTION_RESET): Соединение сброшено).
В 1С не силён. кто подскажет в чём может проблема?! Уже всё перепробовал...
Ответили: (128)
# Ответить
128. Трактор 16.01.2012 10:29
(127) Не видя твоей конфы трудно что-то сказать. Возможные причины:
1. Ошибка в коде или в данных, которая валит 1С. Эта причина более вероятна, если ЗдоровенькиБулы работают в этой же базе 1С. Может помочь тестирование и исправление базы данных. Если не поможет - надо смотреть код.
2. Ошибка в настройках веб сервера. Тут я не силён.
# Ответить
129. igo-osetro 24.01.2012 20:04
Давлено таки интересная статья. Автор молодец что не поленился и написал эту статью. Полезная штука веб сервесы. Спасибо автору
# Ответить
130. Banzai79 13.03.2012 12:47
(113) Kaperang, оооо в этого мне и не хватало
# Ответить
131. gn@mik 06.04.2012 22:28
Полезная статья, мне очень помогла
# Ответить
132. orehova123 20.04.2012 15:37
спасибо! ищем как раз материал на эту тему
# Ответить
133. KV1s 05.05.2012 17:52
Надо наконецто попробовать эти ваши WEB-сервисы...
# Ответить
134. KV1s 08.05.2012 17:05
3 дня спамил форум общялся на форуме чтобы, заработать рейтинг, чтобы скачать :)
Оно того стоило.
Спасибо, как раз то, что искал.
# Ответить
135. TRansgen 14.11.2012 14:32
Статья норм! Как раз занимаюсь разработкой веб сервиса. Помогает!!
# Ответить
136. cs25 04.12.2012 10:49
Пробую опубликовать web-сервис опираясь на данные Вашей статьи http://infostart.ru/public/16001/

Установил Апач (сборка Denwer). Сделал всё как описано в скаченном архиве. При запуске в IE ссылок: http://hello/ или http://sotrudniki/ - на форме появляются кнопки. Но при нажатии на них

ничего не происходит. При нажатии кнопки "Получить список сотрудников" на http://sotrudniki/ на кнопке выводится "Найдено 0 человек" ... При нажатии на "Поприветствовать web сервис"

ничего не происходит ...


Не совсем понятно что делать на 4.4 шаге (и далее) Вашего описания для получения на экране приветствия "Здоровеньки булы, друзи!".

Огромная просьба помочь (для тех кто в танке). Ну или выслать более полное описание для публикации простого Поприветствовать web сервис и чуть более сложного Получить список

сотрудников. Заранее благодарен


С web-сервисами только-только начинаю экспериментировать. В идеале хочу получить выгруженный файлик txt с реестром документов (РеализацияТоваров) за период (просто идущие друг за

другом строки (string (http://www.w3.org/2001/XMLSchema)) являющиеся реквизитами документа (например Дата, Номер, Контрагент, Номенклатура1,Номеклатура2, ..., НоменклатураN,

СуммаДокумента, и т.д.))


p.s. Windows XP, файловый вариант базы, платформа 8.1, конфа "Бухгалтерия предприятия" редакция 2.0 (2.0.16.1) ,пользователей из базы удалил (чтоб не было проблемм с авторизацией).
В каталоге установленной 1С 8.1 файлы wsap22.dll и wsapch2.dll присутсвуют,т.е адаптер веб - сервисов 1С 8.1 установлен.
Ответили: (137)
# Ответить
137. Трактор 04.12.2012 11:19
(136)
1. Читаем обсуждение. Эти вопросы уже обсуждались.
2. Выясняем имя базы в файлике default.vrd в параметре base="/ИмяБазы1С"
3. Переходим http://localhost/ИмяБазы1С/ws/preved.1cws?1cws
Если видим описание wsdl Тогда
1С состыкована с Апачем правильно.
Иначе
приводим здесь файлики default.vrd и httpd.conf
КонецЕсли;
+ 1 [ cs25; ]
# Ответить
138. Spas12 04.12.2012 11:25
Интересно с IIS (может не в тему можете скинуть мануал IIS) не работал ни разу Appach менее проблемный
Ответили: (139)
# Ответить
139. Трактор 04.12.2012 11:41
140. cs25 04.12.2012 13:02
Вот конфигурационные файлы : ссылка.

Файл default.vrd не нашёл ... нету его походу ...
Установлен Апач, сборка Денвер ссылка
Ответили: (141)
# Ответить
141. Трактор 04.12.2012 14:27
(140) У тебя 1С 8.2? В 8.1 публикация выполняется иначе.

Для 8.2
Вариант 1:
1. У тебя не подключен модуль 1С. В прикреплении файл httpd.conf, где я для примера прописал подключение модуля и публикацию базы. Мои правки в конце файла. Обязательно поправь пути в нём.
2. В папку C:/Common/Apache/htdocs/moyabaza нужно положить файл default.vrd из прикрепления
Чтобы получить vrd файл нужно в конфигураторе выбрать пункт меню администрирование -> Публикация на веб-сервере

Вариант 2:
В конфигураторе 1С выбираешь пункт меню Администрирование -> Публикация на веб-сервере

Прикрепленные файлы:

httpd.conf
default.vrd
# Ответить
142. cs25 04.12.2012 16:02
У меня 8.1 ...
Ответили: (143)
# Ответить
143. Трактор 04.12.2012 16:11
(142) Честно говоря я уже подзабыл 8.1. Там есть файлик C:\Program Files\1cv81\bin\wsinst.exe. Он умеет настраивать Апач. Попользуй его. Затем прочти комментарии (15), (16) и (63).
Ответили: (145)
+ 1 [ cs25; ]
# Ответить
144. Zas1402 06.12.2012 12:14
Хорошая статья.
# Ответить
145. zShamaNz 06.12.2012 20:58
(143) Трактор, промулчася целый день - подключил 1с к апачу, т.е. http://localhost/ИмяБазы1С/ws/preved.1cws?1cws выдает описание (кстати, не ИмяБазы1С, а названия алиаса, например, Alias "/WebService", т.е WebService). Проблема в том, что зависает - нет ответа от 1С, метод не отрабатывает xmlhttp.open(... Раньше ошибка была теперь просто висит. с чем это может быть связано?
# Ответить
146. zShamaNz 06.12.2012 21:11
Может быть нужно какое-нибудь расширение подключить? у меня apache из Open Server'а, из-за этого много проблем было с установкой..
Ответили: (148)
# Ответить
147. Трактор 06.12.2012 21:17
Может быть нужно какое-нибудь расширение подключить?

Именно! У тебя не подключен модуль 1С.
Вот такой фрагмент надо вставить в httpd.conf:

LoadModule _1cws_module /opt/1C/v8.3/x86_64/wsap22.so

# 1c publication^M
Alias "/veles" "/var/www/veles/"
<Directory "/var/www/veles/">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/veles/default.vrd"
</Directory>
...Показать Скрыть

Пути в примере указаны для Линукса, Переделай на виндовые. И проверь права Апача на чтение/запуск файлов в 1Сном каталоге.
Ответили: (149)
# Ответить
148. Трактор 06.12.2012 21:19
(146) Лучше всего давай сюда свой httpd.conf и default.vrd
# Ответить
149. zShamaNz 07.12.2012 12:11
(147) Трактор, модуль подключал
LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.15.318/bin/wsap22.dll"


# 1c publication
Alias "/WebService" "D:/serv/domains/WebService/"
<Directory "D:/serv/domains/WebService/">
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor "D:/serv/domains/WebService/default.vrd"
</Directory>
...Показать Скрыть
Ответили: (150)

Прикрепленные файлы:

Apache-2.2.23_server.conf
default.vrd
# Ответить
150. Трактор 07.12.2012 12:23
(149) Должно работать. Вроде всё верно. Попробуй убрать имя пользователя и пароль из файла default.vrd. Тогда при обращении http://localhost/WebService/ws/preved.1cws?wsdl у тебя должно спрашивать имя пользователя и пароль. Если этого нет, то может быть Апач пользует не Apache-2.2.23_server.conf, а другой файл?

В качестве шаманских действий можно попробовать грузить модуль 1С последним, после всех остальных. Сейчас он у тебя грузится первым.
Ответили: (152)
# Ответить
151. zShamaNz 07.12.2012 12:32
пароль не спрашивает, если убрать из default.vrd пароль, то начинает спрашивать, но при вводе еще раз спрашивает - все равно правильный или нет. Файл тот, т.к. если убрать из него строки с 1С - сразу ошибки соответствующие. Еще проинсталирован 2й апач, но не стартован, просто без инсталяции не взлетало. При опубликации из 1С прописывались конф файлы проинсталированного апача, от туда я переносил в ОпенСервер в Apache-2.2.23_server.conf
# Ответить
152. zShamaNz 07.12.2012 12:34
(150) Трактор, последним модулем загрузка тоже не помогла
# Ответить
153. Трактор 07.12.2012 12:38
если убрать из default.vrd пароль, то начинает спрашивать

(152)Значит модуль 1С подключился к апачу.
Теперь берёшь soapui http://sourceforge.net/projects/soapui/files/soapui/3.6.1/ скармиливаешь ему ссылку на wsdl и пробуешь работать с сервисом из soapui http://localhost/WebService/ws/preved.1cws?wsdl
Ответили: (156)
# Ответить
154. zShamaNz 07.12.2012 12:45
Вот эта картинка висит

Ответили: (155)
# Ответить
155. Трактор 07.12.2012 15:02
(154) SoapUI как раз позволит отладить сервис. 1С и Апач у тебя работают. Ошибка может быть как в коде в 1С так и в яваскрипте. В ответе, что получит SoapUI, есть шанс увидеть ошибку или подтвердить что 1С рабоает верно. Только бери SoapUI версии 3.6. Четвёртая не работает с сервисами 1С.
# Ответить
156. zShamaNz 07.12.2012 17:07
(153) Трактор, скачал проверил, норм все. Потом попробывал в хроме - все норм. Мазила что-то не отработал...
Ответили: (157)
# Ответить
157. Трактор 07.12.2012 17:12
(156) Тут я ничего не скажу. Почти 4 года прошло. Мозила могла измениться. Что-то криво в яваскрипте. Может быть у тебя NoScript стоит.
Ответили: (158)
# Ответить
158. zShamaNz 07.12.2012 17:35
(157) Трактор, скрипты вроде разрешены, обновил Мазилу - не помогло. Ответ не приходит никакой по запросу - xmlhttp.onreadystatechange = function() {ПриОтветеВебСервиса(xmlhttp)} - вот этот код не отрабатывает.. Попробую попозже решить этот вопрос. Спасибо.
# Ответить
159. zShamaNz 07.12.2012 18:21
Просто ФайрФокс17 оказался - для него также как в ФайрФокс3.
function определитьБраузер(){
	var userAgent = navigator.userAgent.toLowerCase();
	// Определим используемый браузер
	browser = {
		version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
		safari: /webkit/.test( userAgent ),
		opera: /opera/.test( userAgent ),
		msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
		firefox17: /firefox\/17/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
		firefox3: /firefox\/3/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
		firefox2: /firefox\/2/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ),
		firefox1: /firefox\/1/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
	}
}
...Показать Скрыть
Ответили: (166)
+ 1 [ Трактор; ]
# Ответить
160. evrakylon 08.12.2012 10:59
Спасибо за публикацию. Однако, на 1С 8.2 проделать это не удалось. Есть ли положительный результат? В частности интересует web-сервис на IIS и отправка POST запроса. В библиотеке preved.js есть строка HTTP запроса:
xmlhttp.open('POST', 'preved.1cws', true)(с комментарием // файл preved.1cws располежен в том же каталоге, что и страница preved.htm. Путь может быть и другим, например, таким: '/./ws/preved.1cws'). Перепробовал множество вариантов, но не нашел, как адаптировать этот вызов под 8.2.
Ответили: (161)
# Ответить
161. Трактор 08.12.2012 13:16
(160) Прочитай предыдущее обсуждение. На 8.2 и 8.3 всё работает.
Что видишь тут? http://ИмяСервера/ИмяБазы1С/ws/preved.1cws?1cws
# Ответить
162. evrakylon 08.12.2012 20:02
При вводе "http://localhost/ws/preved?wsdl" вижу схему сервиса
<definitions name="preved" targetNamespace="http://localhost">
<types><xs:schema targetNamespace="http://localhost" elementFormDefault="qualified">
<xs:element name="preved">
и тд.
При вводе http://localhost/preved/ws/preved.1cws?1cws ошибка - "Файл не обнаружен 'v8res://mngsrv/preved_ws_preved.1cws'"
При вводе http://localhost/ws/preved.1cws?wsdl - Ошибка - Сервис не найден
Ведь нет в 8.2 файла с расширением ".1cws", как это было в 8.1. Все WS прописаны внутри файла default.vrd. На ИТС описывается, что к веб-сервисам обращаемся по имени, например "ws/preved" (как я и делаю http://localhost/ws/preved?wsdl)
Ответили: (163)
# Ответить
163. Трактор 08.12.2012 20:44
(162) Сообщение "Файл не обнаружен 'v8res://mngsrv/preved_ws_preved.1cws'" говорит о проблемах внутри 1С. То ли кэш конфы кривой, толи сама конфа кривая.
8.2 поддерживает все формы обращения к веб сервисам версии 8.1. Даже если публикация выполнена не vrd файлом, а файлом 1cws, то работать будет. Проверено.
# Ответить
164. evrakylon 08.12.2012 22:53
Это интересное наблюдение, проверю. То есть 8.2 наследует сервисы, опубликованные в 8.1? Тем не менее пока не получилось отправить POST запрос - xmlhttp.open('POST', 'preved.1cws', true)
Ответили: (169)
# Ответить
165. evrakylon 09.12.2012 02:48
Получилось выполнить web-сервис средствами 1С. И тут есть нюанс, может, кому понадобится на будущее: пространство имен не обязательно должно реально существовать, как пишут некоторые. Но оно должно быть оформлено корректно: "//localhost" и "1c" не сработали, зато подошло "http://www.sample-package.org".
На счет xmlhttp.open('POST', 'preved.1cws', true) пока нет продвижения.
P.S. убил apache и поднял на IIS
Ответили: (166)
# Ответить
166. Трактор 10.12.2012 23:42
(165) evrakylon,
На счет xmlhttp.open('POST', 'preved.1cws', true) пока нет продвижения.

Почитай (159)
Ответили: (167)
# Ответить
167. evrakylon 11.12.2012 13:02
(166) Трактор, да, я заменил эту процедуру. Пробую под всеми браузерами. Chrome пишет, что запрос завершился неудачно, FF - молчит. Играет ли роль, что отправляем тут xmlhttp.send('<?xml version="1.0" encoding="UTF-8"?>'...? Видел примеры, что отправляют просто строку.
Думаю, что проблема в пути в методе xmlhttp.open, но перепробовал кажется все комбинации. У меня IIS, файл default.vrd в папке C:\inetpub\wwwroot\preved
Ответили: (168)
# Ответить
168. Трактор 11.12.2012 13:36
(167) Примеры в статье тоже отправляют только строку.
Строка xmlhttp.send('<?xml version="1.0" encoding="UTF-8"?>'.. правильная. Это заголовок.
# Ответить
169. Sheff 13.12.2012 14:38
(164) evrakylon,
Тем не менее пока не получилось отправить POST запрос - xmlhttp.open('POST', 'preved.1cws', true)

Попробуй отправить как xmlhttp.open('POST', 'http://localhost/ИмяПубликацииНаСервере/ws/preved.1cws', true)

В 8.2 у меня только так и получилось
# Ответить
170. cs25 17.12.2012 11:26
Уважаемый Трактор !!!
Получилось опубликовать "Здоровеньки булы !" в связке IIS, 1С 8.1, Windows XP, файловый вариант базы. Возвращает строку. Вопрос:
как в конфигурации правильно создать пакеты XDTO для возврата рееестра документов ?
Нужно что-то типа такого (количество строк в ТЧ "Товары" у каждого документа своё ... как прописать в XDTO не знаю ...):

ДатаДокумента
НомерДокумента
Контрагент
Менеджер
СкладКомпании
Номенклатура1
Номенклатура2
......
НоменклатураN
СуммаДокумента
СуммаНДСДокумента
Ответили: (171)
# Ответить
171. Трактор 17.12.2012 11:42
(170)
как в конфигурации правильно создать пакеты XDTO для возврата рееестра документов ?

Так в примере же показано как формировать список. Если правильно помню, то возвращается список сотрудников.
Ответили: (176)
# Ответить
172. Sheff 18.12.2012 13:47
Я правильно понимаю что в модуле веб-сервиса нельзя использовать функции общих модулей?
Ответили: (173)
# Ответить
173. Трактор 18.12.2012 14:38
(172) Понимаешь неправильно. функции общих модулей использовать можно. Но только серверные.
# Ответить
174. Sheff 18.12.2012 14:41
Серверные функции?
Ответили: (175)
# Ответить
175. Трактор 18.12.2012 15:42
(174) Sheff,
Серверные функции?

Серверные модули! Функции модулей, доступных на сервере.
# Ответить
176. cs25 19.12.2012 16:47
Уважаемый Трактор !!!
(171)
Так в примере же показано как формировать список. Если правильно помню, то возвращается список сотрудников.

Сделал выборку документов и их реквизитов как Вы и подсказали !!! Но ...
Как добавить данные из ТЧ документа ? Создавать ещё один тип объектов в ПакетахXDTO к уже имеющемуся типу "Документы" ?
Ответили: (177)
# Ответить
177. Трактор 19.12.2012 16:59
(176) ПакетXDTO может быть никак не связан с типами данных конфигурации. В примере картинка с примером как может быть отображён документ в xdto. Показаны поля xdto объекта и одно из полей имеет сложную структуру и может повторяться много раз - некий аналог табличной части.
Про манипуляции с данными документа я не говорю, подразумеваю что это всем известно.

Прикрепленные файлы:

Документ в xdto.JPG
+ 1 [ cs25; ]
# Ответить
178. cs25 20.12.2012 14:38
Многоуважаемый Трактор !!! Прошу подсказать как правильно сделать, если не утомил Вас расспросами.

Если например взять пакетХDTO с Вашего скрина, то нужно сделать примерно так:

сначала идёт запрос "ВыборкаДокумент", выбираем документы за период


ДокументТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "ZakazPokupatelya");
СписокДокументовТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "СписокДокументов");
СписокДокументов = ФабрикаXDTO.Создать(СписокДокументовТип);

Пока ВыборкаДокумент.Следующий() Цикл
ZakazPokupatelya = ФабрикаXDTO.Создать(ДокументТип);
ZakazPokupatelya.Data = Строка(ВыборкаДокумент.ДатаДокумента);
ZakazPokupatelya.Nomer = Строка(ВыборкаДокумент.НомерДокумента);
........


Товары = ВыборкаДокумент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Товары.Следующий() Цикл

Как тут добавить добавление строк из ТЧ "Tovary" ?
Добавлять ещё одно описание ХDTO ?

КонецЦикла;

СписокДокументов.ZakazPokupatelya.Добавить(ZakazPokupatelya);
КонецЦикла;

Возврат СписокДокументов
Ответили: (179)
# Ответить
179. Трактор 24.12.2012 11:23
(178) cs25,
>> Как тут добавить добавление строк из ТЧ "Tovary" ?
Так:
ДокументТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "ZakazPokupatelya");
ZakazPokupatelya = ФабрикаXDTO.Создать(ДокументТип);
TovaryТип = ДокументТип.Свойства.Получить("Tovary").Тип;
Пока Выборка.Следующий() Цикл
	Tovary = ФабрикаXDTO.Создать(TovaryТип);
	Tovary.Nomenklatura = ПолучитьЭлементСсылка(Выборка.Номенклатура, Строка(Выборка.Номенклатура));
	Tovary.Kolichestvo = Выборка.КоличествоТовара;
	ZakazPokupatelya.Tovary.Добавить(Tovary);
КонецЦикла;
...Показать Скрыть
+ 1 [ cs25; ]
# Ответить
180. eugen91 04.01.2013 13:17
как бы подключиться к веб-сервису evernote?
# Ответить
181. podkova 17.01.2013 14:17
сделала все по вашей статье, настроила iis по другой статье отсюда тоже, не получается ссылку получить wsdl, 2 день бьюсь-помогите.
8.1, файловая база, 1cws открывается, а на ссылку говорит внутренняя ошибка.
Перечитала все комменты, дело в настройках iis-1С, и не понимаю где это может быть...права на базу и на папку bin дала, пользователей из базы убрала, опубликовала из 1С с правами админа-что не так??
Ответили: (182)
# Ответить
182. podkova 17.01.2013 14:21
(181) получилось, извините, спасибо за статью
# Ответить
183. x2z7yy 24.01.2013 10:14
<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>


Подскажите, пожалуйста, что с этим делать?

Это в ЗдоровенькиБулы
Ответили: (184) (185) (186)
# Ответить
184. Трактор 24.01.2013 10:22
(183) Описание wsdl открывается? Как его получить написано выше.
Ответили: (187)
# Ответить
185. podkova 24.01.2013 10:28
(183) копай в 1С в пакете XTDO и правильно присвой его веб-сервису, а если это без пакета(Здоровеньки Булы), то просто посмотри что в поле пространство имен у веб-сервиса стоит.
Ответили: (187)
# Ответить
186. Sheff 24.01.2013 10:38
(183) x2z7yy, это у вас на каком этапе?
Ответили: (187)
# Ответить
187. x2z7yy 24.01.2013 10:47
(184) Трактор,
По запросу: "http://localhost/webbase/ws/preved.1cws?wsdl"
Выдает:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.goo7gle.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://www.goo7gle.com" name="ЗдоровенькиБулы" targetNamespace="http://www.goo7gle.com">
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://www.goo7gle.com" targetNamespace="http://www.goo7gle.com" elementFormDefault="qualified">
<xs:element name="ПриветХлопцы">
<xs:complexType>
<xs:sequence/>
</xs:complexType>
</xs:element>
<xs:element name="ПриветХлопцыResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="ПриветХлопцыRequestMessage">
<part name="parameters" element="tns:ПриветХлопцы"/>
</message>
<message name="ПриветХлопцыResponseMessage">
<part name="parameters" element="tns:ПриветХлопцыResponse"/>
</message>
<portType name="ЗдоровенькиБулыPortType">
<operation name="ПриветХлопцы">
<input message="tns:ПриветХлопцыRequestMessage"/>
<output message="tns:ПриветХлопцыResponseMessage"/>
</operation>
</portType>
<binding name="ЗдоровенькиБулыSoapBinding" type="tns:ЗдоровенькиБулыPortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ПриветХлопцы">
<soapbind:operation style="document" soapAction="http://www.goo7gle.com#ЗдоровенькиБулы:ПриветХлопцы"/>
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="ЗдоровенькиБулыSoap12Binding" type="tns:ЗдоровенькиБулыPortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ПриветХлопцы">
<soap12bind:operation style="document" soapAction="http://www.goo7gle.com#ЗдоровенькиБулы:ПриветХлопцы"/>
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="ЗдоровенькиБулы">
<port name="ЗдоровенькиБулыSoap" binding="tns:ЗдоровенькиБулыSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/" conformsTo="http://ws-i.org/profiles/basic/1.1"/>
</documentation>
<soapbind:address location="http://localhost/webbase/ws/preved.1cws"/>
</port>
<port name="ЗдоровенькиБулыSoap12" binding="tns:ЗдоровенькиБулыSoap12Binding">
<soap12bind:address location="http://localhost/webbase/ws/preved.1cws"/>
</port>
</service>
</definitions>
...Показать Скрыть


(185) podkova,
"Поскольку мы будем оперировть только строками, то пакет XDTO нам не потребуется" цитата из документа описания.

тип у ПриветХлопцы стоит: "string (http://www.w3.org/2001/XMLSchema)"

(186) Sheff,
да вроде как на самом последнем, осталось только вывести:)

п.с. извиняюсь, как засунуть код под споллер не нашел, может быть и нет такой возможности.
Ответили: (189)
# Ответить
188. x2z7yy 24.01.2013 10:52
Отбой, нашел проблему. У меня в пространстве имен стояло "http://www.goog764127le.com"

что-то я не понял сразу, что это поле нужно нормально заполнять:) Кстати, что это такое?
# Ответить
189. Sheff 24.01.2013 10:54
(187) x2z7yy, ааа, ну дело значит в javaскрипте. Вы код скрипта копировали из примера?
# Ответить
190. abtat 21.02.2013 17:40
Трактор!
В Ваших ответах в переписке встречаются 3 варианта завершения команды POST:
...ws/preved.1cws?wsdl,
...ws/preved.1cws?1cws и
...ws/preved.1cws,

У меня WEB сервисы "Здоровеньки булы" и "Сотрудники" успешно работают при вызове из другого 1С, причем оба 1С
и апач 2.2 находятся на одном компьютере и в 1С единственный анонимный пользователь. В этих вызовах я использую следующие определения сервисов:

Определение = Новый WSОпределения("http://localhost/WebServicesDemo/ws/PrivetBoys.1cws?wsdl");
Определение = Новый WSОпределения("http://localhost/WebServicesDemo/ws/Workers.1cws?wsdl");

При вызове привета через браузер я попробовал все 3 Ваших варианта команды POST, хотя и считал, что правильна только первая:

xmlhttp.open('POST', 'http://localhost/WebServicesDemo/ws/PrivetBoys.1cws?wsdl', true)
// xmlhttp.open('POST', 'http://localhost/WebServicesDemo/ws/PrivetBoys.1cws?1cws', true)
// xmlhttp.open('POST', 'http://localhost/WebServicesDemo/ws/PrivetBoys.1cws', true)

Команда SEND полностью Ваша с заменой только имени функции "ПриветХлопцы" на английский "SalutBoys".

При первом варианте я дохожу до исполнения функции ПриОтветеВэбСервера со статусом 200 (ОК),
но ДомОтвет = NULL, при втором и третьем - запрос завершается soap:Fault c
FaultCode soap:VersionMismatch

Все в httpd.conf, требующееся для 1С учтено, файл 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="/WebServicesDemo"
ib="File="E:\ПоставщикWSDemo";"
enable="false">
<ws>
<point name="ДанныеОтгрузки"
alias="shipment.1cws"/>
<point name="ДанныеНоменклатуры"
alias="products.1cws"/>
<point name="Workers"
alias="Workers.1cws"/>
<point name="PrivetBoys"
alias="PrivetBoys.1cws"/>
</ws>
</point>
Вроде все сделал как рекомендовано, а не работает. Помогите, кто может.
# Ответить
191. poyson 22.02.2013 15:24
Очень полезно. спасибо.
# Ответить
192. xxxpb_ 17.05.2013 15:07
Здравствуйте.
У меня один вопросик, возможно немного не по теме.
есть ли возможность подключения клиентов к 1С используя "веб-клиент", но при подключении чтоб они вбивали свой логин и пароль и не ВИДЕЛИ СПИСОК ВСЕХ ПОЛЬЗОВАТЕЛЕЙ 1С!!! и если существует такая возможность ткните пожалуйста туда где мне можно почитать про это... спасибо.
Ответили: (193)
# Ответить
193. Трактор 17.05.2013 15:11
(192) В свойствах пользователя базы 1С надо для всех пользователей снять галку "Показывать в списке выбора"

Или набиваешь таким образом себе стартмани для скачивания?
Ответили: (194)
+ 1 [ xxxpb_; ]
# Ответить
194. xxxpb_ 17.05.2013 15:15
(193) Трактор, Огромное спасибо!

ЗЫ =((( и в мыслях не было.
# Ответить
195. Sheff 17.05.2013 15:20
Тролль!
# Ответить
196. mdSerg 21.05.2013 13:37
я бы что-то сказал, но не могу скачать
# Ответить
197. abtat 26.06.2013 15:24
Спасибо за всю информацию, Трактор. В создании сервисов в демонстрационных конфигурациях ПоставщикWSDemo - ПолучательWSDemo я разобрался и свои ошибки нашел. Ваши демонстрационные сервисы и свой сервис по анализу серийных номеров приборов исправно работают как при вызове из другого 1С, так и при вызове из браузеров IE и Opera. Перенес пакеты ХДТО и сервисы в файловую копию рабочей системы и не могу справиться с аутентификацией. Сделал специального пользователя "UserWS" с паролем "аа" и дал ему роли пользователя, администратора и полные права.
Для вызова из другой 1С ввел его имя и пароль в конструктор «Новый WSОпределения(…)» вызывающей 1С, как указано в хелпе, и получаю ответ:

{Обработка.ПроверкаVEGAНомера.Форма.Форма.Форма(14)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения("http://localhost/WebServicesDemo/ws/TestVegaSN.1cws? wsdl","UserWS","aa");

по причине:

Аутентификация пользователя не выполнена.

Для вызова из браузера добавил имя тестового пользователя и пароль в строку ib по образцу Вашего текста файла default.vrd из сообщения №105. Несмотря на это, у меня требуется пароль. Запрос приложил. Пытался вводить на нем как тестового пользователя с паролем, так и свое имя со своим паролем, а у меня все права и на компьютере, и в 1С, и в сети - все равно получаю ответ "Аутентификация пользователя не выполнена".

Все экземпляры 1С и браузеры расположены на одной машине, поэтому сетевых проблем быть не должно. Что делать?
Ответили: (198) (199)

Прикрепленные файлы:

Аутентификация.bmp
# Ответить
198. Трактор 02.07.2013 23:48
ошибка
# Ответить
199. Трактор 02.07.2013 23:50
(197) С файловой базой вечно проблемы. Проверь наличие прав на каталог 1С у пользователя, под которым работает веб сервер. Если права есть, то попробуй переложить базу на сетевой диск или на диск с fat32. Должно помочь.
Ответили: (206)
# Ответить
200. abtat 11.07.2013 15:17
Перевел тестовую базу на клиент-серверную конфигурацию. Все равно, если в конфигурации, из которой публикуются сервисы, нет пользователей, то сервисы успешно работают и при вызове из другой 1С, и при вызове из браузера IE. Если же завожу в конфигурации - поставщике сервисов хотя бы одного пользователя, то получаю ошибку при обращении к вызываемой функции сервиса. Это происходит независимо от включения логина и пароля пользователя в строку ib=... файла default.vrd, для браузерного вызова и в Прокси для 1С-ного вызова. Удаление логина и пароля из конструктора WSОпределения вызывает ошибку при обращении к конструктору. Детальные отчеты в приложениях. Что еще сделать не представляю - в дискуссии было упоминание о правах пользователя, от имени которого запущен Апач, на файл 1С, но для клиент-серверных конфигураций это вроде бы неприменимо. Посоветуйте, кто может!

Прикрепленные файлы:

Ошибка при запросе из 1С сетевого сервиса.doc
Ошибка при запросе из браузера IE серевого ВэбСервиса TestVegaSN .doc
# Ответить
201. abtat 11.07.2013 17:24
Вопрос предыдущего сообщения снимаю. Ошибка возникала из-за того, что при создании роли "Администратор" при задании прав не спустились до вызываемой функции сервиса, в данном случае до "ПроверитьСерНомер()", пытались дать право на сервисы в целом. Осталось одно - при вызове из 1С все работает нормально, при вызове из браузера IE требуется все же ввести имя и пароль пользователя UserWS в открывающемся окне "Подключение к localhost". Наличие имени пользователя и пароля в строке ib= файла default.vrd картину не меняет. Наверно все с этим встречались - подскажите куда вставить эти данные.
Ответили: (202)

Прикрепленные файлы:

Запрос пароля для подключения к localhost.bmp
# Ответить
202. Трактор 11.07.2013 17:32
(201)
Наверно все с этим встречались - подскажите куда вставить эти данные

Правильно вставляешь. Это ошибка платформы, которая периодически всплывает. В одном релизе исправят, в следующем она опять проявится. Потом исправят ещё раз. И так уже три года. Обнови платформу.
# Ответить
203. abtat 16.07.2013 10:36
У меня 8.2.14.540. А на какой из последних все работает?
# Ответить
204. abtat 16.07.2013 10:39
НУ меня сейчас платформа 8.2.14.540. А на какой последней платформе все работало?
Ответили: (205)
# Ответить
205. Sheff 16.07.2013 10:47
(204) abtat, работает на 8.2.16, 8.2.18.61
# Ответить
206. Manticor 06.09.2013 12:27
(199) Трактор, никак не могу разобраться, воссоздавая Ваш пример по шагам)
1с 8.2, публикую веб сервис- скрин прилагаю) вы пишите, что файлик preved.1cws должен находиться в одной папке, но при стандартной публикации - его почему то там нет. И выезает ошибка на первом шаге Вашего руководства:

{"#exception":"{http://v8.1c.ru/8.1/data/core}Exception","exception":{"clsid":"9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3","descr":"Файл не обнаружен 'v8res://mngsrv/tr_preved.htm'","data":"77u/ew0KezlkYjFmYTM3LWI0NTUtNGYzZi1iOGRkLTdkZTBlYTdkNmRhMyw­i0KTQ\r\nsNC50Lsg0L3QtSDQvtCx0L3QsNGA0YPQttC10L0gJ3Y4cmVzOi8­vbW5nc3J2L3Ry\r\nX3ByZXZlZC5odG0nIn0sMSwNCnsidjhyZXM6Ly9tbmd­zcnYvdHJfcHJldmVkLmh0\r\nbSIsMH0NCn0="}}

Что нужно поменять?
# Ответить
207. poyson 13.11.2013 13:51
Спасибо . Полезно. Пробуем, пользуемся....
# Ответить
208. prodines 07.04.2015 14:33
Автору статьи: неужели нельзя было объяснить тему по-человечески - хотя бы так, чтобы всё заработало? У меня ничего не работает. Во-первых, конфу бухучета я не могу скачать - мне нечего объединять с прилагаемой cf-кой. Во-вторых - зачем отсылать читателя к жёлтым книжкам? А если у меня их нет? У меня действительно их нет. Трудно было написать статью "всё-в-одном"?

Итог - всё не работает - на самом первом простейшем примере, что не так - непонятно.

Минусую за откровенную халтуру.
# Ответить
209. prodines 07.04.2015 17:12
Я понял - статья просто устарела. У меня получилось заставить работать "Здоровеньки булы, друзи!" - под 1С 8.2.

1. Надо указать в файле preved.js

xmlhttp.open('POST', 'http://localhost/<Имя_базы_1С>/ws/preved.1cws', true)

2.
Опубликуем html файл на нашем web сервере под именем, например, preved.htm.

Это как это? Публикуем вообще-то файл preved.1cws, а не preved.htm!

3. "Здоровеньки булы, друзи!" заработали у меня в единственном броузере - IE. Ни в Mozilla FireFox, ни в Opera этот пример не заработал. Причина - в том, что если открыть файл preved.htm просто по файловому протоколу - например вот так: file:///C:/Program%20Files%20%28x86%29/Apache%20Software%20Foundation/­Apache2.2/htdocs/preved.htm , то тогда объект xmlhttp при ответе сервера вернёт статус 0 (а не 200, как положено) - потому что клиент и сервер в разныхх доменах. Для того, чтобы статус был 200 - нужно разместить файл как http://localhost/preved.htm - но в этом случае и вылетает ошибка

{"#exception":"{http://v8.1c.ru/8.1/data/core}Exception","exception":{"clsid":"9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3","descr":"Файл не обнаружен 'v8res://mngsrv/preved.htm'","data":"77u/ew0KezlkYjFmYTM3LWI0NTUtNGYzZi1iOGRkLTdkZTBlYTdkNmRhMyw­i0KTQ\r\nsNC50Lsg0L3QtSDQvtCx0L3QsNGA0YPQttC10L0gJ3Y4cmVzOi8­vbW5nc3J2L3By\r\nZXZlZC5odG0nIn0sMSwNCnsidjhyZXM6Ly9tbmdzcnY­vcHJldmVkLmh0bSIsMH0N\r\nCn0="}}


Это происходит именно в Mozilla FireFox и в Opera. А в IE всё работает, если запустить через file:///C:/Program%20Files%20%28x86%29/Apache%20Software%20Foundation/­Apache2.2/htdocs/preved.htm . Если вызвать localhost в IE, то у меня запускается веб-клиент.

Короче, заставить работать "Здоровеньки булы, друзи!" через Mozilla FireFox или Opera так и не удалось. Буду юзать IE пока.
# Ответить
210. prodines 08.04.2015 09:39
Беру назад свои слова насчёт халтуры. Но минус за статью всё равно оставляю - за то, что статья устарела, и её уже нельзя применить к практике в неизменном виде.
# Ответить
211. prodines 08.04.2015 15:02
В статье как-то слабовато рассказано про то, как, собственно, составлять SOAP-запросы из броузерного клиента к веб-серверу 1С:

6.2 Для написания запросов к web сервисам можно пользовать описание web сервиса доступное при обращении по адресу http://localhost/preved.1cws?wsdl, а можно взять за образец готовые запросы, формируемые 1С при подключении к web сервису. При подготовке этого документа использовался второй вариант. На языке 1С писалось обращение к web сервису, а затем сниффером перехватавались запросы для использования в javascript'ах. Оказалось не так просто найти сниффер, способный правильно перехватить запрос 1С. Хорошо работает и полностью перехватывает запросы 1С сниффер HttpAnalyzer компании IEInspector. К сожалению этот сниффер платный, но тестовых 15 дней вполне достаточно для получения нужных образцов запросов.


Я посмотрел - "можно пользовать описание web сервиса доступное при обращении по адресу http://localhost/preved.1cws?wsdl" - да ничего там понять невозможно, глупая эта идея. "а можно взять за образец готовые запросы, формируемые 1С при подключении к web сервису", "На языке 1С писалось обращение к web сервису, а затем сниффером перехватавались запросы для использования в javascript'ах." - автор, так просветите нас в деталях - как Вы это делаете? Ведь без этого умения вся Ваша статья теряет смысл. Да, и платный сниффер - тоже не есть хорошо.

К счастью, я нашёл другой отличный вариант написания SOAP-запросов из броузерного клиента к веб-серверу 1С - подсказали тут: http://infostart.ru/public/86791/ Смысл в том, что нужно применить программу SoapUI. Только автор публикации http://infostart.ru/public/86791/ ошибся - для наших целей с головой хватает бесплатной версии SoapUI, нет никакой нужды использовать платную SoapUI Pro, как он это делал.

Делаем так:

1. Создаём новый проект в SoapUI - жмём New Soap Project.
2. В поле Initial WSDL указываем нашу ссылку вида http://localhost/<Имя_базы_1С>/ws/preved.1cws?wsdl
3. Программа сама импортирует описание веб-сервиса из 1С, и сама строит правильный SOAP-запрос к этому сервису! Ничего не надо руками делать.
4. В окошке данных проекта выбираем Request1 - как на рисунке из http://infostart.ru/public/86791/ , жмём зелёный треугольник, и получаем XML-ответ от 1С, внутри которого уже зашито наше "Здоровеньки булы, друзи!".
5. Для примера ПолучитьСписокСотрудников делаем немного не так, как на картинке выше - а прямо в XML-коде запроса убираем знак вопроса и (опционально вместо него указываем, скажем, "петр") и жмём зелёный треугольник - как описано в http://proghouse.ru/programming/20-soapui
Таким образом, избегаем необходимости в платной версии - SoapUI Pro - как это ошибочно думал автор http://infostart.ru/public/86791/
Ответили: (212)
# Ответить
212. Трактор 09.04.2015 08:50
Смысл в том, что нужно применить программу SoapUI

(211) prodines, SoapUI упоминается в комментариях к этой статье с 2009 года (33)
Ответили: (213)
# Ответить
213. prodines 10.04.2015 13:09
(212) Трактор, упоминания недостаточно. Нужно step-by-step в картинках.
Ответили: (214)
# Ответить
214. Трактор 13.04.2015 13:31
Нужно step-by-step в картинках

(213) prodines, не всем оно надо. Большинство разбирается самостоятельно. Ты, смотрю, написал. Вот и хорошо.
# Ответить
215. prodines 15.04.2015 17:04
Я думаю, что в статье хорошо бы явно указать, для работы веб-сервиса нет нужды запускать 1С:Предприятие с соответствующей базой. Оказывается (и для меня это было открытие), веб-клиент (открытый в броузере HTML-файл со встроенным JavaScript) обращается к Веб-серверу (например, Апач), и далее Апач САМ лезет в рабочую 1С-базу - БЕЗ запущенного 1С:Предприятия! И как это достигается? Вообще непонятно. Остаётся домысливать, что всю работу на стороне 1С выполняет добавленная в httpd.conf строка:

LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.19.83/bin/wsap22.dll"

Видно, wsap22.dll принимает обращения от Апача и лезет в данные 1С, работая с ними так же, как пользователь через режим предприятия - а результат возвращает обратно Апачу.

Я-то думал поначалу, что Апач принимает обращение от броузера, затем обращается к запущенному 1С:Предприятие - и уже оно делает нужную работу. Оказалось, что нет.

Но стоит вырубить Апач на компе (для проверки) - как всё прекращается.
Ответили: (216)
# Ответить
216. Трактор 16.04.2015 11:41
далее Апач САМ лезет в рабочую 1С-базу - БЕЗ запущенного 1С:Предприятия!

(215) prodines, апач по сути запускает клиента 1С. Без визуальной части, но клиента. Это всё описано в документации 1С.


В этой публикации описано то, что было слабо документировано.
# Ответить
217. prodines 16.04.2015 16:12
Теперь не получается передать бинарный файл с веб-клиента на веб-сервер. Точнее, передать получается - сохранить на диск на веб-сервере не получается. Вот пример изменения функции:


Функция ПриветХлопцы()

ПолныйПуть = "C:\8.2\test.txt";

ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.ДобавитьСтроку("НоваяСтрока");
ТекстДок.Записать(ПолныйПуть);

Возврат "Здоровеньки булы, друзи!"

КонецФункции


Эта функция не создаст текстовый файл. И не выдаст никаких сообщений об ошибках. Тихо-молча вернётся, но файл не создаст. В то же время, в обычной внешней обработке та же функция создаёт этот текстовый файл без проблем.
# Ответить
218. newborn 17.04.2015 00:18
Не могу раскрутить тестовый пример. В VirtualBox создал тестовую онфигурацию: WinXP (так быстрее и меньше жрёт ресурсов), апач 2.2. Файл preved.htm не работает, возвращает всегда "Запрос завершился неудачно. Ответ сервера:" и пустота. Пробовал на Опере, в Хроме и в ИЕ.
Релиз 1С 8.3.5.1517
Обращение к preved.1cws из браузера проходит нормально. Для проверки попробовал создать обработку с обращение к веб-сервису из 1С - работает нормально. Значит можно предположить сам веб-сервис запущен.
Знакомый, знающий javascript делал отладку. В строке 52 файла preved.js всегда xmlhttp.status = 0 а xmlhttp.responseXML всегда есть NULL.
При этом снифер HttpAnalyzerStdV7 показывает, что ответ прищёл и именно такой ответ, как я ожидаю.
База файловая, называется test, опубликована в c:\test\
Ответили: (219)

Прикрепленные файлы:

preved.js
Рис4.png
Рис5.png
default.vrd
httpd.conf
# Ответить
219. prodines 17.04.2015 09:59
(218) newborn,
возвращает всегда "Запрос завершился неудачно. Ответ сервера:" и пустота. Пробовал на Опере, в Хроме и в ИЕ.

Это происходит ввиду устарелости статьи. Раньше так работало (8.1) - а теперь уже нет (8.2). Поэтому я минус статье и поставил.
Причина пустого ответа заключается в том, что preved.htm опубликовать в 8.2 нельзя (поправьте меня, если не прав), а раньше, видимо, было можно - на момент написания статьи. Раз preved.htm опубликовать нельзя, то приходится открывать его через файловый протокол, а не через http. Проще говоря, preved.htm открывается в броузере со ссылкой file://C:/test/preved.htm - а наш веб-сервер крутится на http://localhost. В примере из данной статьи используется объект xmlhttp = new XMLHttpRequest();, а он не умеет работать в кросс-доменном режиме - это заблокировано по соображениям безопасности - т.е. он не может обмениваться с file:// на http:// - в этом случае он возвращает status=0 вместо status=200 - на что рассчитывает пример из статьи. Вот если бы удалось открыть http://localhost/preved.htm (а для этого нужно было бы опубликовать preved.htm) - тогда возвращалась бы не пустота, а то, что нужно - но я так и не смог добиться открытия http://localhost/preved.htm - сыпятся малопонятные ошибки.

Однако, в IE 9 у меня такое кросс-доменное взаимодействие всё-таки сработало - это единственный броузер, в котором пример из статьи сработал - ни в Mozilla Firefox, ни в Opera не получилось - тоже вернулась пустота.
Для проверки попробовал создать обработку с обращение к веб-сервису из 1С - работает нормально. Значит можно предположить сам веб-сервис запущен.

Гадать, запущен веб-сервис, или нет, нет ни малейшей нужды. Откройте в любом броузере адрес вида:

http://localhost/<Имя_базы_1С>/ws/preved.1cws?wsdl - если увидите XML-файл - веб-сервис работает нормально. Если не увидите - то, скорее всего, увидите описание ошибки.

Кстати, почти именно эту строку и надо указать в JS-файле из статьи:

xmlhttp.open('POST', 'http://localhost/<Имя_базы_1С>/ws/preved.1cws', true, '<логин_1с_если есть>', '<пароль_1с_если есть>')

Читайте также мой ответ 211 - в комментариях к этой статье.
Ответили: (220)
# Ответить
220. newborn 17.04.2015 10:25
(219) prodines,
Значит локально я проверить не смогу? Блин... три дня бился башкойапстену... А как можно наладить тестовую систему? У людей-то получилось...
Ответили: (221) (224)
# Ответить
221. Трактор 17.04.2015 13:16
Значит локально я проверить не смогу?

(220) newborn, сможешь. Ставишь апач, подключашь к нему модуль 1С, обращаешься к нему по 127.0.0.1 и счастье рядом.
Ответили: (223)
# Ответить
222. DoctorRoza 17.04.2015 13:32
Отмечусь, пригодится! :)
# Ответить
223. newborn 17.04.2015 14:31
(221) Трактор,
Спасибо, но я опять чего-то не доганяю.
Вызываю в браузере.
http://127.0.0.1/test/preved.htm
Ответ
{"#exception":"{http://v8.1c.ru/8.2/virtual-resource-system}Exception","exception":{"clsid":"580392e6-ba49-4280-ac67-fcd6f2180121","reason":404,"descr":"HTTP: Not found\nОшибка при выполнении запроса GET к ресурсу /preved.htm:"}}
+ 1 [ mkostya; ]
# Ответить
224. prodines 17.04.2015 15:24
(220) newborn,
Значит локально я проверить не смогу?

Почему, сможете. Я же говорю - в IE 9 это работает.
А как можно наладить тестовую систему? У людей-то получилось...

Либо через IE 9, либо так, как описано в моем комментарии № 211 к этой статье.

Это неправильно. Видно, Вы с Апачем вообще никогда дела не имели.
Неожиданно у меня получилось с Opera 28.0.
Я положил preved.htm в папку C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs - это и есть localhost (он же http://127.0.0.1) по умолчанию - и ввёл там ссылку: http://localhost/preved.htm . Всё сработало - прямо как в статье. При этом веб-сервис опубликован в совсем другой папке. Раньше с Оперой почему-то не получалось - и вдруг получилось. В IE 9 так тоже работает. В Mozilla Firefox 28 пока не получается.

Т.е. в Опере 28:
Вот так получаем пустой ответ от сервера:
file:///C:/Program%20Files%20(x86)/Apache%20Software%20Foundation/Apache2.2/htdocs/preved.htm
из-за кросс-доменной блокировки безопасности.
А вот так - всё работает:
http://localhost/preved.htm
причём это один и тот же файл preved.htm.
# Ответить
225. prodines 17.04.2015 15:48
Маленькая, но важная деталь: для публикации веб-сервисов из Конфигуратора 1С нужны админские права на компьютере. Поэтому для тех, у кого их нет, запускайте Конфигуратор под администратором - для публикации веб-сервисов.
# Ответить
226. newborn 17.04.2015 16:40
Конечно, я с веб-серверами раньше дела не имел. Спасибо за все советы, вечером буду пробовать
# Ответить
227. newborn 18.04.2015 01:12
заработало!
# Ответить
228. prodines 24.04.2015 17:17
По поводу пересылки файлов:

У меня была задача переслать файл через SOAP c веб-клиента (SoapUI) на веб-сервер (1C). Переслать удалось довольно легко - в SoapUI оказался встроенный инструмент кодирования файлов в Base64 и вставки закодированного результата в узлы отправляемого XML.

Проблема возникла на веб-сервере 1С - он ни в какую не хотел записывать принятый файл на диск. Причём он вообще ничего не хотел записывать на диск.

Причина оказалась, как я думаю, в том, что это был серверный код. Видимо, на сервере вообще нельзя записать двоичные данные в файл - а можно только на клиенте.

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

Это, кстати, типовая схема в некоторых стандартных конфигурациях 1С.
Ответили: (229)
# Ответить
229. Трактор 27.04.2015 17:52
(228) Странное ты пишешь. 1С нормально работает с файлами на сервере. Вот тут есть пример передачи с сервера на сайт http://infostart.ru/public/59207/
Я передавал и с сайта в 1С, но сходу пример не вспомню.
# Ответить
230. bezplana 28.10.2015 16:24
Сделал веб-сервис на 1С. Добавил операцию, указал у нее входного параметра тип (Structure (http://v8.1c.ru/8.1/data/core)). Теперь пытаюсь вызвать эту операцию с веб-странички на PHP. Если передавать из PHP , например, строку, то все ок. А со структурой возникает проблема, преобразовать ее у меня получается, но при этом внутри нет элементов. Каким образом правильно делать вызов к операции из PHP?
Ответили: (231)
# Ответить
231. Трактор 28.10.2015 17:01
(230) структуру передавать не пробовал. Создавал XDTO-пакет и там описывал структуру передаваемых данных. Вот тут http://infostart.ru/public/59207/ более-менее сложные данные передаются из php в 1С
# Ответить
232. lehaer 27.03.2016 22:51
{"#exception":"{http://v8.1c.ru/8.2/virtual-resource-system}Exception","exception":{"clsid":"580392e6-ba49-4280-ac67-fcd6f2180121","reason":405,"descr":"HTTP: Method not allowed\nОшибка при выполнении запроса POST к ресурсу /***/admin/hs/***/***/***/***:"}}

подскажите, в чём может быть дело?
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016