Имя: Пароль:
1C
1С v8
Автоматическая регистрация для обмена
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
Тогда не понятно как мне сделать это , как реализовать не знаю
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой