Имя: Пароль:
1C
1С v8
Apache + Linux + 1C + oData - не работают команды Post/Unpost
0 абзац
 
29.03.19
12:06
Доброго дня всем.
Имею Apache 2.4 на Centos 7, настроен для работы с сервером 1С (на win/lin - неважно, ситуация одинакова) по протоколу oData. Все работает (добавление/изменение и т.д.), кроме одного - проведение/распроведение документов через oData при помощи команд Post/Unpost не пашет. Ответ: HTTP статус 500,
<m:code>-1</m:code>
<m:message>Error running processor - 'ОбработкаУдаленияПроведения'</m:message>

Если работать через Apache, установленный на Windows, все отрабатывает корректно - документы проводятся/отменяются. Проблема только с апачем на Linux. Конфиги апача почти дефолтные, с изменениями для 1С. Пробовал версии 1С 8.3.12 и 8.3.14 - одинаково.
Кто-нибудь сталкивался с подобным? Куда копать?
1 zehn
 
29.03.19
12:10
В логи/журнал регистрации/технологический журнал. Это же так естественно, не?
2 bolero
 
29.03.19
14:11
(0) OData работает с правами того пользователя, логин которого ты указал.

Если у этого пользователя не хватает прав на отмену проведения (а у администратора их может тоже не хватить), то и OData не отработает.

А вот сообщение с конкретной ошибкой можно посмотреть, зайдя этим пользователем в предприятие и попытавшись выполнить ту же самую операцию (отменить проведение конкретного документа).

Предполагаю, что ты разными пользователями ходишь через один и другой апач.
3 zehn
 
29.03.19
14:26
(2) Ты хочешь сказать, что 1Сная реализация OData при нарушении прав вместо 403 выбрасывает 500?
4 Сияющий в темноте
 
29.03.19
15:24
403 логично кидать,если пользователь не авторизован,а если авторизован,но метод 1с сказал,что не выйдет,то ошибка 500,т.к.веб сервер в нутро 1с не лезет.
5 Вафель
 
29.03.19
15:26
(3) при любых ошибках кода 1с бросает 500
6 zehn
 
29.03.19
15:51
(5) При развале кода/компилцяии - да. А вот при нарушении прав надо уточнить, потому как ошибка-то клиентская.

Впрочем, это все равно не случай ТС. При нехватке прав, согласно https://its.1c.ru/db/v838doc#bookmark:dev:TI000001367 в <m:code> должен был прилететь код 20.

Так что, таки ТС все равно придется читать логи.
7 bolero
 
29.03.19
16:07
(2) Еще мне там в соседнем треде подсказывали, что при работе апача под виндой он может получить авторизацию операционной системы.

Т.е. типа не важно, какой логин вводишь, все равно от своего работать будет.

Проверить утверждение не могу, нет винды. Под линуксом такого в принципе нет.

(3) Я считаю, 500 в этом случае бросать корректно. Не давать подробного сообщения об ошибке - тоже корректно, оно в ЖР должно быть.
8 Вафель
 
29.03.19
16:15
(6)  ну все верно. код возврата хттп - 500, код ответа - 20
9 абзац
 
29.03.19
16:24
(1) Логи апача смотрел конечно, не помогло (или не увидел). Различия между апачем на винде, где все ОК, и линуксовом с ошибкой, в одной строке:
на винде : Response sent with status 200, headers:
на линуксе: Response sent with status 500, headers:
До этого все одинаково.

В ЖР при ошибке 3 малоинформативных строки: "Сеанс. Начало", "Сеанс. Аутентификация", "Сеанс. Завершение". Без подробностей.

(2) Вряд ли дело в правах - пользователь с полными правами, один и тот же в обоих случаях, при входе под ним в 1С все проводится/распроводится.

(7) Авторизация ОС тут вряд ли поможет - сервер 1С на другом хосте, доменной авторизации на нем нет.
10 zehn
 
29.03.19
16:36
(8) Здесь как раз правильней бросать 403.
401 для совсем неавторизованного, 403 при отсутствии прав на ресурс. Потому как это клиентская ошибка, которая исправляется сменой пользователя, а не "починкой" сервера. REST бестпрактикс и все такое. Но 1Сники, видимо, схалявили.

(9) ТЖ запусти. Там скорей всего какая-нибудь ошибка компиляции/назначения обработчиков и т.п., которая выплывает под линуксом/пользователем и наверх пробиться не может.
11 абзац
 
29.03.19
16:40
(10) Да, вечером включу полный ТЖ и попробую собрать больше информации.