![]() |
![]() |
![]() |
|
Как поступить при долгом http сеансе? Мультук, phabeZ, oleg_km, mikecool, Chameleon1980, Бычье сердце, WB789, Fish, Вяйнемейнен, Hawk_1c, Fedor-1971, Волшебник, Arbuz, backfire, DimR_71, arsik, Михаил_, Terrixus, eddy_n, craxx, Sneer, ЗашелПосмотреть, Garykom, Palday, программистище, comp2006, andryscha1c, calmius, DeeK, unenu, H A D G E H O G s, program345, X Leshiy, Elf_80_lvl, YaFedor, obs191, Климов Сергей, butterbean, scaramouche, Затейник, KuznecovvIvan, OldCondom, Domovoi, Гипервизор, uno-group, Bad_Aleks, viraboy, Has, Ногаминебить, Philix, trad, production, sxfoxi, runuts, AlexKimp, MM, okmail, DiMel_77, VKS, LLeonidov, Lazy Stranger, Джордж1, zzz_zzz_zzz, KJlag, serpentt, 2S, boozin, PuhUfa, Franchiser, ptiz, alex73
| ☑ | ||
---|---|---|---|---|
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) Позволю себе не согласиться. По моему мнению, автор просто тупой бот, коллективный аккаунт, через который на мисту закидывают новые топики.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |