Имя: Пароль:
1C
1С v8
Конвертация данных - из 7.7 в 8.2 (периодический реквизит в регистр сведений)
,
0 moon_sparckle
 
01.10.13
04:46
Прошу помощи. Создаю правила для переноса периодического реквизита в регистр сведений. Регистр сведений периодический в пределах секунды, независимый.
Измерения: Автомобиль, ВидЗначения.
Сделала так:
Для каждого ПКС периодического объекта справочника в обработчике ПередВыгрузкой задаю Значение, например для Автомобиля:
Значение = Источник.ТекущийЭлемент();
ПКС для периода:

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

При загрузке запись регистра затирается последующей записью.
Что-то я делаю не так.
Подскажите, или может есть пример выгрузки в периодический регистр сведений.
1 mehfk
 
01.10.13
05:26
Вставь уже куда-нибудь "ВыгрузитьПоПравилу"
2 moon_sparckle
 
01.10.13
07:04
В ПКО Справочника Автомобили -
ВыгрузитьПоПравилу(Источник, , , , "ХарактеристикаАвтомобили");

ХарактеристикаАвтомобили - это как раз правило для записи регистра сведений.
А куда нужно?
3 Абыр
 
01.10.13
08:56
(0) Вам надо выгрузить все изменения периодического реквизита? По вашему коду сейчас получается только одна запись по периоду.
4 moon_sparckle
 
01.10.13
09:02
(3) Да, вы правы, выгружается только одна запись. Если бы я сообразила - как сделать все, это было бы прекрасно, но у меня даже одна не хочет по человечески выгружаться.
Хозяин автомобиля затирается контрагентом из следующей записи.
5 Абыр
 
01.10.13
09:32
(4) В регистре сведений в приемнике помимо измерений, как я подозреваю, есть ресурс, в котором храним значение характеристики автомобиля, так? В данном случае хозяина автомобиля. ПКС по выгрузке ресурса покажите.
6 Defender aka LINN
 
01.10.13
09:37
(2) 1 ВыгрузитьПоПравилу = 1 запись в регистре. Дальше сама
7 moon_sparckle
 
01.10.13
09:41
(5) В ПередВызрузкой ПКС ресурса источник пустой,

Значение = Источник.Хозяин;
8 moon_sparckle
 
01.10.13
09:45
(6) Это я просто по одному ПКС привела пример. Полностью обработчик После выгрузки у справочника Автомобили такой :

ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиГосНомер");
Если ВходящиеДанные <> "ВводОстатков" Тогда
    ВыгрузитьПоПравилу(Источник, , , , "ХарактеристикаАвтомобили");
КонецЕсли;    
ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиПробег");
ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиТехПаспорт")

Или я не так поняла?
9 Абыр
 
01.10.13
09:46
(7) Т.е. сейчас значение периода для записи регистра вы подбираете, создавая объект "Периодический" по периодическому реквизиту "Владельцы", и ищете в нем первую запись, но при этом само значение ресурса вы берете из реквизита "Хозяин" (уж не знаю, периодический он или нет). Так и должно быть?
10 Defender aka LINN
 
01.10.13
09:47
(8) Еще раз: 1 ВыгрузитьПоПравилу = 1 запись.
Записей надо несколько. Что же делать, что же делать...
11 moon_sparckle
 
01.10.13
09:59
(13) Они дублируются Владельцы-Периодический, А последний владелец записывается в непериодический реквизит Хозяин.Обратный порядок я забыла.Я бы поняла, что в этом косяк,но у меня все остальные измерения тоже затираются.

(10)1 запись, несмотря на то , что измерения разные и реквизиты разные?  Ядумаю, правда, только что -то не получается. Может еще подсказочку, пожалуйста.
12 moon_sparckle
 
01.10.13
10:04
(10)

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

вот это вот нужно перетащить в После выгрузки у Справочника Автомобили а затем

ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиГосНомер");
Если ВходящиеДанные <> "ВводОстатков" Тогда
    ВыгрузитьПоПравилу(Источник, , , , "ХарактеристикаАвтомобили");
КонецЕсли;    
ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиПробег");
ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиТехПаспорт")

?
13 moon_sparckle
 
01.10.13
10:07
Что - то совсем запуталась
14 Абыр
 
01.10.13
10:17
(13) Если хотите выгрузить все записи по периодическому реквизиту, то:
1) В "После выгрузки" ПКО "Автомобили" создаете объект "Периодический"
2) В цикле по значениям периодического реквизита создаете список значений. В список значений устанавливаете автомобиль, вид значения, период, значение ресурса. Период и значение ресурса соответственно берете из объекта "Периодический". Представления значений СЗ должны соответствовать именам свойств в регистре сведений в приемнике
3) После заполнения СЗ выгружаете его по ВыгрузитьПоПравилу(). Т.е. список значений у вас будет источник.
4) В правиле для записи регистра сведений убираете код из "перед выгрузкой" в ПКС, у вас уже все значения подготовлены
15 moon_sparckle
 
01.10.13
10:29
(14) Спасибо, убежала пробовать
16 moon_sparckle
 
01.10.13
10:56
Не помогло ((( Все равно значение владельца затирается следующим контрагентом.все точно также, только значений несколько.
вот код в ПКОАвтомобили После выгрузки

Периодический=СоздатьОбъект("Периодический");
Периодический.ИспользоватьОбъект("Владельцы",Источник);
Периодический.ВыбратьЗначения();
СЗ = СоздатьОбъект("СписокЗначений");
Пока Периодический.ПолучитьЗначение() = 1 Цикл
    СЗ.ДобавитьЗначение(Источник,"Автомобиль");
    СЗ.ДобавитьЗначение(Периодический.ДатаЗнач,"Период");
    СЗ.ДобавитьЗначение("Хозяин","ВидЗначения");
    СЗ.ДобавитьЗначение(Периодический.Значение,"Значение");
    Если ВходящиеДанные <> "ВводОстатков" Тогда
        Источник = СЗ;
        ВыгрузитьПоПравилу(Источник, , , , "АвтомобилиХозяин");
    КонецЕсли;    
    
КонецЦикла;
17 Абыр
 
01.10.13
10:58
1) СЗ = СоздатьОбъект("СписокЗначений");
в цикл
2) лучше просто
ВыгрузитьПоПравилу(СЗ, , , , "АвтомобилиХозяин");
18 moon_sparckle
 
01.10.13
11:29
фух, получилось, еще раз огромное спасибо!