Имя: Пароль:
1C
1С v8
КД 2.1 Перенос справочника Валюты из 7.7 в 8
0 vadim777
 
18.07.17
09:47
Примеров по этому переносу вроде много, но они какие-то неполные - переносится только периодический реквизит Курс.
Событие "Перед выгрузкой":
Курсы=СоздатьОбъект("Периодический");
Курсы.ИспользоватьОбъект("Курс",Источник);
Курсы.ВыбратьЗначения();
Пока Курсы.ПолучитьЗначение() = 1 Цикл
    сз = СоздатьОбъект("СписокЗначений");
    сз.ДобавитьЗначение(Истина, "Активность");
    сз.ДобавитьЗначение(Курсы.ДатаЗнач,"Период");
    сз.ДобавитьЗначение(Источник, "Валюта");
    сз.ДобавитьЗначение(Курсы.Значение, "Курс");
    ВыгрузитьПоПравилу(сз, , , , "КурсыВалют");
КонецЦикла;
А еще есть и Кратность, также периодический. Как учесть еще и кратность?
1 h-sp
 
18.07.17
10:07
сз.ДобавитьЗначение(1, "Кратность");

не?
2 Ёпрст
 
18.07.17
10:07
>>>сз.ДобавитьЗначение(Истина, "Активность");

Это не будет работать
3 Ёпрст
 
18.07.17
10:08
в ключках, нужно 1 или 0 пихать заместо булева
4 Ёпрст
 
18.07.17
10:08
* в клюшках
5 vadim777
 
18.07.17
10:18
(1)(2) Проблема в том, что и по Кратности также нужно делать цикл. Если сделать так-же, как и для Курса, то не затрется-ли в приемнике значение Курса?
Кратности=СоздатьОбъект("Периодический");
Кратности.ИспользоватьОбъект("Кратность",Источник);
Кратности.ВыбратьЗначения();
Пока Кратности.ПолучитьЗначение() = 1 Цикл
        сз = СоздатьОбъект("СписокЗначений");
    сз.ДобавитьЗначение(1, "Активность");
    сз.ДобавитьЗначение(Кратности.ДатаЗнач,"Период");
    сз.ДобавитьЗначение(Источник, "Валюта");
    сз.ДобавитьЗначение(Кратности.Значение, "Кратность");
    ВыгрузитьПоПравилу(сз, , , , "КурсыВалют");
КонецЦикла;
6 vadim777
 
18.07.17
19:02
Решил по другому (подсмотрел в стандартных правилах):
Регистр сведений, КурсыВалют. В ПКС, для каждого реквизита приемника, в событии Перед выгрузкой, указал:
Валюта: Значение = Источник; Правило конвертации: Валюты
Кратность: Значение = Источник.Кратность.Получить(ТекущаяДата());
Курс: Значение = Источник.Курс.Получить(ТекущаяДата());
Активность: Значение = 1;
Период: Значение = ТекущаяДата();
В ПКО Валюты, в событии После выгрузки:
ВыгрузитьПоПравилу(Источник,,,, "КурсыВалют");

Недостаток: выгружаются не все курсы и кратности, а только одно последнее значение.