Коллеги, есть следующая проблема.

Есть сайт, написанный на nginx + thin (что это такое, я не знаю )) Есть удаленный сервер с 1С на SQL и поднятой на этой же машине IIS 7. Нужно с сайта посылать запросы в 1С, обрабатывать их и получать из 1С ответы.

Как лучше это сделать? Пока коллективный разум разработчиков родил мысль посылать запросы в IIS (как? На каком языке?) дальше IIS с помощью механизма web-запросов делает запрос к 1С, получает ответ, и отправляет ответ на сайт. Эта идея жизнеспособна? Или лучше как то по другому сделать?

И второй вопрос: попробовал сделать тестовый веб-сервис с простой процедурой (на входе строка, на выходе такая же строка с доп. комментарием). Сделал публикацию. 1С пишет, что "Публикация выполнена". В каталоге, куда выполняю публикацию, появляется файл "default.vrd". Кроме этого файла в каталоге ничего нет. Где-то прочитал, что в каталоге еще должен быть файл "web.config". Как я понял, в новых версиях 1С файл 1cws не создается, а генерируется автоматически системой.

Но при попытке открыть файл wsdl у меня веб браузер выдает ошибку.

Публикация выполняется в каталог: C:\inetpub\wwwroot\Kolibri

Имя Web-сервиса: test
Адрес Web-сервиса: ws1.1cws

Так как на IIS подняты еще и другие сайты (к теме не относящиеся), то тестовый сайт поднят на порту 8888.

Таким образом, строка для проверки у меня выглядит вот так: http://localhost:8888/Kolibri/ws/ws1.1cws?wsdl

При попытке открытия пишет, что: "Ошибка HTTP 404.0 - Not Found
Разыскиваемый вами ресурс был удален, было изменено его имя или он временно недоступен."

Я даже не очень понимаю, что тут не так и почему не работает. Прошу помощи.
---
Zafigarik, в объект метаданных XDTO-Пакеты. там можно создавать какие душе угодно типы
---
Zafigarik, чем типовой обмен не нравиться? Напишите скрипт обработки файлов из 1С и будет счастье. В сообщении не сказано, что может сайт делать. Может он ни принять, ни выдать ответ не может, о чем тогда разговаривать?
---
tolyan_ekb, с сайтом предполагается большое количество транзакций. Вариант с файлами не подходит - дисковая подсистема ляжет.

С сайта будет отправляться два вида запросов: регистрация учетных данных, и запрос различного вида аналитической отчетности. Сайт сейчас разрабатывается, поэтому как мы сделаем так и будет. Вопрос в том, как правильно сделать.

И про какой типовой обмен идет речь? Обмен данными XML чтоли?
---
Zafigarik, строка для проверки у меня выглядит вот так: http://localhost:8888/Kolibri/ws/ws1.1cws?wsdl
http://localhost:8888/Kolibri/ws/test?wsdl
---
jigourt, не помогло :((( Так тоже не работает.
---
Zafigarik, сопоставление обработчиков в IIS настроено?
---
Zafigarik, сопоставление обработчиков в IIS настроено?
(6) jigourt, а что такое "сопоставление обработчиков"? )))

(7) insurgut, понятно, что данная затея мне не по силам, иначе я не писал бы. Специалисты есть, проблема в том, что я хорошо знаю 1С, но не знаю ту часть которая касается web, а мои коллеги, разрабатывающие сайт, хорошо знают web и всякие сопутствующие технологии, но не знают 1С.

И получается как в том анекдоте: "Пуля вылетела, проблема на вашей стороне" :)

т.к localhost, то открываться будет только с сервера, иначе вместо localhost имя или ip сервера должен быть.

(8) dlink, это мне понятно, но у нас даже через localhost не получается.

Через веб-сервисы делают обмен с сайтом. Но это сложно-решаемая задача. Можно через обмен файлами.

(9) rommilk, а мне и нужен обмен с сайтом. Обмен файлами мне не подходит, предполагается большое количество запросов - дисковая подсистема ляжет.

(9) rommilk,
Но это сложно-решаемая задача.

аж бурю эмоций вызвало такое утверждение. что сложного то?

(10) jigourt, вот и я понимаю, что тут нет ничего сложного, для знающего человека. Нужно просто помочь найти точки соприкосновения, выработать концепцию обмена, хотя бы сделать тестовую процедуру. Об этом и прошу помощи. Я не прошу за меня написать весь обмен, это сами все сделаем, когда поймем как это все работает.
---
Zafigarik, SOAP
в теории, говоря простым языком, создается операция веб-сервиса с входящими параметрами, после чего код 1С обрабатывает их и возвращает некий ответ. как вызвать веб-сервис из вашего магазина тут вряд ли кто скажет. про сопоставление обработчиков и настройку веб-сервера ссылка. как только получите ссылку wsdl вот тогда и спрашивайте, до сих пор это настройка веб-сервера
---
Zafigarik, Я даже не очень понимаю, что тут не так и почему не работает. Прошу помощи.
Подозреваю, что вам эта затея - не нужна/не по силам, т.к. вы пришли с вопросом "Настроил сайт, а он почему-то не работает". Самое простое решение - ставьте Apache + PHP + MySQL + Битрикс - используйте типовой механизм обмена с базой 1С.

Для того, чтобы напрямую связать базу 1С с сайтом (или правильнее сайт с базой 1С) - необходимы достаточно глубокие познания ASP/CGI (ну либо Apache + PHP), также возможно потребуется изучать структуру SQL базы данных 1С, чтобы обращаться напрямую запросами к базе. Сомневаюсь, что здесь вы найдете какую-либо помощь, потому что нет тут универсального решения.

Имхо.
---
Банально, но
строка для проверки у меня выглядит вот так: http://localhost:8888/Kolibri/ws/ws1.1cws?wsdl
При попытке открытия пишет, что: "Ошибка HTTP 404.0 - Not Found

т.к localhost, то открываться будет только с сервера, иначе вместо localhost имя или ip сервера должен быть.
---
dlink, сталкивался с подобным, оказалось что не были настроены права + при получении WSDL-описания нужно аутентифицироваться в базе (когда делал работы с веб-сервисами 1С из .NET при получении WSDL нужно было вводить имя пользователя и пароль пользователя из базы).
---
YPermitin, 404 это не ошибка аутентификации
---
jigourt, упс, сори, не дочитал первое сообщение.
---
Через веб-сервисы делают обмен с сайтом. Но это сложно-решаемая задача. Можно через обмен файлами.
---
rommilk, Но это сложно-решаемая задача.
аж бурю эмоций вызвало такое утверждение. что сложного то?
---
на самом деле ничего лучше битрикса+ 1с еще не приумали... Штатное решение, рабочее
---
Удалось настроить получение wsdl описания, делаем вызов процедуры. Авторизация проходит, запись в журнале регистрации есть, но процедура не вызывается.

Вызов делается следующим образом:

http://localhost:8888#test:ReturnTestString

Правильно?

Тестовая процедура без параметров, просто вызов. В ней одна строка "ЗаписьЖурналаРегистрации("Тут был вызов")"
---
Zafigarik, Авторизация проходит, запись в журнале регистрации есть, но процедура не вызывается.
Тестовая процедура без параметров, просто вызов. В ней одна строка "ЗаписьЖурналаРегистрации("Тут был вызов")"
это как так?
---
jigourt, ну пока пытаюсь добиться просто вызова функции. В нее ничего не передается, она ничего не возвращает. Сигналом от том, что вызов функции произошел, будет запись в журнале регистрации.
---
Zafigarik, она ничего не возвращает.
если я не ошибаюсь, должна быть функция и она должна что-нибудь возвращать
---
jigourt, ну в реальной разработке конечно так. Но я пока тестирую.

Кстати, если в браузере зайти на "http://тутАЙПИ:8888#test:ReturnTestString" то у меня стартует webклиент 1С, проходит авторизацию и вылезает 1С окошко:

Не удалось перейти по ссылке test:ReturnTestString по причине: Неверный тип навигационной ссылки.

Разгадка по ходу где то рядом.
---
Zafigarik, дело не в реальности разработки. дело в том, что на сколько я знаю, понятие Процедура не поддерживается. должна быть именно Функция. а функция по умолчанию должна что-то возвращать. путь просто возвращает Истина и проверьте так
---
jigourt, с вызовом функции разобрался: я прав на функцию не дал. Теперь следующая проблема:

Без параметров функция вызывается и возвращает тестовую строку. Все работает. Если пытаемся передать в функцию параметр (строка) то работать перестает.

вызов делаем вот так:

```1c
    <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://1.1.1.1:8888"
    xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Body><tns:ReturnTestString><tns:inputString>test 1c 8.3</tns:inputString>
    </tns:ReturnTestString></env:Body></env:Envelope><tns:inputString>test 1c 8.3</tns:inputString>
```

Ответ вот такой:

```1c
    <h2>500 - Internal server error.</h2>
    <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
```

Вот WSDL описание:

WSDL описание

Понятно, что вместо 1.1.1.1 у нас стоит реальный IP. Что делаем не так?
---
Zafigarik, добавили ли вы этот параметр в операцию веб-сервиса, в метаданные? и второе, веб-сервисы чувствительны к регистру
---
jigourt, спасибо за подсказку про чувствительность регистра. Удалось передать нужные параметры.

Теперь следующая проблема: как вернуть структуру.

Как вернуть строку понятно, в самой функции пишу:

```1c
    Возврат СериализаторXDTO.ЗаписатьXDTO("нужный мне текст");
```

и в свойствах самой функции в поле "Тип возвращаемого значения" указываю "string (http://www.w3.org/2001/XMLSchema)"

Тут понятно. А как вернуть структуру?

Попробовал написать чтото типа:

```1c
    Возврат СериализаторXDTO.ЗаписатьXDTO(Новый Структура("status,name,code","Элемент записан","имя","код"));
```

не покатило. И что нужно указать в типе возвращаемого значения?

Смутно понимаю, что копать нужно в сторону XDTO, но куда конретно?
---
Zafigarik, в объект метаданных XDTO-Пакеты. там можно создавать какие душе угодно типы
---
jigourt, спасибо за помощь, все получилось!
Еще бы научится массив передавать в функцию и как из функции вернуть таблицу значений.
Постараюсь разобраться самостоятельно, если не выйдет, спрошу, ок?
---
Zafigarik, надо сделать 2 свойства, одно будет представлять из себя строку таблицы, т.е. там указать параметры, которые будут по сути колонками, а у другого один параметр тип которого будет та самая строка и максимальное количество указать -1. возвращая значение такого свойства и будет таблица. таким же образом можно передать массив
---
Zafigarik, Вызов делается следующим образом:

http://localhost:8888#test:ReturnTestString

Правильно?

а кто вызывает?
---
а кто вызывает?

Вот что коллега пишет:

есть плагин(gem по руби он рэйлсовски)
я его вчера проверил на морфее- нормлаьно работает
client = Savon.client(wsdl: 'http://www.morpher.ru/WebServices/Morpher.asmx?WSDL')
 resp = client.call(:propis_rub, message: { summa: 42.30 })
 resp.body
     => {:propis_rub_response=>{:propis_rub_result=>"Сорок два рубля 30 копеек" }

Вот как вызываем мы:

так же
client = Savon.client(wsdl: 'http://тутАЙПИ:8888/Kolibri/ws/test?wsdl', basic_auth: ["admin", "admin"])
client.call(:return_test_string)

возвращается 500 ошибка.
---
а вообще, дайте хотя бы wsdl посмотреть, а то так сидеть гадать что там у вас
---
Zafigarik, добавили ли вы этот параметр в операцию веб-сервиса, в метаданные? и второе, веб-сервисы чувствительны к регистру

в метаданные добавил, тип значения: string (http://www.w3.org/2001/XMLSchema)

а название параметра заметил, что с маленькой буквы в вызове, а у меня с большой. Щаз исправим и потестим.
---
Привет всем, нужна помощь по настройке обмена между 1с 3.0 и сайтом (написать/дописать обработку).
На сайте есть выгрузка в XML формате со всей небходимой информацией.

Не бесплатно конечно!