Примеры пользования web сервисов 1С из браузера
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
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.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
WEB-интеграция Рабочее место Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Пользователь 1С:Предприятие 8 1С:Бухгалтерия 2.0 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 10 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)
Программный продукт "Управление доставками в 1С" позволяет обмениваться с личным кабинетом Boxberry, СДЭК, Энергия, Почта России, DPD, ПЭК, Grastin, Деловые Линии, КСЕ, Dalli, ЯндексДоставка. Упрощает создание заявок и резервирование заказов прямо в интерфейсе 1С
24400 руб.
10.03.2016 76145 321 100
WEB-интеграция Разработчик Аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)
Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.
17568 руб.
20.12.2024 7771 35 4
Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.
42700 руб.
03.08.2020 25843 42 26
WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)
Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.
20740 руб.
13.05.2025 3089 6 0
WEB-интеграция Оптовая торговля Розничная торговля Разработчик 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)
Модуль интеграции 1С с OpenCart 2.x, 3x позволяет обмениваться данными между OpenCart (самая популярная бесплатная cms для интернет-магазинов) и 1С:Предприятие 8.
6914 руб.
17.11.2015 135270 477 143
WEB-интеграция Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Управленческий учет Платные (руб)
Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.
5094 руб.
21.06.2022 11426 12 0
WEB-интеграция Загрузка и выгрузка в Excel Разработчик Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)
Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.
12200 руб.
29.08.2025 3767 7 8
WEB-интеграция Аналитик Бухгалтер Пользователь 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Бухгалтерия государственного учреждения Россия Платные (руб)
Доступ в виде подписки к сервисам 1СПАРК Риски и 1С:Контрагент в «старых», но широко используемых конфигурациях.
6100 руб.
30.01.2019 28937 104 6
Оригинал в odt. А doc для того чтобы могли прочесть и счастливые владельцы мс офиса.
.
GSoft, для 7-ки есть пример интернет-магазина на этом сайте. 7-ка не заточена для непосредственной работы с web, нужны сторонние приблуды.
После нажатия кнопки
Поприветствовать 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#
//For testing use DocURL = "res://shdocvw.dll/http_404.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;
…
---------------------------
ОК
---------------------------
Прокрути дальше и покажи что написано после тега <body>
Ты установил модуль web сервисов в IIS?
C:\Program Files\1cv81\bin\wsinst.exe -IIS
Для вызова из другой 1С ввел его имя и пароль в конструктор «Новый WSОпределения(…)» вызывающей 1С, как указано в хелпе, и получаю ответ:
{Обработка.ПроверкаVEGAНомера.Форма.Форма.Форма(14)}: Ошибка при вызове конструктора (WSОпределения)
Определения = Новый WSОпределения("http://localhost/WebServicesDemo/ws/TestVegaSN.1cws? wsdl","UserWS","aa");
по причине:
Аутентификация пользователя не выполнена.
Для вызова из браузера добавил имя тестового пользователя и пароль в строку ib по образцу Вашего текста файла default.vrd из сообщения №105. Несмотря на это, у меня требуется пароль. Запрос приложил. Пытался вводить на нем как тестового пользователя с паролем, так и свое имя со своим паролем, а у меня все права и на компьютере, и в 1С, и в сети - все равно получаю ответ "Аутентификация пользователя не выполнена".
Все экземпляры 1С и браузеры расположены на одной машине, поэтому сетевых проблем быть не должно. Что делать?
1с 8.2, публикую веб сервис- скрин прилагаю) вы пишите, что файлик preved.1cws должен находиться в одной папке, но при стандартной публикации - его почему то там нет. И выезает ошибка на первом шаге Вашего руководства:
{"#exception":"{}Exception","exception":{"clsid":"9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3","descr":"Файл не обнаружен 'v8res://mngsrv/tr_preved.htm'","data":"77u/ew0KezlkYjFmYTM3LWI0NTUtNGYzZi1iOGRkLTdkZTBlYTdkNmRhMyw
Что нужно поменять?
А надо? Какие-то наработки ещё есть, но они не представляют собой качественного изменения. Только развитие изложенной идеи.
Среди обнаруженных ограничений нашёл что средствами javascript в 1С не получится по-человечески ни затолкать ни получить файл. Поэтому если требуется добавлять/читать файлы, то лучше использовать серверный язык, например PHP.
С авторизацией немного разобрался.
1. После танцев с бубном боги сказали что если база файловая, то ей лучше лежать на fat32. Тогда проблем с авторизацией средствами 1С нет.
Для файловой базы на NTFS авторизацию средствами 1С запустить не удалось, зато хорошо работает доменная авторизация.
Если к 1С обращаться серверным языком, то можно всегда это делать под одним пользователем с доменной авторизацией. Это не слишком безопасно, но работоспособно.
2. В клиент-серверной версии проблем с авторизацией нет. Прекрасно катит авторизация средствами 1С.
Вот пример файла 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";"/>
Если теги покоцаются, то я не виноват.
Речь идёт об отношениях между клиентом (браузером) и сервером (Apache, IIS).
1. При передаче файла клиенту 1C отдаёт XML файл в котором файл закодирован в base64. Браузер получает этот файл, закодированный в base64 и ничего с ним сделать не может. javascript не может записать файл на диск. Отобразить файл как картинку может только если размер файла меньше 4-х кБ.
2. При передаче файла на сервер наступаем на те же грабли, только с другого края. javascript не может прочитать файл клиента. Это ограничение безопасности. Если бы удалось обойти это ограничение, то проблем бы не было. На javascript.ru мне посоветовали отправлять файл на сервер, там PHP'ом кодировать в base64 и возвращать клиенту. Нафига это надо? Чем так легче РНР'ом сразу писать файл в web сервис 1С.
.
tango, если ты знаешь как обойти эти ограничения - подскажи. Моя благодарность не будет иметь границ в пределах разумного :-)
в модуле внешнего соединения формирую текст для asp-response, при этом файл на сервере
указывается просто как <A href="file">
а получаю из формы обыкновенным POSTом
единственное, на что наткнулся - и то - не грабли - просто не в лоб решается - удаление файла на сервере, 1ска во внешнем соединении этого не может
| Код |
|---|
// 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>";
Исключение
Константы.Лог.Установить(Константы.Лог.Получить()+Символы.ПС+ОписаниеОшибки());
КонецПопытки;
Возврат СписокКонтрагентов;
КонецФункции
Показать полностью |
удалять у меня по ходу не надо, админ удалит, ежели чё, потому и не заморачивался
но, похоже, решение на яваскрипте встроено:
| Код |
|---|
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();Показать полностью |
Если предполагается использовать только ИЕ, то да, твоё решение прокатит.
.
>> фишка еще в том, что ком есть и для 77
Базару нет. Для 77 предложенный тобой способ единственный. Иначе вживую к базе не достучаться. Для 8-ки он тоже хорош, серьёзных минусов назвать не возьмусь.
Но я бы отдал построение страниц web серверу, а из 1С отдавал только данные. Как говорится каждому своё.
soap:Client Ошибка вызова операции сервиса: {}:ЗдоровенькиБулы:getWSDL() по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор Ошибка вызова операции сервиса: {}:ЗдоровенькиБулы:getWSDL() по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор по причине: {WebСервис.ЗдоровенькиБулы(3,9)}: Неопознанный оператор
В чем может быть проблема?
Функция ПриветХлопцы()
Возврат "Здоровеньки булы, друзи!"
КонецФункции
Такая ошибка может выдаваться если
1. ты ничего не написал после слова Возврат.
Или
2. В свойствах метода ПриветХлопцы не указал тип возвращаемого значения string (
28 tango, или ты или я не в теме. Я всегда считал что яваскрипт не исполняется на сервере. Это клиентский язык. Неужели я ошибаюсь?
Сейчас при нажатии на кнопку выскакивает сообщение:
"Запрос завершился неудачно. Ответ сервера:
<?xml version="1.0" encoding="UTF-8"?>
<service namespace="http:/sample-package.org" name="ЗдоровенькиБулы" connectString="File="C:\Work\1c\WSDemo";"/>."
C:\Work\1c\WSDemo - путь по которому расположены файлы конфигурации.
Посмотри на файл *.1cws браузером. Обращение к нему может выглядеть так
Сервер должен выдавать ссылку в этом роде:
{http:/sample-package.org}:ЗдоровенькиБулы
Под этим текстом должна быть WS ссылка на получение описания сервиса.
Если ты увидишь что-то вроде {http:/sample-package.org}:ЗдоровенькиБулы, то это значит что модуль web сервисов в IIS установлен верно. До получения такой ссылки базу 1С трогать не стоит, IIS к ней ещё не обращается.
При входе на пишет:
Запрос завершился неудачно. Ответ сервера:<?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 на этом-же ПК и с этой же базой работает
Че делать-то??? СПАСИБО заранее.
Но не знаю как передать параметры в вызов процедуры, чтобы можно было задать период выборки и, например, подразделение.
И еще как тут на форуме свои разработки выкладывать, а то мож кому пригодится.
помогите заставить работать этот сервис, плиз
установил, пример 1 работает:
выдает:
}:ЗдоровенькиБулы
выдает описание веб сервиса.
пример 2:
выдает:
{}:Сотрудники
выдает:
- <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
Почему так? Жду помощи....
БД на MSSQL 2005 sp2, 1С 8.1.13.41, www -серверы были испробованы Apache2.2 и IIS6.
Может сразу в техподдержку?
<dump location="C:\Program Files\1cv81\dumps" create="1" type="3"/>
В технологический журнал пиши всё. Потом всё что получишь высылай в 1С может помогут.
____________________________
Запрос завершился неудачно. Ответ сервера: <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 пакета..
Добавь хоть пустой тег <m:СтрокаПоиска> </m:СтрокаПоиска>
1С при получении запроса сначала проверяет его на соответствие WSDL. А в WSDL прописан обязательный входной параметр СтрокаПоиска. Только после этого управление передаётся твоему коду в модуле web сервиса.
_________________________
Вот то, что уходит в 1С..
<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>
Попробуй
1 - Веб сервер
2 - Права доступа на файлы (в том числе и для файлов базы) для пользователя под которым запускается веб сервис.
3 - Авторизация в информационной базе.
В 99% случаях вы упираетесь в 2 пункт. Решение этой проблеммы простая настройка права доступа к вайлам.
после загрузки этой страницы
видим кнопку "Поприветствовать web сервис"
при нажатии
или ошибка на весь экран
Запрос завершился неудачно Отвер сервера
<DOC TIPE HTMLPUBLIC DTD HTML 3.2 FINAL>
или кнопка меняет надпись на "ждем ответа" и все.
Если к фирефоксу подключишь firebug, то сможешь видеть запросы, ушедшие на сервер и полученные браузером. Они должны быть похожи на запросы, приведёные в статье.
Почитай обсуждение. Тут много писалось. Повторять не хочется.
Если указываю относительный путь в Open, то запрос не отсылается, если полный - статус ответа 0. Пытался такой же скрипт на 1С смоделировать - там возвращается ошибка 500. Что не так делаю?
добавил, с правами вроде нормально. Похоже, что модуль не подгружается, или ещё
ProcessMonitor пишет
Operation: QueryOpen
Result: SUCCESS
Path: C:\Program Files\1cv81\bin\wsap22.dll
есть версия apache , которая проверена и работает? (а апач 2.2.15 скачивал с ихнего сайта, последняя версия, мож глючит)
и папка conf в которой есть изменения ?
скинь на мыло, может я чё в конфиге не то делаю.
Оказывается я уже начал забывать как она публикуется. Файлы 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>
Показатьостанавливаю ISS, устанавливаю apache, (при установке пишу localhost)
в httpd вставляю
LoadModule _1cws_module "c:/Program Files/1cv81/bin/wsap22.dll"
в папку htdocs помещаю файл ***.1cws
обращаюсь и
результат одинаковый.
останавливаю apache, запускаю IIS ( - работает......
наверно я что-то не так настраиваю....
А как реализовать загрузку в 1с измененных данныйх. На пример, изменили фамилию на сайте и эти изменения отразились в базе. Очень нужно реализовать именно такое взаимодействие и причем онлайн. На платформе 8.2
Как надо настраивать IIS для этого случая и каким образом делать обращение к веб-сервису?
Пока что экспериментирую на "Здоровеньки булы".
У меня задача такая: по переданному коду 1с должна возвратить таблицу с данными.
tango тебя тут врядли услышит.
Платформа 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' "
Загрузил в нее конфигурацию из примера, опубликовал
Ввожу в браузере:"http://srv1c/IISTest/preved.1cws"
Получаю ту же ошибку: "Файл не обнаружен 'v8res://mngsrv/preved.1cws' "
Если на установку и натсройку IIS было потрачено пару часов вдумчивого чтения мануалов, настройка Апача заняла 15 минут. Это пока единственное замеченное преимущество. Из недостатков - один фиг не работает, причем симптоматика один в один.
Непонятно, как у Апача в плане информационной безопасности, IIS как то посерьзнее кажется.
Попробуй тестирование исправление, затем другую базу.
В папке "с:/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> Показатькликаю по ней - выдается, я так понимаю описание
- <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>
<!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><?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С пароль не спрашивала.
выставил галочку "Использовать тонкий клиент и 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> ПоказатьИзменил в sotrudniki.js
было
xmlhttp.open('POST', 'sotrudniki.1cws', true)
стало
xmlhttp.open('POST', '/./IISTest/ws/sotrudniki.1cws', true)
Поправил конфигурацию базы - создал там справочники "Сотрудники" и "ФизическиеЛица", чтобы было откуда 1С-ным запросом данные выдергивать.
Все работает: и "ЗдоровенькиБулы" и "Сотрудники"!!!
все работает
Респект и уважуха за статью, коллега !!!
Конечно, она писалась под 8.1, а там немного все по другому, но после легкой доработки напильником все прекрасно заработало и на 8.2
Переписал немного ваш файл 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>') ПоказатьНикак не могу понять, где поправить
Приходилось решать похожие задачи. Подключение внешних клиентов к нашей информационной базе.
Использовал Бесплантый Апач, который прекрасно работает как под Виндой, так и в Линуксе.
Огромное спасибо!
Сначала хочу выразить огромное спасибо автору за данную статью!!!
Тестировал ранее на 8.1 проблем не было.
Сейчас на 8.2 Здоровеньки работают, а вот по Сотрудникам выдаёт
подключение прервано (Ошибка 101 (net::ERR_CONNECTION_RESET): Соединение сброшено).
В 1С не силён. кто подскажет в чём может проблема?! Уже всё перепробовал...
1. Ошибка в коде или в данных, которая валит 1С. Эта причина более вероятна, если ЗдоровенькиБулы работают в этой же базе 1С. Может помочь тестирование и исправление базы данных. Если не поможет - надо смотреть код.
2. Ошибка в настройках веб сервера. Тут я не силён.
Установил Апач (сборка Denwer). Сделал всё как описано в скаченном архиве. При запуске в IE ссылок: или - на форме появляются кнопки. Но при нажатии на них
ничего не происходит. При нажатии кнопки "Получить список сотрудников" на на кнопке выводится "Найдено 0 человек" ... При нажатии на "Поприветствовать web сервис"
ничего не происходит ...
Не совсем понятно что делать на 4.4 шаге (и далее) Вашего описания для получения на экране приветствия "Здоровеньки булы, друзи!".
Огромная просьба помочь (для тех кто в танке). Ну или выслать более полное описание для публикации простого Поприветствовать web сервис и чуть более сложного Получить список
сотрудников. Заранее благодарен
С web-сервисами только-только начинаю экспериментировать. В идеале хочу получить выгруженный файлик txt с реестром документов (РеализацияТоваров) за период (просто идущие друг за
другом строки (string ( являющиеся реквизитами документа (например Дата, Номер, Контрагент, Номенклатура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 установлен.
1. Читаем обсуждение. Эти вопросы уже обсуждались.
2. Выясняем имя базы в файлике default.vrd в параметре base="/ИмяБазы1С"
3. Переходим
Если видим описание wsdl Тогда
1С состыкована с Апачем правильно.
Иначе
приводим здесь файлики default.vrd и httpd.conf
КонецЕсли;
Для 8.2
Вариант 1:
1. У тебя не подключен модуль 1С. В прикреплении файл httpd.conf, где я для примера прописал подключение модуля и публикацию базы. Мои правки в конце файла. Обязательно поправь пути в нём.
2. В папку C:/Common/Apache/htdocs/moyabaza нужно положить файл default.vrd из прикрепления
Чтобы получить vrd файл нужно в конфигураторе выбрать пункт меню администрирование -> Публикация на веб-сервере
Вариант 2:
В конфигураторе 1С выбираешь пункт меню Администрирование -> Публикация на веб-сервере
default.vrd
Именно! У тебя не подключен модуль 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Сном каталоге.
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>
Показатьdefault.vrd
В качестве шаманских действий можно попробовать грузить модуль 1С последним, после всех остальных. Сейчас он у тебя грузится первым.
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 )
}
} Показатьxmlhttp.open('POST', 'preved.1cws', true)(с комментарием // файл preved.1cws располежен в том же каталоге, что и страница preved.htm. Путь может быть и другим, например, таким: '/./ws/preved.1cws'). Перепробовал множество вариантов, но не нашел, как адаптировать этот вызов под 8.2.
<definitions name="preved" targetNamespace="http://localhost">
<types><xs:schema targetNamespace="http://localhost" elementFormDefault="qualified">
<xs:element name="preved">
и тд.
При вводе ошибка - "Файл не обнаружен 'v8res://mngsrv/preved_ws_preved.1cws'"
При вводе - Ошибка - Сервис не найден
Ведь нет в 8.2 файла с расширением ".1cws", как это было в 8.1. Все WS прописаны внутри файла default.vrd. На ИТС описывается, что к веб-сервисам обращаемся по имени, например "ws/preved" (как я и делаю
8.2 поддерживает все формы обращения к веб сервисам версии 8.1. Даже если публикация выполнена не vrd файлом, а файлом 1cws, то работать будет. Проверено.
Попробуй отправить как xmlhttp.open('POST', 'http://localhost/ИмяПубликацииНаСервере/ws/preved.1cws', true)
В 8.2 у меня только так и получилось
На счет xmlhttp.open('POST', 'preved.1cws', true) пока нет продвижения.
P.S. убил apache и поднял на IIS
Думаю, что проблема в пути в методе xmlhttp.open, но перепробовал кажется все комбинации. У меня IIS, файл default.vrd в папке C:\inetpub\wwwroot\preved
Получилось опубликовать "Здоровеньки булы !" в связке IIS, 1С 8.1, Windows XP, файловый вариант базы. Возвращает строку. Вопрос:
как в конфигурации правильно создать пакеты XDTO для возврата рееестра документов ?
Нужно что-то типа такого (количество строк в ТЧ "Товары" у каждого документа своё ... как прописать в XDTO не знаю ...):
ДатаДокумента
НомерДокумента
Контрагент
Менеджер
СкладКомпании
Номенклатура1
Номенклатура2
......
НоменклатураN
СуммаДокумента
СуммаНДСДокумента
(171)
Так в примере же показано как формировать список. Если правильно помню, то возвращается список сотрудников.
Сделал выборку документов и их реквизитов как Вы и подсказали !!! Но ...
Как добавить данные из ТЧ документа ? Создавать ещё один тип объектов в ПакетахXDTO к уже имеющемуся типу "Документы" ?
Про манипуляции с данными документа я не говорю, подразумеваю что это всем известно.
Если например взять пакетХ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);
КонецЦикла;
Возврат СписокДокументов
>> Как тут добавить добавление строк из ТЧ "Tovary" ?
Так:
ДокументТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "ZakazPokupatelya");
ZakazPokupatelya = ФабрикаXDTO.Создать(ДокументТип);
TovaryТип = ДокументТип.Свойства.Получить("Tovary").Тип;
Пока Выборка.Следующий() Цикл
Tovary = ФабрикаXDTO.Создать(TovaryТип);
Tovary.Nomenklatura = ПолучитьЭлементСсылка(Выборка.Номенклатура, Строка(Выборка.Номенклатура));
Tovary.Kolichestvo = Выборка.КоличествоТовара;
ZakazPokupatelya.Tovary.Добавить(Tovary);
КонецЦикла;
Показать8.1, файловая база, 1cws открывается, а на ссылку говорит внутренняя ошибка.
Перечитала все комменты, дело в настройках iis-1С, и не понимаю где это может быть...права на базу и на папку bin дала, пользователей из базы убрала, опубликовала из 1С с правами админа-что не так??
<soap:Header/>
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Неверный формат. </faultstring>
<detail>Неверный формат. </detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Подскажите, пожалуйста, что с этим делать?
Это в ЗдоровенькиБулы
По запросу: "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 ("
(186) Sheff,
да вроде как на самом последнем, осталось только вывести:)
п.с. извиняюсь, как засунуть код под споллер не нашел, может быть и нет такой возможности.
В Ваших ответах в переписке встречаются 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>
Вроде все сделал как рекомендовано, а не работает. Помогите, кто может.
У меня один вопросик, возможно немного не по теме.
есть ли возможность подключения клиентов к 1С используя "веб-клиент", но при подключении чтоб они вбивали свой логин и пароль и не ВИДЕЛИ СПИСОК ВСЕХ ПОЛЬЗОВАТЕЛЕЙ 1С!!! и если существует такая возможность ткните пожалуйста туда где мне можно почитать про это... спасибо.
Ошибка при запросе из браузера IE серевого ВэбСервиса TestVegaSN .doc
Правильно вставляешь. Это ошибка платформы, которая периодически всплывает. В одном релизе исправят, в следующем она опять проявится. Потом исправят ещё раз. И так уже три года. Обнови платформу.
Итог - всё не работает - на самом первом простейшем примере, что не так - непонятно.
Минусую за откровенную халтуру.
1. Надо указать в файле preved.js
xmlhttp.open('POST', 'http://localhost/<Имя_базы_1С>/ws/preved.1cws', true)
2.
Это как это? Публикуем вообще-то файл preved.1cws, а не preved.htm!
3. "Здоровеньки булы, друзи!" заработали у меня в единственном броузере - IE. Ни в Mozilla FireFox, ни в Opera этот пример не заработал. Причина - в том, что если открыть файл preved.htm просто по файловому протоколу - например вот так: file:///C:/Program%20Files%20%28x86%29/Apache%20Software%20Foundation/
Это происходит именно в Mozilla FireFox и в Opera. А в IE всё работает, если запустить через file:///C:/Program%20Files%20%28x86%29/Apache%20Software%20Foundation/
Короче, заставить работать "Здоровеньки булы, друзи!" через Mozilla FireFox или Opera так и не удалось. Буду юзать IE пока.
Я посмотрел - "можно пользовать описание web сервиса доступное при обращении по адресу " - да ничего там понять невозможно, глупая эта идея. "а можно взять за образец готовые запросы, формируемые 1С при подключении к web сервису", "На языке 1С писалось обращение к web сервису, а затем сниффером перехватавались запросы для использования в javascript'ах." - автор, так просветите нас в деталях - как Вы это делаете? Ведь без этого умения вся Ваша статья теряет смысл. Да, и платный сниффер - тоже не есть хорошо.
К счастью, я нашёл другой отличный вариант написания SOAP-запросов из броузерного клиента к веб-серверу 1С - подсказали тут: Смысл в том, что нужно применить программу SoapUI. Только автор публикации ошибся - для наших целей с головой хватает бесплатной версии SoapUI, нет никакой нужды использовать платную SoapUI Pro, как он это делал.
Делаем так:
1. Создаём новый проект в SoapUI - жмём New Soap Project.
2. В поле Initial WSDL указываем нашу ссылку вида
3. Программа сама импортирует описание веб-сервиса из 1С, и сама строит правильный SOAP-запрос к этому сервису! Ничего не надо руками делать.
4. В окошке данных проекта выбираем Request1 - как на рисунке из
, жмём зелёный треугольник, и получаем XML-ответ от 1С, внутри которого уже зашито наше "Здоровеньки булы, друзи!".
5. Для примера ПолучитьСписокСотрудников делаем немного не так, как на картинке выше - а прямо в XML-коде запроса убираем знак вопроса и (опционально вместо него указываем, скажем, "петр") и жмём зелёный треугольник - как описано в
Таким образом, избегаем необходимости в платной версии - SoapUI Pro - как это ошибочно думал автор
LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.19.83/bin/wsap22.dll"
Видно, wsap22.dll принимает обращения от Апача и лезет в данные 1С, работая с ними так же, как пользователь через режим предприятия - а результат возвращает обратно Апачу.
Я-то думал поначалу, что Апач принимает обращение от броузера, затем обращается к запущенному 1С:Предприятие - и уже оно делает нужную работу. Оказалось, что нет.
Но стоит вырубить Апач на компе (для проверки) - как всё прекращается.
(215) prodines, апач по сути запускает клиента 1С. Без визуальной части, но клиента. Это всё описано .
В этой публикации описано то, что было слабо документировано.
Функция ПриветХлопцы()
ПолныйПуть = "C:\8.2\test.txt";
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.ДобавитьСтроку("НоваяСтрока");
ТекстДок.Записать(ПолныйПуть);
Возврат "Здоровеньки булы, друзи!"
КонецФункции
Эта функция не создаст текстовый файл. И не выдаст никаких сообщений об ошибках. Тихо-молча вернётся, но файл не создаст. В то же время, в обычной внешней обработке та же функция создаёт этот текстовый файл без проблем.
Релиз 1С 8.3.5.1517
Обращение к preved.1cws из браузера проходит нормально. Для проверки попробовал создать обработку с обращение к веб-сервису из 1С - работает нормально. Значит можно предположить сам веб-сервис запущен.
Знакомый, знающий javascript делал отладку. В строке 52 файла preved.js всегда xmlhttp.status = 0 а xmlhttp.responseXML всегда есть NULL.
При этом снифер HttpAnalyzerStdV7 показывает, что ответ прищёл и именно такой ответ, как я ожидаю.
База файловая, называется test, опубликована в c:\test\
httpd.conf
Это происходит ввиду устарелости статьи. Раньше так работало (8.1) - а теперь уже нет (8.2). Поэтому я минус статье и поставил.
Причина пустого ответа заключается в том, что preved.htm опубликовать в 8.2 нельзя (поправьте меня, если не прав), а раньше, видимо, было можно - на момент написания статьи. Раз preved.htm опубликовать нельзя, то приходится открывать его через файловый протокол, а не через http. Проще говоря, preved.htm открывается в броузере со ссылкой - а наш веб-сервер крутится на . В примере из данной статьи используется объект xmlhttp = new XMLHttpRequest();, а он не умеет работать в кросс-доменном режиме - это заблокировано по соображениям безопасности - т.е. он не может обмениваться с file:// на http:// - в этом случае он возвращает status=0 вместо status=200 - на что рассчитывает пример из статьи. Вот если бы удалось открыть (а для этого нужно было бы опубликовать preved.htm) - тогда возвращалась бы не пустота, а то, что нужно - но я так и не смог добиться открытия - сыпятся малопонятные ошибки.
Однако, в IE 9 у меня такое кросс-доменное взаимодействие всё-таки сработало - это единственный броузер, в котором пример из статьи сработал - ни в Mozilla Firefox, ни в Opera не получилось - тоже вернулась пустота.
Гадать, запущен веб-сервис, или нет, нет ни малейшей нужды. Откройте в любом броузере адрес вида:
- если увидите XML-файл - веб-сервис работает нормально. Если не увидите - то, скорее всего, увидите описание ошибки.
Кстати, почти именно эту строку и надо указать в JS-файле из статьи:
xmlhttp.open('POST', 'http://localhost/<Имя_базы_1С>/ws/preved.1cws', true, '<логин_1с_если есть>', '<пароль_1с_если есть>')
Читайте также мой ответ 211 - в комментариях к этой статье.
Спасибо, но я опять чего-то не доганяю.
Вызываю в браузере.
Ответ
{"#exception":"{}Exception","exception":{"clsid":"580392e6-ba49-4280-ac67-fcd6f2180121","reason":404,"descr":"HTTP: Not found\nОшибка при выполнении запроса GET к ресурсу /preved.htm:"}}
Почему, сможете. Я же говорю - в IE 9 это работает.
Либо через IE 9, либо так, как описано в моем комментарии № 211 к этой статье.
Это неправильно. Видно, Вы с Апачем вообще никогда дела не имели.
Неожиданно у меня получилось с Opera 28.0.
Я положил preved.htm в папку C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs - это и есть localhost (он же по умолчанию - и ввёл там ссылку: . Всё сработало - прямо как в статье. При этом веб-сервис опубликован в совсем другой папке. Раньше с Оперой почему-то не получалось - и вдруг получилось. В IE 9 так тоже работает. В Mozilla Firefox 28 пока не получается.
Т.е. в Опере 28:
Вот так получаем пустой ответ от сервера:
file:///C:/Program%20Files%20(x86)/Apache%20Software%20Foundation/Apache2.2/htdocs/preved.htm
из-за кросс-доменной блокировки безопасности.
А вот так - всё работает:
причём это один и тот же файл preved.htm.
У меня была задача переслать файл через SOAP c веб-клиента (SoapUI) на веб-сервер (1C). Переслать удалось довольно легко - в SoapUI оказался встроенный инструмент кодирования файлов в Base64 и вставки закодированного результата в узлы отправляемого XML.
Проблема возникла на веб-сервере 1С - он ни в какую не хотел записывать принятый файл на диск. Причём он вообще ничего не хотел записывать на диск.
Причина оказалась, как я думаю, в том, что это был серверный код. Видимо, на сервере вообще нельзя записать двоичные данные в файл - а можно только на клиенте.
Но выход был найден - двоичные данные на сервере были записаны во временное хранилище - в результате чего образовалась адрес-ссылка на записанные там данные - которую в свою очередь пришлось сохранить как элемент справочника. Далее на клиенте уже двоичные данные можно вытащить из временного хранилища и сохранить в файл на диске.
Это, кстати, типовая схема в некоторых стандартных конфигурациях 1С.
подскажите, в чём может быть дело?
Скачал, адаптировал скрипты под свои нужды.
А каким образом авторизоваться при вызове функции?
База серверная. Опубликована корректно, при вызове в браузере соответствующей строчки просит логин пароль и выводит XML. В отладке показывает ошибку функции send ошибка авторизации.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 16001
Создание 29.06.08 18:46
Обновление 27.09.09 00:00
Просмотры 171520
Загрузки 5964
Рейтинг
326
Комментарии 233
Код открыт Не указано
Рубрики WEB-интеграция
Кому Разработчик
Тип файла Архив с данными
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)