|   |   | 
| 
 | Автоматическая регистрация для обмена | ☑ | ||
|---|---|---|---|---|
| 0
    
        Aleksei_Pro 17.10.12✎ 15:57 | 
        Настраиваю обмен между 2 базами по COM соединению (УРБД). Выгрузка по правилам и загрузка по правилам. Вопрос: как реализовать, чтобы при загрузке в базу приемник загруженные элементы автоматически регистрировались для обратного обмена в базу источник.?     | |||
| 1
    
        Stim 17.10.12✎ 15:57 | 
        зачем? оО     | |||
| 2
    
        Stim 17.10.12✎ 15:58 | 
        это же будет непрерывный снежный ком     | |||
| 3
    
        Maxus43 17.10.12✎ 15:58 | 
        зачем вам коллизии?     | |||
| 4
    
        Aleksei_Pro 17.10.12✎ 16:02 | 
        Надо мне, штатными не сделать ни как?     | |||
| 5
    
        Stim 17.10.12✎ 16:02 | 
        можно, почему нет..     | |||
| 6
    
        AaNnDdRrEeYy 17.10.12✎ 16:02 | 
        как то так, но потом пожалееш
  ПриЗаписи() Если ОбменДанными ТОгда ПланыОбмена.ЗарегистрироватьИзменения(Ссылка); конецесли; | |||
| 7
    
        Stim 17.10.12✎ 16:03 | 
        модуль плана обмена, процедура
  <ПриПолученииДанныхОтПодчиненного> | |||
| 8
    
        Aleksei_Pro 17.10.12✎ 16:05 | 
        Это уже надо писать в обмене в базе приемнике?     | |||
| 9
    
        AaNnDdRrEeYy 17.10.12✎ 16:06 | 
        луче как в (7) в одном месте можно все данные обработать     | |||
| 10
    
        Aleksei_Pro 17.10.12✎ 16:07 | 
        (9) это в базе источник прописывается , правильно я понял?     | |||
| 11
    
        Stim 17.10.12✎ 16:08 | 
        (10) да     | |||
| 12
    
        Aleksei_Pro 17.10.12✎ 16:09 | 
        Спасибо     | |||
| 13
    
        AaNnDdRrEeYy 17.10.12✎ 16:09 | 
        (10)>> (0)чтобы при загрузке в базу приемник загруженные элементы автоматически регистрировались...
  Наверно всетаки в приемнике. | |||
| 14
    
        AaNnDdRrEeYy 17.10.12✎ 16:10 | 
        хотя если подчиненная база залочена то какая разница     | |||
| 15
    
        Aleksei_Pro 17.10.12✎ 16:15 | 
        (14) если я в источнике это пропишу то при загрузке в приемник он не регистрирует.     | |||
| 16
    
        Aleksei_Pro 17.10.12✎ 16:18 | 
        Вот что просал в источнике :
  Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных,ПолучениеЭлемента,ОтправкаНазад) экспорт ПланыОбмена.ЗарегистрироватьИзменения(ЭтотОбъект,ЭлементДанных); КонецПроцедуры Он даже не попадает при выгрузке сюда. | |||
| 17
    
        Aleksei_Pro 17.10.12✎ 16:20 | 
        Неправильно вопрос задал. Мне нужно чтобы при выгрузке из источника, выгруженные элементы в приемник автоматически регистрировались в приемнике.     | |||
| 18
    
        AaNnDdRrEeYy 17.10.12✎ 16:20 | 
        (17) потому что ПриПолученииДанных это загрузка     | |||
| 19
    
        AaNnDdRrEeYy 17.10.12✎ 16:21 | 
        и что значить
  ПланыОбмена.ЗарегистрироватьИзменения(ЭтотОбъект,ЭлементДанных); наверно всетаки ПланыОбмена.ЗарегистрироватьИзменения(ЭлементДанных,ЭлементДанных); | |||
| 20
    
        AaNnDdRrEeYy 17.10.12✎ 16:22 | 
        (19) сори все правильно, параметры перепутал     | |||
| 21
    
        Aleksei_Pro 17.10.12✎ 16:22 | 
        а какая процедура будет?     | |||
| 22
    
        AaNnDdRrEeYy 17.10.12✎ 16:25 | 
        регистрация в базе снимается не при выгрузке а при загрузке, для всех регистраций - номер которых меньще или равен номеру в  загружаемом файле.
  при выгрузке бесполезно что то регистрировать т.к все равно записи и так все еще зарегистрированы | |||
| 23
    
        Aleksei_Pro 17.10.12✎ 16:27 | 
        ПриОтправкеДанныхПодчиненному     | |||
| 24
    
        Aleksei_Pro 17.10.12✎ 16:29 | 
        мне не надо снимать. Суть: есть база1 . Из нее по правилам выгружаю в базу2. Теперь мне нужно обратно в базу1 из базы2. Но обратно пойдет выгрузка если я зарегистрирую в базе2 элементы. А мне не надо руками их регистрировать, мне надо чтобы они при выгрузке из базы1 в базу2 автоматом регистрировались в базе2 ....     | |||
| 25
    
        Aleksei_Pro 17.10.12✎ 16:32 | 
        (24) а регистрировать в базе 2 надо те элементы, которые были выгружены из базы1.     | |||
| 26
    
        Aleksei_Pro 17.10.12✎ 16:39 | 
        Это реально реализовать при выгрузке? Да кстати обмены будут не только через COM но и через FTP. Я вижу пока тока 1 способ ( это в приемнике прописать в плане обмена)     | |||
| 27
    
        Aleksei_Pro 17.10.12✎ 17:53 | 
        В правилах у объекта написал в после загрузке:
  Узел = ПланыОбмена.Полный.НайтиПоКоду("1"); ПланыОбмена.ЗарегистрироватьИзменения(Узел, Объект); в 1-ой базе узлы: код 1 - предопредеденный 2 - по которому выгружаю во 2-ой базе наборот Что то тоже не хочет. | |||
| 28
    
        Aleksei_Pro 18.10.12✎ 14:11 | 
        Что так не взлетит через правила?     | |||
| 29
    
        hhhh 18.10.12✎ 14:23 | 
        (25) а зачем регистрировать эти объекты? Они у вас пришли из базы 1. Зачем вы их обратно высылаете в базу 1, они же там есть?     | |||
| 30
    
        Aleksei_Pro 18.10.12✎ 14:25 | 
        Я обратно номер сформированного документа в базе 2 передаю в базу 1.     | |||
| 31
    
        hhhh 18.10.12✎ 14:28 | 
        (30) так сначала в базу 1 должно придти подтверждение, что все выгрузилось нормально. Пока это подтверждение не пришло, он ваши изменения не примет.
  То есть вам нужно отправлять номер при следующем обмене. Про коллизии вам же уже сказали в (3) | |||
| 32
    
        Aleksei_Pro 18.10.12✎ 14:30 | 
        (31) Т.е никак вообще автоматом не сделать?     | |||
| 33
    
        Aleksei_Pro 18.10.12✎ 14:31 | 
        (31) Т.е правильно я понял даже если я напишу при загрузке данных в правилах, он не запишет изменения пока база 1 не получит ответ?     | |||
| 34
    
        hhhh 18.10.12✎ 14:33 | 
        (33) это я вам рассказал как в теории, а на практике, думаю вы всё проверите и нам выложите результат.     | |||
| 35
    
        Aleksei_Pro 18.10.12✎ 14:37 | 
        (34) ок     | |||
| 36
    
        AaNnDdRrEeYy 18.10.12✎ 14:44 | 
        (33)>>он не запишет изменения пока база 1 не получит ответ
  интересно как база 2 узнает что база 1 получила ответ? правильно будет база 2 не очистит таблицу зарегистрированных изменений пока из базы 1 не придет ответ что она (база 1) получила эти изменения. почитай толстую книжку Радченко там все написано. | |||
| 37
    
        Aleksei_Pro 18.10.12✎ 15:07 | 
        (36) может объяснишь в 2 словах.     | |||
| 38
    
        AaNnDdRrEeYy 18.10.12✎ 15:10 | 
        (37)в двух словах
  читай матчасть | |||
| 39
    
        Aleksei_Pro 18.10.12✎ 15:31 | 
        "база 2 не очистит таблицу зарегистрированных изменений пока из базы 1 не придет ответ что она (база 1) получила эти изменения." - это не понятно     | |||
| 40
    
        AaNnDdRrEeYy 18.10.12✎ 15:50 | 
        когда записываешь элемент справочника то в таблицу регистраций плана обмена добавляется строка 
  Узел СсылкаНаЭлементСпр NULL (Проверь зто консользю запросов) при выгрузке (ПланыОбменаНачатьЗапись()) эта строка модифицируется так Узел СсылкаНаЭлементСпр 10 (10 - это номер сообщения авто инкремент) при загрузке если в загружаемом файле номер сообщения 10 или больще то эта строка удаляется из таблицы цикл обмена закончен. | |||
| 41
    
        Aleksei_Pro 18.10.12✎ 16:12 | 
        Тогда не понятно как мне сделать это , как реализовать не знаю     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |