![]() |
![]() |
![]() |
|
Как поступить при долгом http сеансе? | ☑ | ||
---|---|---|---|---|
0
program345
29.07.25
✎
13:39
|
Привет! Мне по http cервису прилетает xml на 3 мегабайта в теле, и в 1с формирую множество документов в транзакции, отправитель просит отправить ему подтверждение 200 о получении и дальше обрабатывать этот файл чтобы ему не висеть в сеансе http час. Если сделаю возврат то потеряю доступ к файлу, остается только сохранить файл, отправить подтверждение 200 отправителю и потом его обрабатывать или есть еще предложения?
Функция httpОбработчик(Запрос) Экспорт ЧтениеXML = Новый ЧтениеXML; СтрXML = Запрос.ПолучитьТелоКакСтроку(); ЧтениеXML.УстановитьСтроку(СтрXML); ЭлементыXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); //обычно тут формирую кипу документов Результат = Новый HTTPСервисОтвет(200) Возврат Результат; КонецФункции; |
|||
1
mikecool
29.07.25
✎
13:42
|
тебе разрешение выписать? именно так и надо делать
|
|||
2
mikecool
29.07.25
✎
13:42
|
про очереди слышал?
|
|||
3
Волшебник
29.07.25
✎
13:43
|
httpОбработчик - плохое имя обработчика
|
|||
4
Волшебник
29.07.25
✎
13:51
|
(0) В ответ надо выдать номер задачи, по которому вызывающая сторона сможет уточнить статус обработки и получить итог с расшифровкой по элементам.
|
|||
5
Волшебник
29.07.25
✎
13:53
|
(0) Можно запустить фоновое задание и далее сразу вернуть ответ 200 и ID задания. При завершении фонового задания результат положить в регистр сведений. Другой веб-сервис по ID задания ищет его среди запущенных или в регистре сведений.
|
|||
6
program345
29.07.25
✎
13:57
|
(2) не, не слыхал.
|
|||
7
mikecool
29.07.25
✎
14:24
|
предложение есть - сделай, чтобы твой код отработал за доли секунды и отправь ответ 200
|
|||
8
program345
29.07.25
✎
14:37
|
изначально хотел асинхронно выполнить, но потом вижу что Асинх
Модификатор применим только к процедуре, выполняемой на клиенте. А я на сервере. |
|||
9
Волшебник
29.07.25
✎
14:39
|
(8) Запускайте фоновое задание, оно асинхронное
|
|||
10
Бычье сердце
29.07.25
✎
14:48
|
(0)
"остается только сохранить файл, отправить подтверждение 200" Лучше тут ничего не придумать. Складывайте файлы в отдельный каталог, а дальше регламентом загружайте документы из этого каталога. |
|||
11
timurhv
29.07.25
✎
14:48
|
Фоновые не гарантируют запись объектов. Службу сервера 1С могут в момент транзакции остановить для обновления платформы или еще чего.
Пишите в регистр сведений, потом разбирайте. Можете оставлять записи в течение 7 дней для разбора инцидентов, старше - удалять. |
|||
12
Бычье сердце
29.07.25
✎
14:50
|
(10)
+ Подойдет даже, если прилетает множество файлов |
|||
13
program345
29.07.25
✎
15:25
|
(11) а разбирать из регистра то все равно регламентным придется? или я вас не понял.
Если я буду считывать файл из каталога регламентным заданием, в транзакции записывать документы и после транзакции Удалять его если нет ошибок какие тогда проблемы могут случиться если остановят Службу сервера 1С? |
|||
14
Волшебник
29.07.25
✎
15:40
|
(13) Наверняка Вы накосячите в алгоритме, а исходный файл уже будет удалён
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |