Имя: Пароль:
1C
1С v8
Знатоки по Планам Обмена Подскажите!
, ,
0 ironkrab
 
06.07.12
11:53
Добрый день, господа! Вопрос: возможно ли сделать между двумя конфигурациями два плана обмена, в каждом чтобы учавствовала номенклатура? И чтобы она не ходила в вечном цикле от одного обмена к другому в случае еее изменения? Спасибо!
1 ZanderZ
 
06.07.12
11:56
возможно
2 qeos
 
06.07.12
11:58
вполне возможно. пожалуйста
3 y88
 
06.07.12
11:58
я не знаток конечно :)
Убери авторегистрацию или сбрасывай вручную
А зачем такой огород?
4 ironkrab
 
06.07.12
11:59
(1) Как? У меня обмены уходят в цикл...
5 ironkrab
 
06.07.12
11:59
(3) Не хочется трогать штатный обмен, чтобы не иметь хлопот с обновлением.
6 ironkrab
 
06.07.12
12:02
(3) авторегистрация убрана, я сделал как было с обычным обменом,еще одна подписка на событие и еще один общий модуль(подправленные копии существующих)
7 y88
 
06.07.12
12:02
(5) т.е. два штатных обмена и менять их нельзя :)
8 ironkrab
 
06.07.12
12:03
(7) Нет, обмен штатный один, второй самописный, чтобы не трогать первый.
9 y88
 
06.07.12
12:10
(8) во втором при чтении сообщения не грузи номенклатуру
10 ironkrab
 
06.07.12
12:11
(9) Имеется в виду во втором обмене не использовать номенклатуру???
11 ZanderZ
 
06.07.12
12:14
(6) "авторегистрация убрана" ну если убрана значит где-то руками регистрирует там и смотри что бы только для одного плана обмена регистрировались, только проверяй что бы при загрузке не отрабатывала эта подписка
12 AaNnDdRrEeYy
 
06.07.12
12:15
В таких случаях делается признак главный узел.
если изменено в главном узле берем эти изменения и пофиг на зменения в неглавном узле из просто затираем.
13 y88
 
06.07.12
12:15
(10) при получении файла обмена и его чтении не грузить номенклатуру
Вот пример с использованием реквизита Главного узла:

   Пока ВозможностьЧтенияДанных(ЧтениеXML) Цикл
       
       // Читаем очередное значение
       Данные = ПрочитатьДанные(ЧтениеXML);

       // Разрешение коллизий при одновременном изменении в обоих узлах
       Если Не ЧтениеСообщения.Отправитель.Главный И
           ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
           Сообщение = Новый СообщениеПользователю();
           Сообщение.Текст = "- Изменения отклонены:";
           Сообщение.Сообщить();
           Продолжить;
       КонецЕсли;
14 AaNnDdRrEeYy
 
06.07.12
12:16
+(12) при записи в неглавном узле в момент обмена не регистрируем этот элемент в плане обмена
15 ironkrab
 
06.07.12
12:19
(11) Так мне надо чтобы регистрировалась в обоих планах Так как:
Создан новый документ(самописный), который обменивается по самописному плану, для него же создана новая номенклатура.
В случае если регистрация номенклатуры для этого плана обмена будет отключена и самописный обмен сработает первым, до штатного - в базе приемнике будет создан документ с номенклатурой "Объект не обнаружен"
16 ZanderZ
 
06.07.12
12:21
(15) проверять если не зарегистрированы для второго то регистрировать...
17 ironkrab
 
06.07.12
12:23
(12) А где ставится этот признак? Смотрю в списке узлов, не вижу такой опции...
18 y88
 
06.07.12
12:24
(17) добавляется реквизит к плану обмена
19 ironkrab
 
06.07.12
12:25
(12) или признак главный выбирается при создании плана обмена?
20 y88
 
06.07.12
12:26
(15) "Объект не обнаружен" - ну и что, потом все равно загрузится через другой ПО
21 ironkrab
 
06.07.12
12:26
(18) Спасибо, понял.
22 ironkrab
 
06.07.12
12:27
(20) Пробовал, почему-то в уже созданных документах не распознается, только в новых, созданных уже после загрузки номенклатуры...
23 ZanderZ
 
06.07.12
12:27
(20) у буха может быть разрыв сердца увидев такое сообщение :)
24 y88
 
06.07.12
12:30
(22) точно? поробуй еще разик
25 y88
 
06.07.12
12:32
(24)+ хотя хз как для разных ПО должно работать
26 ironkrab
 
06.07.12
12:34
(24) Точно. Несколько раз пробовал. Один раз получилось и то не с номенклатурой а с организациями. С номенклатурой - несколько раз пробовал, не получилось ни разу. Почему так - не знаю. Поэтому решил действовать как записано в (0) и наткнулся на эти грабли . сейчас вникаю в (13) и (14)
27 y88
 
06.07.12
12:38
Покури еще
ОбменДанными.Получатели.Добавить
ОбменДанными.Получатели.Очистить
28 ironkrab
 
06.07.12
12:54
(27) Спасибо, посмотрю. О результатах отпишусь.
29 ironkrab
 
06.07.12
14:52
(27) Не, не могу врубится. Мне нужно так прописать, чтобы штатные модули не менять, только свои добавлять. А куда вышеуказанный код впихнуть, так чтобы штатный код не менять- не знаю.
30 Лефмихалыч
 
06.07.12
14:57
(0) у меня в открытой сейчас конфе 18 планов обмена. Это к вопросу о возможности. А то, о чем ты говоришь, называется изоляцией планов обмена.
Отключи авторегистрацию и рули регистрацией из кода
31 hhhh
 
06.07.12
14:59
(29) вставь проверку ОбменДанными.Загрузка = Истина. Чтобы при загрузке у тебе изменения не регистрировались.
32 ironkrab
 
06.07.12
15:01
(30) это возможно без правки существующих модулей (только добавляя новые)?
33 Лефмихалыч
 
06.07.12
15:03
(32) подписьки именно для этого придумали - чтобы не править существующие модули
34 y88
 
06.07.12
15:07
Попробуй в слейвовой базе ПередЗаписью Номенклатуры
ОбменДанными.Получатели.Очистить
35 ironkrab
 
06.07.12
15:10
(29),(34) Спасибо, пробую
36 ironkrab
 
06.07.12
15:11
Упс (31),(34)
37 ironkrab
 
06.07.12
16:17
Получилось!!!
Сделал так: (конфигурация УНФ) для своего обмена закопировал общий модуль "ОбменДаннымиСобытияБП" и там в процедуре "ОбменДаннымиОбменУправлениеНебольшойФирмойБухгалтерияДляУкраиныПередЗаписью"
Поместил следующий код:
"Если Источник.ОбменДанными.Загрузка= Истина Тогда
    Возврат;
КонецЕсли;"
Загружаемая штатным планом обмена номенклатура перестала попадать в самописный обмен.
Огромное спасибо всем, в особенности hhhh и  y88