Имя: Пароль:
1C
1С v8
Конвертация данных - выгрузка констант
0 trambalda
 
19.10.11
15:40
Вообще торможу, настроил правила, константы не выгружаются. Объект источник - КонстантыНабор, никаких галочек в ПКО не стоит, синхронизация свойств сделана, при выгрузке ставлю галку на константы, пишет, что выгружено объектов ноль. Там есть какой-то подвох? ЧЯДНТ?
1 trambalda
 
19.10.11
15:46
Забыл добавить - через универсальную обработку все выгружаются. А через "Обмен данными в формате XML" с указанным планом обмена - фигу. Причем если смотреть через консоль запросов, то изменения для данного узла зарегистрированы.
2 trambalda
 
19.10.11
16:49
ап, сам пока не разобрался
шарюсь отладчиком
3 trambalda
 
20.10.11
10:26
В общем, странные вещи. Как показала практика, выгрузка констант напрямую, а не по ссылкам, не происходит.
В процедуре ВыполнитьВыгрузкуИзмененныхДанныхДляУзлаОбмена следующая конструкция:


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


Но в случае выгрузки констант, в СтрокаПравилаВыгрузки.ОбъектВыборки находится тип "КонстантаНабор", и в МассивВыгружаемыхМетаданных попадает элемент с типом "ОбъектМетаданных" без значения, соответственно, метод ВыбратьИзменения по этому элементу, ничего не возвращает.

Переделал вот так:


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


И все заверте.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший