Имя: Пароль:
1C
 
План обмена. Ручное формирование файла выгрузки.
0 ShadowXXX
 
09.03.07
08:10
Делаю выгрузку следующим образом:

УзелПолучатель=Константы.ПланОбменаТекущейИБ.Получить();
           
ФайлXML=Новый ЗаписьXML;
ФайлXML.ОткрытьФайл(ФайлОбмена);
ФайлXML.ЗаписатьОбъявлениеXML();
ЗаписьСообщения=ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ФайлXML,УзелПолучатель);
           
Выборка=ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель,ЗаписьСообщения.НомерСообщения);
           
МассивСВыгруженнымиЭлементами=Новый Массив();
           
Пока (Выборка.Следующий()) Цикл
   Объект=Выборка.Получить();
               
   Выгружать=1;
               
   ...Проверка необходимости выгрузки
               
   Если (Выгружать) Тогда
       ЗаписатьXML(ФайлXML,Объект);
       МассивСВыгруженнымиЭлементами.Добавить(Объект);
       КоличествоВыгруженных=КоличествоВыгруженных+1;
   Иначе
       ПланыОбмена.УдалитьРегистрациюИзменений(Узлы.Ссылка,Объект);
   КонецЕсли;
КонецЦикла;
           
НомерОтправленногоСообщения=ЗаписьСообщения.НомерСообщения;
ЗаписьСообщения.ЗакончитьЗапись();
ФайлXML.Закрыть();

После выгрузки получаю следующий файл:
 <?xml version="1.0" ?>
- <v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
- <v8msg:Header>
 <v8msg:ExchangePlan>Управленческий_Финансовый</v8msg:ExchangePlan>
 <v8msg:To>ФИН</v8msg:To>
 <v8msg:From>УПР</v8msg:From>
 <v8msg:MessageNo>4</v8msg:MessageNo>
 <v8msg:ReceivedNo>0</v8msg:ReceivedNo>
 </v8msg:Header>
 <v8msg:Body />
 </v8msg:Message>

Если же использовать функцию для полной выгрузки (или выгрузить стандартным образом нажав кнопку в плане обмена), то получаю файл следующего содержания:
- <v8msg:Message xmlns:v8msg="http://v8.1c.ru/messages">
- <v8msg:Header>
 <v8msg:ExchangePlan>Управленческий_Финансовый</v8msg:ExchangePlan>
 <v8msg:To>ФИН</v8msg:To>
 <v8msg:From>УПР</v8msg:From>
 <v8msg:MessageNo>3</v8msg:MessageNo>
 <v8msg:ReceivedNo>0</v8msg:ReceivedNo>
 </v8msg:Header>
- <v8msg:Body>
- <v8de:Changes xmlns:v8de="http://v8.1c.ru/dataexchange/2005/02" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v8="http://v8.1c.ru/data">
 <v8de:Signature>2426be57-a28b-4a7e-bef5-22eaf1d0a9f0</v8de:Signature>
- <v8de:Config xmlns:v8md="http://v8.1c.ru/metadata/2005/08">
 <v8de:Version>6.0</v8de:Version>
 <v8de:Digest1>00000000000000000000000000000000</v8de:Digest1>
 <v8de:Digest2>08e350541a80b82e14abb659ea42ad06</v8de:Digest2>
 </v8de:Config>
- <v8de:Nodes>
- <v8de:Node>
 <v8de:DeletionMark>false</v8de:DeletionMark>
 <v8de:Code>УПР</v8de:Code>
 <v8de:Description>Управленческая база</v8de:Description>
 </v8de:Node>
- <v8de:Node>
 <v8de:DeletionMark>false</v8de:DeletionMark>
 <v8de:Code>ФИН</v8de:Code>
 <v8de:Description>Финансовая база</v8de:Description>
 </v8de:Node>
 </v8de:Nodes>
 <v8de:Data />
 </v8de:Changes>
 </v8msg:Body>
 </v8msg:Message>

Вопрос: почему при моей выгрузке отсутствует секции
Changes
Signature
Config
и т.д.
Так же если были изменения в конфигурации они не запишутся в файл при использовании моей выгрузки.
1 ТелепатБот
 
гуру
09.03.07
08:10
2 ShadowXXX
 
09.03.07
10:17
Неужели никто не знает в чём проблема???
3 Звездочёт
 
09.03.07
10:28
(2) все ещё спят .)
4 Neco
 
09.03.07
10:34
Так надо, так задумано
5 Циник
 
09.03.07
10:35
Если попробовать думать логически, то Changes, Signature, Config разделы для синхронизации конфигураций в УРБД. Ты же делая "ВыбратьИзменения" выбираешь только измененные данных, а не изменения в метаданных. И в файл пишешь только их, соответственно в твоем файле нет секций по синхронизации конфигурации.
6 Звездочёт
 
09.03.07
10:37
(0) а план обмена у тебя, вообще, распределенный?
7 ShadowXXX
 
09.03.07
10:38
(5)

Я так полагаю ВыбратьИзменения должно выбирать все изменения, да же если они были в конфигурации.

Причём в примере сформированных файлов которые я привёл вообще нет изменений.
Т.е. это файлы пустышки.

(6)
Да
8 Циник
 
09.03.07
10:41
(7) значит ты неправильно предполагаешь.
9 ShadowXXX
 
09.03.07
10:42
(8)
И как быть?
Есть ли какое-то решение?
10 Циник
 
09.03.07
10:48
Ну у нас например работает так.

ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, КоличествоЭлементов);
ЗаписьСообщения.ЗакончитьЗапись();

А дальше в процедурах ПриОтправкеДанныхГлавному, ПриОтправкеДанныхПодчиненному, ПриПолученииДанныхОтГлавного, ПриПолученииДанныхОтПодчиненного уже обрабатываешь конкретный элемент данных и используя параметры ОтправкаЭлемента/ПолучениеЭлемента определеяшь нужно ли его получать/отправлять.
11 ShadowXXX
 
09.03.07
10:54
(10) думаю что поможет.
12 SilentMan
 
09.03.07
11:09
Ручная запись изменений из плана обмена с галкой РБД никогда не поместит в файл изменения метаданных. Это можно сделать только через (10).
13 Vozhd
 
09.03.07
11:13
(0) 5 Баллов!!!
   
Выгружать=1;
Если (Выгружать) Тогда
14 coder1cv8
 
09.03.07
11:13
(10) +1 и у нас так...
15 ShadowXXX
 
09.03.07
11:28
(13) Если внимательно присмотреться
то между

Выгружать=1;
и                
Если (Выгружать) Тогда

Есть
...Проверка необходимости выгрузки
где собственно и проверяется выгружать али нет!!!




(14) Делаю так же получается.
16 ShadowXXX
 
09.03.07
14:08
(10)
Получилось.

Только возникла проблема №2.
Информация об изменении конфигурации выгружается, но как её удалить из плана обмена после успешной загрузки?
17 ShadowXXX
 
09.03.07
14:50
Итак.
Что бы изменения в конфигурации главного узла постоянно не выгружались, необходимо из подчинённой ИБ получить ответ о удачном обновлении.
18 SilentMan
 
09.03.07
14:58
(17) В доку заглянул? :)
AdBlock убивает бесплатный контент. 1Сергей