Имя: Пароль:
1C
1С v8
РИБ. Создание начального образа.
0 mzelensky
 
24.10.13
08:17
Доброго всем!
Имею план обмена с РИБ по организациям. Создал узлы, заполнил в подчиненном узле необходимую организацию (одну из четырех) - создал начальный образ. Захожу в созданную базу и вижу, что документы перенеслись по всем 4 организациям. При этом дальнейший обмен идет правильный, т.е. если дальше обмениваться информационными пакетами, то попадают только документы по нужной организации.

Конфа УТ 10.3. Правила регистрации пиленные. В моделу плана обмена в процедуре "ПередОтправкойПодчиненному" так же стоит контроль на отправляемые данные.

Почему при создании начального образа лезут ненужные данные? Что забыл еще сделать?
1 Повелитель
 
24.10.13
08:23
(0) Могу ошибаться, но помоему создать начальный образ, не смотрит на отборы. Смотрит только на то какие метаданные включены.
2 andreymongol82
 
24.10.13
08:26
Может все-таки не "ПередОтправкойПодчиненном", а "ПриОтправкиДанныхПодчиненному"?
3 mzelensky
 
24.10.13
08:27
(1) Походу так и получается, но почему?
4 mzelensky
 
24.10.13
08:28
(2) возможно, я не скопировал, а на память писал. Сути это не меняет.
5 mzelensky
 
24.10.13
08:29
(3) получается ,что прийдется создавать начальный образ, а потом удалять все ненужные объекты...ну как-то это глупо...
6 Ranger_83
 
24.10.13
08:33
В БП 2.0 такое работает
7 mzelensky
 
24.10.13
08:35
(6) что ты имеешь ввиду под словом "такое" ?
8 andreymongol82
 
24.10.13
08:36
(5) Вот как-то сомнительно, что не цепляются отборы при создании начального образа. Насколько помню, но процедура "ПриОтправкиДанныхПодчиненному" отрабатывает и при создании образа, должны быть и отборы сработать? Можно отладчиком проверить. Да и неплохо бы текст этой процедуры посмотреть
9 andreymongol82
 
24.10.13
08:38
+(8) Опять же кажется есть зависимость от параметра ОтправкаЭлементаДанных (DataItemSend)
10 mzelensky
 
24.10.13
08:42
(8) я эту процедуру отладчиком проходил ток при выгрузке данных (уже после создания образа). Работает вроде норм. При создании образа еще не проверял...долгий процесс, но видимо прийдется.

По своей логике процедура не отличается от типовой. Я только заменил процедуры получения узлов плана обмена на свои.
11 mzelensky
 
24.10.13
08:47
Вот что пишет СП

ПланОбменаОбъект.<Имя плана обмена> (ExchangePlanObject.<Имя плана обмена>)
ПриОтправкеДанныхПодчиненному (OnSendDataToSlave)
Синтаксис:

ПриОтправкеДанныхПодчиненному(<ЭлементДанных>, <ОтправкаЭлемента>, <СозданиеНачальногоОбраза>)
Параметры:

<ЭлементДанных>

При вызове обработчика события данный параметр содержит элемент данных, изменение которого зарегистрировано и который должен быть помещен в сообщение обмена данными. Элементами данных могут быть КонстантаМенеджерЗначения.<Имя константы>, объекты базы данных, наборы записей регистров, последовательностей или перерасчетов.
<ОтправкаЭлемента>

Тип: ОтправкаЭлементаДанных.
При вызове события данный параметр содержит значение Авто, что означает, что элемент данных будет помещен в сообщение. В обработчике события можно присвоить параметру другое значение.
Значение Удалить означает, что в сообщение будет помещено значение, предназначенное для удаления соответствующего элемента данных в той информационной базе, которой адресовано сообщение. В случае объекта базы данных в сообщение будет помещен объект типа УдалениеОбъекта, содержащий ссылку на объект базы данных. В случае набора записей будет помещен пустой набор записей. Однако, в случае элемента данных КонстантаМенеджерЗначения.<Имя константы> действие, производимое значением Удалить не отличается от Авто.
Значение Игнорировать означает, что в сообщение не будет помещено ничего, связанного с элементом данных.
Значение по умолчанию: Авто
<СозданиеНачальногоОбраза>

Тип: Булево.
Истина - событие вызвано в рамках работы процедуры создания начального образа.
В случае выгрузки данных в сообщение обмена значение параметра - Ложь.
Описание:

Обмен изменениями данных и конфигурации в распределенной информационной базы производится с помощью сообщений обмена данными. Различаются сообщения, с помощью которых производится передача изменений от главного узла подчиненному и от подчиненного главному. Обработчик данного события вызывается перед помещением элемента данных в сообщение обмена данными, отправляемого главным узлом подчиненному. Обработчик вызывается для каждого элемента данных, помещаемого в сообщение.
12 mzelensky
 
24.10.13
08:50
Т.е. получается, что процедура должна срабатывать при создании начального образа.

Вот код (это типовой код):

        НомерВМассиве = МассивУзловДляПереноса.Найти(ЭтотОбъект.Ссылка);
        
        Если НомерВМассиве = Неопределено Тогда
            
            // передаем информацию об удалении
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;    
            
        КонецЕсли;    

Т.е. объет должен быть удален.



Может поставить еще условие такое:

Если СозданиеНачальногоОбраза тогда
   ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;    
    
Иначе
  // передаем информацию об удалении
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить;        
КонецЕсли;
13 mzelensky
 
24.10.13
09:36
аппп
14 mzelensky
 
24.10.13
10:18
Блин, так что с этой выгрузкой еще может быть не так?
15 mikeA
 
24.10.13
10:43
(0) ну сделай для подчинённого чистую базу из cf главного узла, создай в ней главный узел и переноси данные обменом, раз говоришь, что оно работает.
16 mzelensky
 
24.10.13
10:54
(15) Это называется изврат.

Мне интересно почему по нормальному не работает. Сейчас открыл типовую БП 2.0, залез в План обмена по организации. Принципиальных отличий не увидел. Все тоже самое...но люди говорят ,что должно нормально создаться...первоначальный образ я имею ввиду.
17 andreymongol82
 
24.10.13
11:05
(16) Ну не знаю. Мож в платформе дело, но у меня на 8.2.14 нормально образ создавался
18 Холодильник
 
24.10.13
11:08
после того, как создал узел с организациями, базу перезапускал?
параметры сеанса, они, знаешь ли, просто так сами не обновятся
19 Ranger_83
 
24.10.13
11:10
(16) вот посмотри ради интереса http://infostart.ru/public/182012/
20 hhhh
 
24.10.13
11:14
(16) наверно, в правилах регистрации фигня. В БП 2.0 ведь нет правил регистрации.
21 mzelensky
 
24.10.13
11:26
(18) кстати нет...не перезапускал!

В параметрах сеанса там вроде ток соответствие узлов проставляется. Что еще?
22 mzelensky
 
24.10.13
11:28
(20) Так у меня же косяк с созданием начального образа. Последующая обработка объектов (регистрация нужных данных) проходит нормально.