Имя: Пароль:
1C
1С v8
Ошибка при создании документа в HTTP-сервисе.
, ,
0 Lex_Liven
 
21.04.20
13:27
Всем доброго времени суток и года.
Пишу HTTP-сервис, который должен создавать документы.
В нем пишу такую строку

Объект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

И именно на этой строке сервис падает, возвращая HTTP-ответ 500.

Конфигурация: Бухгалтерия для Кыргызстана, редакция 1.6, разработка для Кыргызстана: "1С-Като Экономикс" при методической поддержке Палаты налоговых консультантов, 2007-2014 (1.6.69.1)

Я понимаю, что система не может инициализировать какой-то модуль, но не понимаю, какой.
Я уже исправил МодульСеанса и МодульОбъекта. Отладка доходит до конца МодуляОбъекта - и на этом ошибка. Подписок на создание документа нет.
1 Lex_Liven
 
21.04.20
13:27
Вопрос в принципе: Какие еще модули инициализируются в рамках сеанса HTTP-сервиса и в каком порядке?
2 Lex_Liven
 
21.04.20
15:45
Ап.
3 AneJIbcuH
 
21.04.20
16:10
(0) Вообще отладка существует, она ничего не говорит ?
И ещё, я бы не стал использовать переменную с именем "Объект"
4 Lex_Liven
 
21.04.20
16:13
(3) Отладка описана в последней строке стартового поста.
Она проходит по операторам инициализации МодуляОбъекта (не заглядывая в функции и процедуры) - до конца. И сеанс падает. По F11 курсор не переходит никуда.
5 Lex_Liven
 
21.04.20
16:15
Отладка сервера включена, если вы про нее.
6 Lex_Liven
 
21.04.20
16:18
(3) Насчет переменной "Объект" - этот модуль проверен в другой конфигурации, внутри обработчика HTTP-сервиса нет других «Объектов».
До этой строки по отладке переменная - вполне логичное «Неопределено».
7 AneJIbcuH
 
21.04.20
16:21
(5) а если без http-сервиса (т.е. внешней обработкой) запустить ваш код, будет падать или нет?
8 Lex_Liven
 
21.04.20
16:25
Внешняя обработка запускается в Обычном приложении.
Да, в нем отрабатывает нормально.
9 Lex_Liven
 
21.04.20
16:25
Я понимаю, что падает какой-то модуль, который содержит ошибку при запуске его на сервере, а не в клиенте.
Но как найти, что это за модуль?
10 Lex_Liven
 
21.04.20
17:53
Эээ нет, повиси еще на первой странице...
11 VKS
 
21.04.20
17:57
Попробуйте установить привилегированный режим перед созданием
12 Lex_Liven
 
21.04.20
18:01
(11) Пробовал. Дело не в правах. У пользователя, под которым стартует сеанс - полные права без защиты от опасных действий.
13 Lex_Liven
 
21.04.20
18:04
Решил кардинально.
Я запустил проверку ВСЕХ модулей в режиме запуска Сервер - и отредактировал ВСЕ вызовы клиентских процедур.
Завернул в #Если Клиент - все Сообщения, Предупреждения и иже с ними.
Обращения к переменным из модуля Обычного приложения заменил на вызов функций, которые сами определяют, в клиенте они стартанули или на сервере.
14 Lex_Liven
 
21.04.20
18:08
В процессе не тестировал, но ощущение такое, что при попытка создать документ - 1С пытается инициализировать вообще все общие модули в текущем сеансе, будь он серверный или клиентский.
15 sitex
 
naïve
21.04.20
18:36
Если не знаешь где валится , комментируй свой код и постепенно раскомментируй через отладчик смотри.
16 Lex_Liven
 
21.04.20
18:38
(15) Вы странный. Какой код я должен комментировать, если в обработчике сервиса всего одна строка, на которой он тут же валится?

Я уже нашел ответ, не нужно натягивать сову на глобус.
17 sitex
 
naïve
21.04.20
18:40
(16) Ну да я странный , общаясь в топике сам - собой.
18 Lex_Liven
 
21.04.20
18:43
(17) Апельсин, VKS, простите, но вас не существует... По версии sitex.
19 ДенисЧ
 
21.04.20
18:55
Журнал регистрации молчит, как Зоя Космодемьянская?
20 hhhh
 
21.04.20
19:04
(18) но что же такое у вас написано в конце модуля объекта? Наверняка вызов какой-то процедуры.

и то что (13) надо не режим Сервер, а проверить режим Внешнее соединение.
21 Lex_Liven
 
21.04.20
19:30
(19) ЖР даже начало сеанса для сервиса не регистрирует.
(20) Там я специально добавлял строку: ДляОтладки = Истина;
И эта строка выполнялась, а после этого сеанс падал.
(20)(13) А вот фиг. МодульВнешнегоСоединения для сеанса HTTP-сервиса не выполняется. Я сейчас погоняю и определю, как оно считается 1С-кой.
22 sevod
 
21.04.20
19:33
(0) "Отладка доходит до конца МодуляОбъекта - и на этом ошибка."
До МодуляОбъекта чего? "РеализацияТоваровУслуг"? Если да, то косяк не в http и ты правильно мыслишь, что что то не инициализируется. При создании "ручками" что то заполняется, тебе это надо будет заполнять программно. Или найти тот кусок кода который заполняет. Вряд ли тебе кто то тут поможет. Ищи.
(8) вот это очень смущает. Вызови из http эту обработку, пусть создаст через нее. Не стартует из http? Подправь :)
Код вынеси в отдельный модуль. И сделай две точки запуска, с http и кнопочкой.
23 Lex_Liven
 
21.04.20
19:35
(21)
        #Если Клиент Тогда
            Клиент = Истина;
        #ИначеЕсли НаКлиенте Тогда
            Клиент = Истина;
        #ИначеЕсли МобильноеПриложениеКлиент  Тогда
            Клиент = Истина;
        #ИначеЕсли МобильноеПриложениеСервер  Тогда
            Клиент = Истина;
        #ИначеЕсли МобильныйКлиент  Тогда
            Клиент = Истина;
        #ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда
            Клиент = Истина;
        #ИначеЕсли ТолстыйКлиентУправляемоеПриложение  Тогда
            Клиент = Истина;
        #ИначеЕсли Сервер  Тогда
            Клиент = Истина;
        #ИначеЕсли ВнешнееСоединение  Тогда
            Клиент = Истина;
        #ИначеЕсли ТонкийКлиент  Тогда
            Клиент = Истина;
        #ИначеЕсли ВебКлиент   Тогда
            Клиент = Истина;
        #КонецЕсли        

И мы по отладке оказались в области «Если Сервер».
То есть HTTP-сервис - выполняется исключительно на сервере, а не во внешнем соединении.
24 Lex_Liven
 
21.04.20
19:36
(22) Да, РеализацияТоваровУслуг.

Ёшкин код, выше почитать не судьба? Я нашел ответ! См. (13)
25 sevod
 
21.04.20
19:41
(24) А теперь сам свой (13) прочитай и найди там где ты написал что проблема решена.
26 Lex_Liven
 
21.04.20
19:43
(25) Да как бы в первой строке... «Решил кардинально».
27 sevod
 
21.04.20
19:47
(26)а да, это же форум телепатов. Ты что ты проблему решил кардинально, а не начать делать что то кардинально, это уже сами могли догадаться.
28 Lex_Liven
 
21.04.20
19:53
(27) Ну если ты прочитал как «Решил исправить кардинально», то конечно...
Но предполагалось как «Решил проблему кардинально».

Короче. Как тему закрыть? Во флуд какой-то скатывается.

Ответ найден: (13)(14)
HTTP-сервис запускается на Сервере.
При создании объекта Документ происходит инициализация всех ОбщихМодулей с галочкой «Сервер», и если в них есть код, который некорректен НаСервере - его нужно убрать, исправить или завернуть чисто на клиент.
Если этого не сделать - сервис падает и возвращает ошибку 500.

Точка.
29 hhhh
 
21.04.20
20:01
(28) ну не всех общих модулей, это ты погорячился.
30 Lex_Liven
 
21.04.20
20:02
(29) Всех, у кого галка Сервер.
31 hhhh
 
21.04.20
20:03
(30) это тебе кажется.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн