Имя: Пароль:
1C
1С v8
Динамический список в карточке товара
,
0 Roma1314704
 
24.05.18
00:39
Задача вывести в карточку товара значения цен с РегистраСведений
Добавляю в карточку товара Реквизит  динамический список в него
добавляю запрос

ВЫБРАТЬ
    Товар.Ссылка КАК Ссылка,
    Цены.ЦенаЗакупочнаяДоллар,
    Цены.ЦенаОптовая,
    Цены.ЦенаПродажи
    
ИЗ
    Справочник.Номенклатура КАК Товар
    ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
    ПО (Товар.Ссылка = Цены.Номенклатура)
    ГДЕ
    Ссылка = Цены.Номенклатура    

В итоге получаю список всех товаров со справочника
Как получить значения цен только 1 товара (текущего)?
Что не так?
1 Злопчинский
 
24.05.18
00:40
(0) где фильтр по текущей номенклатуре на список цен?
2 Roma1314704
 
24.05.18
00:41
Не могу понять что не так?
3 Roma1314704
 
24.05.18
00:44
С таблице получаю весь список товаров со справочника номенклатура , а нужно получить значения только текущей карточки
4 Злопчинский
 
24.05.18
00:49
я не спец по запросам но нафига здесь вообще ВЕСЬ СПРАВОЧНИК номенклатуры левым соединением коннектится с ценами?
почему нельзя просто список цен отфильтровать по условию типа
Выбрать Цены
где Цены.Номенклатура = ТекущаяСсылкаОбъектаКарточкиТовара

???
5 Roma1314704
 
24.05.18
00:57
ТекущаяСсылкаОбъектаКарточкиТовара
как все таки правильно  ссылка на объект?
6 Злопчинский
 
24.05.18
00:58
(5) а я откуда знаю как правильно? ты восьмерчоник - ты и должен знать.
я - мохнатый клюшечник
7 Roma1314704
 
24.05.18
01:20
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.ЦенаЗакупочная КАК ЦенаЗакупочная,
    ЦеныНоменклатурыСрезПоследних.ЦенаПродажи КАК ЦенаПродажи
    
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
    ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура


+ ПриСозданииНаСервере еще нужно прописать
Цены.Параметры.УстановитьЗначениеПараметра("Номенклатура",Объект.Ссылка);

Иначе не работает
8 Roma1314704
 
24.05.18
01:21
если это не правильный вариант - поправьте пож.
9 Eiffil123
 
24.05.18
01:54
(7) Почти всё верно, но нужно фильтр по номенклатуре устанавливать в параметрах виртуальной таблицы, а не в условии ГДЕ:
ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних

При этом срез последних сформируется только по номенклатуре. А если делать фильтр в условии "ГДЕ", тогда сначала будет получена таблица среза последних по всей номенклатуре, потом на нее наложится условие (хотя может sql это как-то и оптимизирует, но полагаться на это не надо).
10 Сияющий в темноте
 
24.05.18
09:42
У вас так часто цены меняются что нужно базу динамическим списком теребить?простой запрос и кнопка обновить не спасают?особенно,если хочется цены на дату,а динамику цен лучше отчетом и графически
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший