|   |   | 
| 
 | Как поступить при долгом http сеансе? ↓Ø (Волшебник 01.08.2025 09:09) | ☑ | ||
|---|---|---|---|---|
| 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) Наверняка Вы накосячите в алгоритме, а исходный файл уже будет удалён     | |||
| 15
    
        program345 31.07.25✎ 09:56 | 
        (11) создал регистр сведений, в строковый реквизит неограниченной длины пишу xml. Или лучше в хранилище значения пулять?     | |||
| 16
    
        Волшебник 31.07.25✎ 10:00 | 
        (15) Лучше в хранилище значения со сжатием данных     | |||
| 17
    
        OldCondom 31.07.25✎ 10:06 | 
        Я бы файлы живые тоже оставлял параллельно. Хранение таких логов может выйти боком потом(забитый регистр/долго извлекать для анализа и т.д.) +файлы запишутся даже при отвалившейся транзакции.     | |||
| 18
    
        Мультук гуру 31.07.25✎ 10:20 | 
        (17) 
 1) Откуда транзакция в "httpОбработчик" ? 2) Нет файла. Есть СтрXML = Запрос.ПолучитьТелоКакСтроку(); 3) Это не столько регистр логов, скорее это регистр очереди 4) Автору никто не мешает СРАЗУ написать механизм, который будет автоочищать этот регистр автоматически или писать письма счастья в случае проблем | |||
| 19
    
        OldCondom 31.07.25✎ 10:23 | 
        (18) сам тс написал в (0) написал.
 Плюс работал в компании, где в регистре просто логи хранили и небольшие кусочки json. В итоге все встало таким раком, что пришлось изобретать велосипед на ЖР(чтобы перейти на файловое хранение). | |||
| 20
    
        program345 31.07.25✎ 13:06 | 
        (18) да, сразу чищу все записи регистра старше 2 недель. 
 	ЗапросОчисткаРС = Новый Запрос;
	ЗапросОчисткаРС.Текст = 
	"ВЫБРАТЬ
	|	ХранилищеXML.Период КАК Период,
	|	ХранилищеXML.ID КАК ID,
	|	ХранилищеXML.XML КАК XML,
	|	ХранилищеXML.НачалиОбрабатывать КАК НачалиОбрабатывать,
	|	ХранилищеXML.ДатаВремяНачалаОбработки КАК ДатаВремяНачалаОбработки,
	|	ХранилищеXML.УспешноОбработано КАК УспешноОбработано,
	|	ХранилищеXML.ОбщаяСумма КАК ОбщаяСумма,
	|	ХранилищеXML.Комментарий КАК Комментарий
	|ИЗ
	|	РегистрСведений.ХранилищеXML КАК ХранилищеXML
	|ГДЕ
	|	ХранилищеXML.Период < &Период";
	
	ЗапросОчисткаРС.УстановитьПараметр("Период",ТекущаяДата()-60*60*24*14);  	
	РезультатЗапроса = ЗапросОчисткаРС.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Запись = РегистрыСведений.ХранилищеXML.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(Запись, ВыборкаДетальныеЗаписи);
		Запись.Прочитать();
		Запись.Удалить();	
	КонецЦикла; | |||
| 21
    
        Мультук гуру 31.07.25✎ 13:15 | 
        (20) 
 ХранилищеXML Сейчас придёт Волшебник и скажет а) Почему у этого имени нет префикса б) Имя плохое А я скажу, что в) Если у регистра "ХранилищеXML" единственное измерение это ID, то зачем выбираются остальные поля г) А то что ID уникально в пределах 2-х недель или уникально "Период+ID" это как-то "обосновано" или "вроде всегда разные приходят" ? | |||
| 22
    
        Волшебник 31.07.25✎ 13:16 | 
        (21) имя плохое     | |||
| 23
    
        program345 31.07.25✎ 13:26 | 
        (21) 
 а+б) согласен, поменял. в) - выбираю все поля для функции ЗаполнитьЗначенияСвойств(Запись, ВыборкаДетальныеЗаписи); иначе она заполнит не все поля. г)если приходит с одинаковым id то игнорируется, в РС записывается только первый такой вызов. | |||
| 24
    
        OldCondom 31.07.25✎ 13:33 | 
        Прочитать() лишнее, запрос у бд уже был.
 И в попытку бы обернуть, а то потом дружно репу чесать : это как то задним числом прилетело, или регламент(геламент же надеюсь?) не отработал. | |||
| 25
    
        Волшебник 31.07.25✎ 14:27 | 
        (23) на что поменял?     | |||
| 26
    
        Мультук гуру 31.07.25✎ 14:38 | ||||
| 27
    
        Волшебник 31.07.25✎ 15:19 | 
        (26) 👍 ржака
 Ну вот Ваше мнение об авторе какое? Нам нужны такие ветки? Немножко туповато имхо | |||
| 28
    
        Мультук гуру 31.07.25✎ 15:37 | 
        (27) 
 Автор, имхо спокойно жил в 1С с 2014 года. А потом 04.03.2025 внезапно решил стать разработчиком. И внезапно возникла куча вопросов, вопросиков и просто непоняток. А работодатель готов платить только за решение вопрос, а за время на обучение нет. Вот и вот. P.S. {О себе} Вопросы технического характера "а как" на работе обсуждаем, только в рамках мозгового штурма. Иногда задаю вопрос "а какой командой процессора и по каким фазам луны ККТ выбивает чек" (с), но это чисто вопрос к профи, который на этом съел собаку и сам отвечаю на такие же вопросы. "Звонок к другу" использую. Но и я и друзья понимаем, что это скорее "разговор с котом", ибо порой донести суть проблемы очень сложно. Хотя иногда срабатывает :-) Из всех моих "не шутейных" тем на мисте я получил ожидаемый, адекватный ответ только про почту с русскими буквами. Вопрос решился, кстати так "Дорогие клиенты, пришлите нам нормальный адрес email на латинице" P.P.S. Мне 50 лет. Я конечно еще учусь. Я еще могу это делать. Но с каждым годом это все медленнее и печальнее. | |||
| 29
    
        Garykom гуру 31.07.25✎ 15:43 | 
        (0)  остается только сохранить файл, отправить подтверждение 200 отправителю и потом его обрабатывать или есть еще предложения? еще есть предложение сгенерить уникальный уид, сохранить с ним файл в очередь и отдать этот уид в ответ http-сервиса | |||
| 30
    
        Волшебник 31.07.25✎ 16:14 | 
        (28) Позволю себе не согласиться. По моему мнению, автор просто тупой бот, коллективный аккаунт, через который на мисту закидывают новые топики.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |