Имя: Пароль:
1C
1C 7.7
v7: Конвертация данных периодические реквизиты (цены номенклатуры) из 7.7 в 7.7
0 KSergey1C
 
03.10.16
08:07
Не получается выгрзить периодические значения справочников.

Создаю ПВД, помещаю измененные цены в ВыборкаДанных

Картинка: https://yadi.sk/i/IH_3lUKcw6zpV

Создал ПКС

Картинка: https://yadi.sk/i/DIt-b7Z-w6zpK

Для каждого ПКС описываю выбор значений из источника:

https://yadi.sk/i/Ps344Ea0w6zpT


В результате выгружается только ОДНА цена.


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


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


ЗНачения содержит только реквизит Источник, в ВходящиеДанные, ОбъектКоллекции - вроде как нет ничего.

Подскажите куда крестьянину деваться.
1 KSergey1C
 
03.10.16
09:07
код выборки данных:

ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Период");
ВыборкаДанных.НоваяКолонка("Валюта");
ВыборкаДанных.НоваяКолонка("Единица");
ВыборкаДанных.НоваяКолонка("Процент");
ВыборкаДанных.НоваяКолонка("ТипЦен");
ВыборкаДанных.НоваяКолонка("Цена");
ВыборкаДанных.НоваяКолонка("Владелец");



СправочникНомен = СоздатьОбъект("Справочник.Номенклатура");
СправочникНомен.ВыбратьЭлементы();
Пока СправочникНомен.ПолучитьЭлемент() > 0 Цикл


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

КоллекцияОбъектов = ВыборкаДанных;
2 KSergey1C
 
03.10.16
11:31
ап
3 Господин ПЖ
 
03.10.16
11:37
поставь "не запоминать" чего-то там...

КД по дефалту кэширует значение для убыстрения работы - отсюда глюк
4 KSergey1C
 
03.10.16
11:48
(3) Похоже оно. Вроде как работаеет, по позже проверю до конца.
Программист всегда исправляет последнюю ошибку.