Имя: Пароль:
1C
1С v8
При обращении к http-сервису ошибка "Ошибка при вызове метода контекста (Выполнить)"
0 Vito
 
29.07.22
10:20
Сделал такую интеграцию:
1. на http-сервис приходит GET-запрос с id-документа на сайте
2. http-сервис запускает функцию в общем модуле и передает в нее id-документа
3. функция проверяет нет ли такого документа в 1С (запрос к БД) и если нет создает новый документ.

Проблема:
При отправке запроса  с id-документа из домашней сети сервера все работает как часы. Причем аутентификация не требуется: просто строка в браузере.
При отправке из любой внешней сети, например, с postman запрос проходит через http-сервис запускает функцию в общем модуле, но при попытке выполнить первый запрос в коде к БД выдает ошибку: "Ошибка при вызове метода контекста (Выполнить)". При этом в запросе происходит авторизация под пользователем у которого есть админские права + еще некоторые.

В чем может быть проблема? У меня ощущение, что это что-то связанное с  правами.
1 Мультук
 
гуру
29.07.22
10:24
(0)

Что показывает отладчик ?
2 Vito
 
29.07.22
10:33
(1) он у меня из hhtp-сервиса не запускается.... открывал тему, но ничего не помогло...
3 Волшебник
 
29.07.22
10:35
Посмотри журнал регистрации, там полный текст ошибки
4 Галахад
 
гуру
29.07.22
10:39
Логику в привилегированный модуль. :-)
5 Мультук
 
гуру
29.07.22
10:45
(0)

А покажи ка, плиз, текст функции.

У тебя сервис. И похоже ни логов, ни обработок ошибок...
6 Vito
 
29.07.22
10:47
(3) Смотрел, ничего там нет
(5) Код несколько сот строк. Проблtма в общем стала ясна. Дал все возможные права пользователю и все сработало! Теперь бы понять какие из прав действительно нужны?
(4) Попробую
7 Мультук
 
гуру
29.07.22
10:54
(6)

>>> Смотрел, ничего там нет
>>> У тебя сервис. И похоже ни логов, ни обработок ошибок...

После того, как всё работает, но через какое-то время ВДРУГ ломается в продакшене, обычно начинают прикручивать и логи и нормальные сообщения об ошибках.

P.S.
Нельзя впихнуть невпихуемое (c) DED
8 Vito
 
29.07.22
11:01
(4) - у меня расширение: привилегированный нельзя сделать - галка неактивна
(7) "После того, как всё работает, но через какое-то время ВДРУГ ломается в продакшене, обычно начинают прикручивать и логи и нормальные сообщения об ошибках." - знаю. Но я только учусь, с 1С 1,5 месяца.  Пока не разобрался как в моем случае делать логирование и обработки ошибок, но планирую это сделать позже в любом случае.

Как думаете, как понять какие все-таки права нужно выдать пользователю, чтобы не было избыточных прав?
9 arsik
 
гуру
29.07.22
11:09
(6) Добавь в запросах "РАЗРЕШЕННЫЕ". И сразу увидишь откуда ноги растут.
10 Мультук
 
гуру
29.07.22
11:14
(8)

1) Я бы не стал учиться сразу с расширений. В 1С и без них полно всякого непонятного для неофита (нюансы, ага)
2) Я бы не стал учиться, не имея доступа к отладчику. Сделал бы копию базы, скопировал бы сервис в конфигурацию и там проводил бесчеловечные эксперименты
3) Если учишься (это учебная база) - дай полные права пользователю и не мучайся. Напиши бумажку со словами "НЕЛЬЗЯ давать полные права!", приклей на монитор
И пообещай себе "потом сделать правильно".

Слона нужно кушать по частям
11 Vito
 
29.07.22
12:04
(9) - Спасибо попробую
(10) - Пока у меня тестовая база, в прод переведу через пару недель, сроки поджимают. Права, видимо, придется постепенно методом научного тыка чистить.

Возникла также очередная проблема с postmana  все проходит, а вот с моего сайта - нет, причем получаю ошибку 500. Хотя http-сервис работает и без вызова функции в общем модуле возвращает 200. Т.е. какая то ошибка в логическом модуле, нужно ее как-то посмотреть, но вот как не соображу.
12 Vito
 
29.07.22
22:08
Все получилось:
1. Заработала отладка, теперь точно знаю что она запускается в расширении от http запроса. Но вот пока не пойму как точно, методом слепомноготыка.
2. Когда отладчик заработал сразу увидел, что с сайта приходит в кодировке windows-1251, перекодировал и все ОК.
13 Волшебник
 
29.07.22
22:09
(12) Молодец!
Закон Брукера: Даже маленькая практика стоит большой теории.