|
КД 2 ошибки | ☑ | ||
---|---|---|---|---|
0
breezee
16.12.17
✎
10:57
|
Добрый день!
Нужно логировать ошибки обмена в конвертации при загрузке и получать успешно загруженные данные, чтобы удалять их из узлов обмена. Подскажите, пожалуйста: 1)Можно как-то в конвертации данных понять, что объект был записан успешно? Записан успешно - значит при записи не выпал в исключение 2)Можно в конвертации после загрузки получить список загруженных объектов? 3)Можно в конвертации после загрузки получить список ошибок, по объектам, которые были записаны не успешно? Посмотрел в обработке загрузки данных - там ошибки пишутся в файл. Файл парсить не хочу, ибо не знаю структуру, да и сложно это(наверное) |
|||
1
breezee
16.12.17
✎
11:18
|
ап)
|
|||
2
breezee
16.12.17
✎
11:26
|
Почему над темой появилась стрелка вниз? Не могу поднимать тему?
|
|||
3
jsmith82
16.12.17
✎
11:48
|
2. Добавь в параметры коллекцию (таблицу значений), в правиле После загрузки объекта в Конвертации добавляй туда элементы (строки) НовСтр = Параметры.Таблица.Добавить(); НовСтр.Объект = Объект;
|
|||
4
tty12
16.12.17
✎
11:53
|
(0)
1. Да можно. Сделать Объект.Записать(). Только зачем?! 2. Можно. В конвертации в обработчике ПослеЗагрузкиОбъекта своим кодом формируй список с загруженными объектами. 3. Самый простой вариант, кмк, это как-раз парсить лог. Там и парсить особо нечего. По умолчанию туда только информация по ошибкам и попадает. Ах да, еще информация о начали и окончании выгрузки. |
|||
5
tty12
16.12.17
✎
11:56
|
"1. Да можно. Сделать Объект.Записать()" - делать в попытке.
|
|||
6
breezee
16.12.17
✎
12:01
|
(4) (5) Спасибо! Так и сделаю.
На вопрос "Зачем" - мне надо собрать список объектов, которые выгрузились и передать в источник. Если объект выгрузился - удаляю из узла регистрацию объекта. Вот только не знаю, "после загрузки" отработает ли для удаения объекта из базы |
|||
7
tty12
16.12.17
✎
12:12
|
(6)
По сути тебе нужно парсить лог на ошибки и сравнить со списком, который сформируешь при помощи (3). Это чтобы не делать лишних Объект.Записать()... |
|||
8
breezee
16.12.17
✎
12:26
|
(7) Это лог надо смотреть, структуру его и разделители. Я с логами технологического намучался уже)
|
|||
9
breezee
16.12.17
✎
12:29
|
(8) еще знать где он храниться, что делать, если он уже открыт - кароче геморно)
|
|||
10
tty12
16.12.17
✎
12:52
|
Если без логов, тогда, на вскидку, но мне не очень такой вариант:
как выше писали формируешь тз с загруженными объектами и через попытку для каждой строки делаешь Объект.Записать(), если попал в исключение, то удалить строку из ТЗ. В итоге у тебя останутся только загруженные объекты. |
|||
11
h-sp
16.12.17
✎
13:38
|
(6) используй план обмена. Он как раз это и делает.
|
|||
12
breezee
16.12.17
✎
16:39
|
(11) Но там есть возможность записать только номер сообщения. Или я что-то не понимаю. Вот мой алгоритм, как его перевести на плане обмена?
1)В источнике запускаю программно обработку обмена данными 2)В источнике, в обработке обмена данными указываю правила и вызываю выгрузку 3)В источнике по правилам выбираются все изменения по узлу обмена и как-то обрабатываются, согласно правилам. Формируется файл с данными. 4)В источнике, согласно правилам обработчика "После выгрузки" получаю файл, который выгрузил. 5)Вызываю веб-сервис базы-приемника 6)В веб-сервисе базы приемника читаю файл 7)В базе приемника, по обработчике правил "после загрузки" вызваю "объект.Записать()" при успешной записи = сохраняю в массив успешной записи 8)В базе приемника в правилах после загрузки данных вызывается обращение к веб-сервису источника. В обращении передаю массив загруженных данных 9)В базе источника удаляю изменения в узле обмена по данным. Вот так все вышло и как использовать планы обмена на стороне приемника я не знаю( Алгоритм сыроват, не знаю, как передавать удаление обратно и может незначительно измениться при реализации и тестировании |
|||
13
hhhh
16.12.17
✎
20:11
|
(12) ну это вы вручную решили, а план обмена это делает автоматом. у ваших изменений есть номер сообщения, когда приходит ответ от приемника, все объекты с этим номером снимаются с регистрации. Поэтому выкиньте свои 12 пунктов и перестаньте изобретать велосипед.
|
|||
14
breezee
17.12.17
✎
09:33
|
(13) А не для РИБа тоже работает? У меня разные метаданные могут быть в приемнике и источнике
|
|||
15
rozer76
17.12.17
✎
11:17
|
(14) смотрите в сторону БСП обмен по правилам. Хоч на кд2 хоч ED если кд3 более знакомо а велосипедить в наше время негоже. Также и коллизии и ошибки проведения все учтено цже в бсп... в ютубе набери в поисках "neti бсп"
|
|||
16
h-sp
17.12.17
✎
11:39
|
(14) причем тут метаданные? У вас таблица зарегистрированных изменений. У каждого есть номер сообщения. Например вы делаете выгрузку сообщения № 17. В нее попадают все изменения с этим номером. Когда приходит ответ (при загрузке) - всё нормально, изменения с номером 17 автоматически снимаются с регистрации. А в следующую выгрузку уже попадают изменения с номером 18. И плану обмена абсолютно по барабану, какие там метаданные.
|
|||
17
breezee
17.12.17
✎
13:42
|
(16) Посмотрел пример здесь Книга знаний: УРБД на v8 за четыре шага.
Там не то что мне надо. Вот насоздавал юзер 100 элемнтов справочника за 10 минут. Каждые 10 минут запускается обмен. Из этих 100 элементов 1 был заблокирован, не записался. Если я правльно понял - ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения); вывалиться с ошибкой на этом элементе. Мне 100 элементов заново загружать надо? Я не понимаю, как внутри система применят изменения и как мне сообщить источнику о том что все ок(99 элементов передались без ошибок0 и что делать, если не все ок(ошибка по элементу была(? Может, скинете статью, где все разжевано? |
|||
18
h-sp
17.12.17
✎
13:54
|
(17) ну пусть 100 элементов загружает, это нормальная ситуация.чего то вы фигней страдание. Такая ситуация может произойдёт раз в год, а вы из-за неё сейчас кучу ненужного кода присобачите.
|
|||
19
breezee
17.12.17
✎
13:56
|
(18) А ведь вы правы, спасибо! Завтра согласую с начальником, буду настаивать на вашем варианте)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |