Имя: Пароль:
1C
1C 7.7
v7: $ПоследнееЗначение в Классе ПрямойЗапрос 1с++ возвращает значение на предыдущую
0 daviels
 
26.11.15
10:20
Доброго дня.

столкнулся вот с какой проблемой:

Использую в запросе Виртуальное значение $ПоследнееЗначение, пытаюсь получить цену товара на дату документа, а в выборке возвращается значение на предыдущую дату. Версия 1cpp 3.2.4.1.

$ПоследнееЗначение.Цены.Цена(СпрЦены.текЭлемент,ВыборкаПоступлений.ДатаДокумента) КАК ЦенаБезнал

Возвращается значение на предыдущую дату, т.е. например цена на 01.09.15 – 101 рубль, а возвращается значение 105 р, действующая до 01.09.15

Такая же история была и с курсом валют:
$ПоследнееЗначение.Валюты.Курс($СпрВалюты.ТекущийЭлемент,ВыборкаПоступлений.ДатаДокумента) КАК КурсБезнал,

НО вопрос решился подстановкой дополнительного параметра:
$ПоследнееЗначение.Валюты.Курс($СпрВалюты.ТекущийЭлемент,ВыборкаПоступлений.ДатаДокумента,86399) КАК КурсБезнал,

Где 86399 – число секунд за день, таким образом я подумал что получаю значение на конец дня

ОДНАКО в случае с получением цены это не работает

вот полный код запроса:

ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ВыборкаПоступлений_1.Документ КАК [Документ $Документ.ПоступлениеТоваров]
    |    ,ВыборкаПоступлений_1.Товар КАК [Товар $Справочник.Номенклатура]
    |    ,ВыборкаПоступлений_1.ТипЦенБезнал КАК [ТипЦенБезнал $Справочник.ТипыЦен]
    |    ,ВыборкаПоступлений_1.ЭлементЦена КАК [ЭлементЦена $Справочник.Цены]
    |    ,$ПоследнееЗначение.Цены.Валюта(ВыборкаПоступлений_1.ЭлементЦена,ВыборкаПоступлений_1.ДатаДокумента,86399) КАК [ВалютаБезнал $Справочник.Валюты]
    |    ,$ПоследнееЗначение.Цены.Цена(ВыборкаПоступлений_1.ЭлементЦена,ВыборкаПоступлений_1.ДатаДокумента,86399) КАК ЦенаБезнал
    |ИЗ
    |    (ВЫБРАТЬ
    |        ВыборкаПоступлений.Документ КАК Документ  
    |        ,ВыборкаПоступлений.ДатаДокумента КАК ДатаДокумента
    |        ,ВыборкаПоступлений.Товар КАК Товар
    |        ,ВыборкаПоступлений.ТипЦенБезнал КАК ТипЦенБезнал
    |        ,СпрЦены.текЭлемент КАК ЭлементЦена
    |        ,ВЫБОР
    |            КОГДА ВыборкаПоступлений.Представитель = :ОтборНачальникОтдела
    |            ТОГДА ВыборкаПоступлений.Нетто
    |            ИНАЧЕ 0
    |        КОНЕЦ КАК НеттоНачальникОтдела
    |        ,ВЫБОР
    |            КОГДА ВыборкаПоступлений.Представитель В (ВЫБРАТЬ val ИЗ #ОтборСотрудникиОтдела)
    |            ТОГДА ВыборкаПоступлений.Нетто
    |            ИНАЧЕ 0
    |        КОНЕЦ КАК НеттоСотрудникиОтдела
    |    ИЗ
    |        #vt_1 КАК ВыборкаПоступлений      
    |        ЛЕВОЕ СОЕДИНЕНИЕ
    |            #vt_price КАК СпрЦены
    |        ПО
    |            (СпрЦены.Товар = ВыборкаПоступлений.Товар)
    |            И
    |            (СпрЦены.ТипЦен = ВыборкаПоступлений.ТипЦенБезнал)
    |        
    |    ГДЕ
    |        (ВыборкаПоступлений.ВидНачисления = :ОтборВидНачисления)
    |    ) КАК ВыборкаПоступлений_1";  

Помогите разобраться пожалуйста, что то я явно делаю не так...
1 Ёпрст
 
26.11.15
10:28
(0)

Время=(ЧЧ*3600+ММ*60+СС)*10000;
2 ЧеловекДуши
 
26.11.15
10:35
(0) Попробуй Включать отладку у 1С++. Ты начнешь видеть запрос в таком виде, в котором его получает SQL :)
3 ЧеловекДуши
 
26.11.15
10:36
Далее дело техники, отладить такой запросик на самом SQL менеджере или QA :)
4 daviels
 
26.11.15
10:37
(1) Ёпрст как обычно оказался прав на все 100%

вопрос закрыт. Спасибо.
5 trad
 
26.11.15
10:42
(4) а какое значение для времени применил?
6 daviels
 
26.11.15
10:45
(5) 863990000
7 trad
 
26.11.15
10:46
если значение будет установлено в последнюю секунду дня, то  опять будет проблема
нужно 864000000
8 daviels
 
26.11.15
10:52
(7) да, думаю это более корректное значение.
Спасибо.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн