Имя: Пароль:
1C
 
Как поступить при долгом 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) Наверняка Вы накосячите в алгоритме, а исходный файл уже будет удалён
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн