Имя: Пароль:
1C
1С v8
Не вызывается процедура (операция) веб-сервиса
0 Deryni
 
31.10.13
14:56
Добрый день.
Есть веб-сервис, созданный в 1С, который давно и успешно работает. В нём порядка 12 операций. Вначале операции носили вменяемые имена типа GerPrices и так далее. Последнее время операции назывались так: ws<НомерОперации>. Так сделано по просьбе веб-программиста.
Были добавлены операции ws118 и ws119. Они успешно работают.
Добавил операции ws120 и ws121. Не работает ни та ни другая. Причём в отладчике даже не входит в них. Отладчик работает нормально, в остальные - входит.
В операцию параметров не передаётся. Там уже есть другие операции, которые работают без параметров. Работают успешно.
Попробовал текст из ws120 перенести в ws118. Работает. В смысле при вызове ws118 отрабатывает так, как должна работать ws120.

Попробовал переименовать ws120 в GetEI. Не работает. Попробовал переместить в дереве конфигурации выше ws118. Не работает.

При этом при проверке веб-сервиса через
<имя компьютера>/<имя публикации>/ws/<имя сервиса>.1cws?wsdl всё отображается.
Выглядит это так:

<operation name="ws118">
<soap12bind:operation style="document" soapAction="https://localhost#WebXChange:ws118"/>;
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
<operation name="ws119">
<soap12bind:operation style="document" soapAction="https://localhost#WebXChange:ws119"/>;
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
<operation name="ws120">
<soap12bind:operation style="document" soapAction="https://localhost#WebXChange:ws120"/>;
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
1 Fragster
 
модератор
31.10.13
15:00
а вызов не с помощью веб программиста, а из 1с работает?
2 Deryni
 
31.10.13
15:05
(1) ну я не проверял. Это ж отдельно писать нужно. Я текст у веб-программиста только что проверил. Операции 119 и 120 идентичны. Разница только в названии. Ошибиться там просто негде.
Вот пример.

$newurl = "http://имясервера/имясервиса/ws/rest.1cws?wsdl";;
    ini_set("soap.wsdl_cache_enabled", "0");
    function SoapConnect($url){
            $login = "какой-то логин";
            $passw = "правильный пароль";
            $client = new SoapClient($url, array('login' => $login, 'password' => $passw));
    return $client;
    }
    $client = SoapConnect($url);
    $result = $client->ws119();
    echo $result->return;

    $client = SoapConnect($url);
    $result = $client->ws120();
    echo $result->return;
3 Смотрящий от 1С
 
31.10.13
15:07
(0) контекст исполнения сравнивал? НаСеврере НаКлиенте ?
4 Deryni
 
31.10.13
15:13
(3) Какой может быть контекст здесь? У меня ни в одной операции не указывается &Сервер или &Клиент. И насколько я помню, веб-сервисы всегда исполняются на сервере.
Могу выложить определения функций в модуле.
5 Deryni
 
31.10.13
15:27
Всё. Вопрос решился. Проблема была в правах. Гадское хранилище конфигурации. Привык, что обычно у полных прав права ставятся автоматически.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший