Имя: Пароль:
1C
1C 7.7
v7: Как перенести периодические реквизиты из 7.7 с помощью "Конвертации данных 2.0"
0 Dwarrior
 
16.10.09
12:48
Добрый день!

Есть задача - перелить данные между двумя почти похожими базами 7.7. Бухгалтерия, стандартная. Пользую для этого "КД2". Все вроде бы сопоставилось, но вот с периодическими реквизитами ерунда - переносятся только последние значения. А как перенести всю историю?
Сам нарыл что - надо писать обработчики на каждое ПКО периодического реквизита. Так ли это? Можно это как-то автоматизировать? Или все-таки я изобретаю велосипед и все делается гораздо проще?
Кто пробовал - поделитесь опытом?
1 Господин ПЖ
 
16.10.09
12:51
>>Так ли это?
так.

>>Можно это как-то автоматизировать?
нафига? В какой регистр сведений надо заливать эти данные знают только телепаты
2 Dwarrior
 
16.10.09
12:52
Господин ПЖ, у меня перенос между 7 и 7. Во второй базе такой же периодический реквизит, а не регистр сведений
3 Господин ПЖ
 
16.10.09
12:58
а... из 7.7 в 7.7. Читать книжку Бояркина, смотреть примеры. В кратце - писать доп. узлы для в элементе справочника типа "История" со значением и периодом. На стороне загрузки читать и устанавливать.
4 Dwarrior
 
16.10.09
13:00
спасибо, примерно понятно....
а как называется книжка Бояркина?

может кто-то все-таки решал подобную проблему, может есть уже написанные обработчики, которые можно использовать?:)
5 Живой Ископаемый
 
16.10.09
13:03
(4) Конвертация данных: обмен данными между прикладными решениями.
6 Dwarrior
 
19.10.09
14:03
Если кому требуется - решение из книги Бояркина:

в ПКО периодического свойства справочника пишутся два обработчика:
1. При выгрузке:

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


2. При загрузке:
Если Объект.ЭтоГруппа() = 0 Тогда
   УзлыПериодического = Узел.ВыбратьУзлы("Периодический");            
   Для СчУзлов = 0 По УзлыПериодического.КоличествоУзлов-1 Цикл
       УзелПериодического = УзлыПериодического.ПолучитьУзел(СчУзлов);            
       Имя = УзелПериодического.ПолучитьАтрибут("Имя");
       Периодический = СоздатьОбъект("Периодический");
       Периодический.ИспользоватьОбъект(Имя, Объект);
       Выборка = УзелПериодического.ВыбратьУзлы("ПериодическоеЗначение");
       Для Сч = 0 По Выборка.КоличествоУзлов-1 Цикл
           УзелЗначения = Выборка.ПолучитьУзел(Сч);
           ДатаЗнач = УзелЗначения.ПолучитьАтрибут("ДатаЗнач");
           Значение = УзелЗначения.ПолучитьАтрибут("Значение");
           Периодический.ДатаЗнач = ДатаЗнач;
           Периодический.Значение = Значение;
           Периодический.Записать();
       КонецЦикла;
   КонецЦикла;
КонецЕсли;

Первый обработчик - выгружает историю периодики в отдельную структуру и сохраняет ее рядом с объектом в выгруженном файле. Второй - загружает эту историю.