Имя: Пароль:
1C
1С v8
Запуск фонового задания при записи документа
0 ДНН
 
18.11.20
15:39
Какие могут быть проблемы, если запускать фоновое задание при записи документа? При записи документа нужно отправить http запрос, чтобы не выполнять это в транзакции записи вынес в фоновое задание. Есть ли смысл делать через промежуточную запись в регистр сведений, а потом регламентным заданием перебирать регистр? Запрос нужно отправить как можно быстрее.
1 zippygrill
 
18.11.20
15:47
план обмена не предлагать?
2 ДНН
 
18.11.20
15:49
(1) вопрос не выборе регистр сведений или план обмена, а в выборе отправлять http запрос сразу из обработчика ПриЗаписи через ФоновыеЗадания.Выполнить() или через промежуточную запись (хоть в регистр, хоть в план обмена)
3 sergey yevsenya
 
18.11.20
15:51
через запись. хз какая там ошибка произойдет при отправке
4 zippygrill
 
18.11.20
15:51
ну в принципе если это в фоне будет происходить, то мне кажется норм. Пользователь этого не заметит.
5 ДНН
 
18.11.20
15:52
(3) ошибка не должна повлиять на запись, отправка запроса в любом случае в фоновом задании будет
6 H A D G E H O G s
 
18.11.20
15:53
Норм, чебынет.
Вся типовая кишит эти мдацкими фоновыми и норм.
7 ДенисЧ
 
18.11.20
15:53
Отправляй через фоновое.
В приЗаписи вообще что-то, связанное с внешними ресурсами - канделяброопасно
8 H A D G E H O G s
 
18.11.20
15:54
Сделай только

Если ОбщегоНазначенияИлиКактотам.РежимОтладки() Тогда
Выполнитьнефоново()
Иначе
Фоново();
КонецЕсли;

молодая поросль тебе спасибо скажет
9 sergey yevsenya
 
18.11.20
15:54
(5) на запись не повлияет, но в случае ошибки ты не сможешь повторить отправку и вообще отследить, что была ошибка
10 ДенисЧ
 
18.11.20
16:02
(8) Извращенец... ДлительныеОперации.ВыполнитьПроцедуру() и всё.
11 mistеr
 
18.11.20
16:16
(0) Все зависит от конкретного значения "как можно быстрее". Если прям пипец как нужно, и терять эти сообшения нельзя, то поднять рядом прокси с очередью.
12 Armando
 
19.11.20
00:24
13 Cyberhawk
 
19.11.20
00:35
"нужно отправить как можно быстрее" // Если гарантия выполнения не нужна, то пожалуйста.
Иначе - через запись в регистр-очередь или регистрацию на узле (внутри транзакции).
14 Cthulhu
 
19.11.20
00:41
Решал аналогичную задачу для бесшовной интеграции упп с до. при записи документа надо было отправлять в до через евонный веб-сервис (в зависимости от установленных значений спец.реквизитов) либо создание нового внутр.документа, либо поиск бизнес-процесса для уже созданного внутр.документа и выполнение в не каких-то задач. тоже без помещения в транзакцию - т.к. выполняется не так быстро, результат возможен и неудачный - тогда повторить просто, и т.п.
решал через запись очереди в независимый регистр сведений (с документом в измерении). в документе при надобе проверяется наличие задания по этому документу в очереди, его предварительное стирание при надобе, и т.д.
ну и регламентное задание с фоновым процессом который лопатит очередь и загоняет в до через евонный веб-сервис - синхронно, и если успех - то стирает очередную запись из рс, если ошибка - пишет в эту запись рс в реквизит (который можно при надобе диагностировать - в самом документе так и делается)...
взлетело, работает, все довольны.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший