Имя: Пароль:
1C
1C 7.7
v7: Периодические реквизиты
,
0 MistaEr
 
02.07.15
14:09
Здравствуйте!

ТиС. Нужно отобрать только те номенклатуры, у которых сегодня была изменена цена.
1 Абыр
 
02.07.15
14:14
прямой запрос к 1sconst с отбором по ID и дате
2 palpetrovich
 
02.07.15
14:15
(1) сурово :)
3 Alexor
 
02.07.15
14:16
(0) Отбирайте.
4 DCKiller
 
02.07.15
14:16
СпНом = СоздатьОбъект("СписокЗначений");

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

как-то так, если штатно.
5 Абыр
 
02.07.15
14:20
(4) Если штатно, то лучше использовать
НайтиЗначение(<Дата>,<Режим>)
если нужно за конкретную дату.
Если за период, то в ВыбратьЗначения() задавать границы
6 MistaEr
 
02.07.15
14:33
Это обходить каждую номенклатуру, да еще каждую подчиненную цену
7 Абыр
 
02.07.15
14:38
(6) тогда (1)
8 Mikeware
 
02.07.15
14:39
(6) тогда - как в (1)
9 MistaEr
 
02.07.15
14:45
Всем спасибо!
Вот так сделаю:
ТЗ = СоздатьОбъект("ТаблицаЗначений");  
    ТЗ.НоваяКолонка("Ном", "Справочник.Номенклатура");
    История = СоздатьОбъект("Периодический");
    Цены = СоздатьОбъект("Справочник.Цены");
    Спр = СоздатьОбъект("Справочник.Номенклатура");
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Цены.ИспользоватьВладельца(Спр.ТекущийЭлемент());    
        Цены.ВыбратьЭлементы();
        Пока Цены.ПолучитьЭлемент() = 1 Цикл
            История.ИспользоватьОбъект("Цена", Цены.ТекущийЭлемент());
            Если История.НайтиЗначение(ТекущаяДата(), 0) = 1 Тогда    
                ТЗ.НоваяСтрока();
                ТЗ.Ном = Спр.ТекущийЭлемент();
                Прервать;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;    
    ТЗ.Свернуть("Ном", "");
    ТЗ.Сортировать("Ном");
10 sapphire
 
02.07.15
14:49
(9) Ужастно, да и бестолково.
автор (1) обшолютна прав.
11 MistaEr
 
02.07.15
14:55
(10) Да понимаю что так, но для этого нужно регистрировать dll-ки разные, которые на это компе пойдут, на другом уже нет. Да и вникать надо в эти прямые запросы. Все не могу уговорить перейти на 8.
12 Ёпрст
 
02.07.15
15:14
(11) ничего не надо регистрировать, если че.
13 palpetrovich
 
02.07.15
15:20
(12) но иметь-то надо :)