Вход | Регистрация

1С:Предприятие ::

Метки: 

КД 2 ошибки

Я
   breezee
 
16.12.17 - 10:57
Добрый день!
Нужно логировать ошибки обмена в конвертации при загрузке и получать успешно загруженные данные, чтобы удалять их из узлов обмена.
Подскажите, пожалуйста:
1)Можно как-то в конвертации данных понять, что объект был записан успешно? Записан успешно - значит при записи не выпал в исключение
2)Можно в конвертации после загрузки получить список загруженных объектов?
3)Можно в конвертации после загрузки получить список ошибок, по объектам, которые были записаны не успешно? Посмотрел в обработке загрузки данных - там ошибки пишутся в файл. Файл парсить не хочу, ибо не знаю структуру, да и сложно это(наверное)
 
 
   breezee
 
1 - 16.12.17 - 11:18
ап)
   breezee
 
2 - 16.12.17 - 11:26
Почему над темой появилась стрелка вниз? Не могу поднимать тему?
   jsmith82
 
3 - 16.12.17 - 11:48
2. Добавь в параметры коллекцию (таблицу значений), в правиле После загрузки объекта в Конвертации добавляй туда элементы (строки) НовСтр = Параметры.Таблица.Добавить(); НовСтр.Объект = Объект;
   tty12
 
4 - 16.12.17 - 11:53
(0)
1. Да можно. Сделать Объект.Записать(). Только зачем?!
2. Можно. В конвертации в обработчике ПослеЗагрузкиОбъекта своим кодом формируй список с загруженными объектами.
3. Самый простой вариант, кмк, это как-раз парсить лог. Там и парсить особо нечего. По умолчанию туда только информация по ошибкам и попадает. Ах да, еще информация о начали и окончании выгрузки.
   tty12
 
5 - 16.12.17 - 11:56
"1. Да можно. Сделать Объект.Записать()" - делать в попытке.
   breezee
 
6 - 16.12.17 - 12:01
(4) (5) Спасибо! Так и сделаю.
На вопрос "Зачем" - мне надо собрать список объектов, которые выгрузились и передать в источник. Если объект выгрузился - удаляю из узла регистрацию объекта. Вот только не знаю, "после загрузки" отработает ли для удаения объекта из базы
   tty12
 
7 - 16.12.17 - 12:12
(6)
По сути тебе нужно парсить лог на ошибки и сравнить со списком, который сформируешь при помощи (3). Это чтобы не делать лишних Объект.Записать()...
   breezee
 
8 - 16.12.17 - 12:26
(7) Это лог надо смотреть, структуру его и разделители. Я с логами технологического намучался уже)
   breezee
 
9 - 16.12.17 - 12:29
(8) еще знать где он храниться, что делать, если он уже открыт - кароче геморно)
   tty12
 
10 - 16.12.17 - 12:52
Если без логов, тогда, на вскидку, но мне не очень такой вариант:

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


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует