Имя: Пароль:
1C
1С v8
Веб-сервис не может создать элемент справочника
,
0 Aradel3d
 
29.08.17
18:06
Добрый вечер,
Есть две sql базы, разные конфигурации, в базе источнике запускают обращение к веб-сервису приемника и передают строковые данные. В приемнике нужно создавать элементы справочников. Все просто и безобидно. Но на строке НовМат = Справочники.Материалы.СоздатьЭлемент(); Происходит закрытие ws соединения и прекращение работы алгоритма, без сообщения о каких-либо ошибках.

1) Все алгоритмы заключены в попытку-исключение, исключение не вызывается.
2) Алгоритмы исполняются под полными правами, дело не в правах. Права проверил, пользователя проверил, админ, полные права.
3) Алгоритмы отрабатывают без ошибки если их запускать обработкой в пользовательском режиме.
4) Никаких подписок нет.
5) Никакой иной код не исполняется.
6) В режиме WS соединения в других видах справочников новый элемент создается как обычно.
7) Если в режиме отладки вычислить Справочники.Материалы.СоздатьЭлемент() или Справочники.Материалы.СоздатьГруппу() то зависает конфигуратор.

В базе запускалась обработка Тестирования и исправления, не помогло.

Очень странно, по идее даже если что-то пошло не так должно было бы отрабатывать Исключение и функция что-то бы возвращала. Но после прохождения строки Справочники.Материалы.СоздатьЭлемент() соединение просто рвется без ошибок. Ситуацию на месте поглядел еще один, отнюдь не глупый человек, тоже в первый раз такое видит.

Может кто сталкивался с такими приколами? Единственное, что приходит на ум - база приемник поврежденная. Потому что кроме того что это ws соединение никаких иных отличий нет. И даже еслиб это влияло, почему же другие справочники адекватно обрабатывают СоздатьЭлемент()
1 lodger
 
29.08.17
18:08
либо менеджер справочника не может породиться, т.к. модуль для WS-соединения не скомпилирован, либо хз шо там как...
2 Господин ПЖ
 
29.08.17
18:12
курочить справочник можно?

закоменить все существующие функции в менеджере и объекте

попробовать вызвать
3 palsergeich
 
29.08.17
18:14
Смотрите подписки на события и события объекта, скорее всего где то там чудо.
Если быть точнее, то WS соединение исполняется в контексте "Внешнее Соединение", вероятнее всего в модуле обработчика одной из подписок на событие данный контекст компиляции отключен.
4 Господин ПЖ
 
29.08.17
18:14
журнал регистрации, тж - молчат?
5 rudnitskij
 
29.08.17
18:14
может в обработке заполнения чего-то странное...и свойства справочника этого посмотрите
6 palsergeich
 
29.08.17
18:14
2 варианта решения или у этого модуля ставить флаг "Вызов сервера" или "внешнее соединение"
7 Господин ПЖ
 
29.08.17
18:16
проверка модулей для внешнего соединения - делалась?
8 Happy Bear
 
29.08.17
18:17
Может РЛС какой срабатывает и попробовать создание перекинуть в привелегированный модуль?
9 palsergeich
 
29.08.17
18:17
Как показала практика ставится вызов сервера на эти модули (обработчики подписок на события) и все ок
10 breezee
 
29.08.17
19:30
(0) Так отладка в руки, поставьте отладку для веб-сервисов в приемнике и смотрите, что там происходит
11 Aradel3d
 
29.08.17
20:05
(10) Дело в том, что я как раз через отладку и гляжу как развиваются события. Все работает до момента .СоздатьЭлемент(), далее ничего не происходит, просто закрывается соединение.
(8) Нет, там простая древняя база, ничего такого нет.
(4) В журнале регистрации только соединение, аутентификация и отключение.
(3) в этой маленькой базе всего одна подписка на событие)) и она касается постороннего документа т.е. не влияет.
(2) Можно, завтра попробую. Но я отслеживал, что происходит при выполнении обработки из пользовательского режима, алгоритм в модуль справочника не заходит, там процедура при установке нового кода и все.
12 breezee
 
29.08.17
20:46
(11) А в попытке создание эелемента? А если точки останова в модуле объекта "перез записью поставить"?
13 roman52
 
29.08.17
21:06
похоже, что модуль справочника не может скомпилироваться во внешнем соединении, (7) должно показать проблемные места

так же может валиться если есть обращения к каким-то доступным на клиенте глобальным переменным (выскочит при проверке модуля для сервера)
14 Aradel3d
 
30.08.17
09:10
(13) Я закомментировал все внутри модуля справочника, не помогло. А что вкладывается в понятие "проверка модулей для внешнего соединения"? Посмотреть галку "Внешнее соединение"? При исполнении алгоритма задействуются модули с непосредственно его кодом и простановкой текущего пользователя, далее только справочник.
15 Timon1405
 
30.08.17
09:16
(14) сервис- параметры- модули -проверка - соотв. галка
16 Aradel3d
 
30.08.17
09:28
Разобрался, да дело было действительно в модуле справочника. Хоть алгоритм туда и не заходит, но после того как я сделал синтаксическую проверку модуля для внешнего соединения и убрал там строку с состоянием все заработало.

Спасибо за советы!
17 Aradel3d
 
30.08.17
09:32
Оказалось не важно идет ли непосредственно обращение к процедуре или функции, а просто наличие клиентской функции в модуле.
18 MM
 
30.08.17
09:59
(16) Он не мог туда зайти, чтобы войти в модуль его надо скомпилировать, а в веб-сервис соединении это не удавалось сделать.