|
Ошибка при выполнении подписки на события | ☑ | ||
---|---|---|---|---|
0
Leo_Lito
10.05.23
✎
10:05
|
Создал подписку на события при записи для выгрузки новых стран в справочнике страны мира. При добавлении из классификатора новой страны всплывает ошибка:
Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:по причине: Ошибка SDBL:Открытых транзакций нет. Выгрузки не происходит. После перезапуска предприятия и повторения действий возникает такая же ошибка, но при этом предыдущая страна выгружается. В чем может быть проблема? |
|||
1
Donkey_hot
10.05.23
✎
10:08
|
(0) Страны мира - не такой уж динамично изменяющийся справочник. Почему бы не авторегистрацией?
|
|||
2
Leo_Lito
10.05.23
✎
11:54
|
(1) Я выбрал его случайно для отладки алгоритма. Я планирую вызывать подпиской на событие при записи процедуру, в которой работаю с обработкой Универсальный обмен данными в формате XML. Через регламентное задание все работает, а вот через подписку возникает ошибка, причину которой я не могу понять
|
|||
3
Leo_Lito
10.05.23
✎
11:57
|
(1) В обработке Универсальный обмен предусматривается авторегистрация изменений и работа с планами обмена, это я тоже использую. Но мою процедуру же нужно как-то вызывать. И, как я понимаю, тут два варианта: подписка/регламентное
|
|||
4
RomanYS
10.05.23
✎
12:00
|
Идея выгружать что-то в открытой транзакции - так себе
|
|||
5
Leo_Lito
10.05.23
✎
12:01
|
(4) А в чем проблема? Подскажите в какую сторону смотреть
|
|||
6
Мультук
10.05.23
✎
12:04
|
(5)
В сторону учебников, ИТС, курсов. P.S. Если пользователь обработкой поменяет 40 000 записей у вас 40 000 раз вызовется универсальный обмен ? |
|||
7
RomanYS
10.05.23
✎
12:04
|
(5) Проблема в том, что общение с внешними системами (даже локальной файловой системой) может быть медленным и приводить к ошибкам... и это порушит транзакцию с данными.
|
|||
8
Leo_Lito
10.05.23
✎
12:06
|
(6) Вариант с обработкой не предусматривался, т.к. маловероятен
|
|||
9
Leo_Lito
10.05.23
✎
12:12
|
(7) Это можно как-то проверить или исправить?
|
|||
10
Мультук
10.05.23
✎
12:16
|
(9)
Чем не устраивает типовой механизм: - регистрация нужных ссылок в плане обмена "через подписку/через авторегистрацию" - выгрузка регламентным заданием по расписанию ? |
|||
11
Leo_Lito
10.05.23
✎
12:24
|
(10) Это уже реализовал. Пробую другой подход
|
|||
12
RomanYS
10.05.23
✎
12:27
|
(9) журнал регистрации, отладчик...
(11) этот путь неправильный в общем случае |
|||
13
Leo_Lito
10.05.23
✎
12:29
|
(12) Так регламентное задание работает. Почему путь неправильный? Напишите, пожалуйста, подробнее
|
|||
14
RomanYS
10.05.23
✎
12:32
|
(13) так и оставь на регламентом задании. Почему неправильно наружу лезть в (7) написал.
Может ты в подписке умудрился зациклить запись? |
|||
15
Leo_Lito
10.05.23
✎
12:41
|
(14) Идет спор: что из этого лучше. Сделать подписку, чтобы не тратить ресурсы регламентным заданием. Но с подпиской возникают такие вопросы.
|
|||
16
Мультук
10.05.23
✎
12:46
|
(15)
А в подписке расход ресурсов на вызов "Универсальный обмен" ради выгрузки одного элемента "по акции идёт со скидкой" ? Может уже стоит показать код подписки в котором идёт работа с "Универсальный обмен" ? |
|||
17
Leo_Lito
10.05.23
✎
12:53
|
(16)
Процедура ВыгрузкаВЕрпСтраныМира() Экспорт Узел = ПланыОбмена.ВыгрузкаВЕрпСтраныМира.НайтиПоКоду("ЕРП"); Выборка = ПланыОбмена.ВыбратьИзменения(Узел, Узел.НомерОтправленного); Если Выборка.Следующий() Тогда ДатаОкончания = ТекущаяДата(); ДатаВыгрузки = Формат(ДатаОкончания, "ДФ=yyyy.MM.dd_hh.mm.ss"); ПутьНаДиске = "D:\Conversion\Черновики\Обмены\Страны мира\"; ФайлДанных = ПутьНаДиске + ДатаВыгрузки + "_From_ERP.xml"; Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать(); Обработка.РежимОбмена = "Выгрузка"; Обработка.ДатаНачала = НачалоДня(ДобавитьМесяц(ТекущаяДата(),-1)); Обработка.ДатаОкончания = КонецМесяца(ТекущаяДата()); Обработка.ИмяФайлаОбмена = ФайлДанных; Обработка.ИмяФайлаПравилОбмена = ПутьНаДиске + "Правила\ПравилаОбменаДанными(СтраныМира).xml"; Обработка.ЗагрузитьПравилаОбмена(); Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки=2; //ЕСЛИ НУЖНО ВЫГРУЖАТЬ ПО ПЛАНАМ ОБМЕНА, ТО ВКЛЮЧАЕМ ЭТОТ БЛОК И ПОДСТАВЛЯЕМ СВОЙ УЗЕЛ ПЛАНА ОБМЕНА Для Каждого Стр Из Обработка.ТаблицаПравилВыгрузки.Строки Цикл Стр.Включить=1; Для Каждого Стр1 Из Стр.Строки Цикл Стр1.Включить = 1; Стр1.СсылкаНаУзелОбмена = Узел; КонецЦикла; КонецЦикла; Обработка.ВыполнитьВыгрузку(); КонецЕсли; КонецПроцедуры |
|||
18
Leo_Lito
10.05.23
✎
12:55
|
(16) Регламентное все равно планируется вызывать часто, т.к. данные желательно перебросить сразу, а не раз в день. Регламентное все равно будет скорее всего по одному гонять
|
|||
19
RomanYS
10.05.23
✎
13:02
|
(17) и на какое событие Вы это повесили? В ПриЗаписи изменения уже зарегистрированы?
|
|||
20
Leo_Lito
10.05.23
✎
14:01
|
(19) Вот и я к этому пришел. Нет, не зарегистрированы.
|
|||
21
Мультук
10.05.23
✎
14:25
|
(17)
1) А из какой конфы и какую информацию вы собираетесь "оперативно" грузить в ЕРП ? Просто ЕРП, это "не просто" :-) Странами мира ЕРП особо не испортишь, а вот всяким другим можно. И самое обидное сначала будет незаметно, а потом больно. 2) Сколько времени будет выполняться в вашей базе код Обработка.ИмяФайлаПравилОбмена = ПутьНаДиске + "КакиеНибудьВзрослыеПравилаСКучейОбъектов.xml"; Обработка.ЗагрузитьПравилаОбмена(); Лучше сразу замерить, чтобы потом не спрашивать себя "а что это у меня каждый объект по 5 минут пишется" 3) Лучше открыть новую тему и описать: что {объекты} откуда {имя конфигурации} и куда {ЕРП ?} вы собираетесь грузить И почему это "срочно-важно" |
|||
22
Leo_Lito
10.05.23
✎
14:40
|
(21) Может есть источник, где можно почитать об этих подводных камнях? Смотрел статьи на сайтах с замерами скорости передачи, сравнивал: всё нормально отрабатывает. Да и в любом случае, если вернуться к примеру на 40 000 объектов, то тут любой алгоритм будет их долго обрабатывать, а если бы переносимые данные были 1 к 1, то и смысла извращаться с КД не было бы.
|
|||
23
Leo_Lito
10.05.23
✎
14:50
|
(21) (14) А вообще спасибо за ответы. Изначальный вопрос я закрыл.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |