|   |   | 
| 
 | КД 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) А ведь вы правы, спасибо! Завтра согласую с начальником, буду настаивать на вашем варианте)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |