|
|
Выбор записи из регистра сведений. |
☑ |
|
0
Ly_Alena
14.09.16
✎
05:18
|
Доброе утро! Какой-то тупняк!
Нужно выбрать из регистра сведений последнюю запись удовлетворяющую усовиям: регистратор документ поступления, контрагент регистратора не ИП "Пупкин" и период меньше 01.09.
Если брать РС срез последних, и последняя запись с контрагентом ИП Пупкин - то он возвращает пусто.
Т.е. с документом регистратором и с датой прокатывает - он отбирает как положено, но как только дело касается контрагента - выводит пусто.
Текст запроса:
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Период КАК ДатаПоследнегоПоступления,
ЦеныНоменклатурыСрезПоследних.Регистратор.Контрагент КАК ПоследнийПоставщик,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.Регистратор
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура
И ЦеныНоменклатурыСрезПоследних.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
И НЕ ЦеныНоменклатурыСрезПоследних.Регистратор.Контрагент = &Организация
|
|
|
1
AneJIbcuH
14.09.16
✎
05:49
|
Доброе утро!
"ЦеныНоменклатурыСрезПоследних.Регистратор.Контрагент КАК ПоследнийПоставщик"
Явно же Регистратор - составной тип, значит так в запросе писать нельзя!
"РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура"
И как такое писать можно?? Вы только учитесь?
По делу: Может все цены только по контрагенту ИП "Пупкин"?
|
|
|
2
Ly_Alena
14.09.16
✎
06:09
|
(1) А как можно писать? Да регистратор составной. Цены не только по Пупкину.
|
|
|
3
Ly_Alena
14.09.16
✎
06:11
|
(2) если не срез последних брать, просто РС - то регистратор.контрагент берет. По мне если в регистраторе нет контрагента, то запрос 0. Проблема не ясна с составным регистратором.
|
|
|
4
AneJIbcuH
14.09.16
✎
06:12
|
А так задачка немного сложнее, вам необходимо получить список периодов с ценами (по вашим условиям) и я бы сделал это так:
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Период КАК ДатаПоследнегоПоступления,
ВЫРАЗИТЬ(ЦеныНоменклатурыСрезПоследних.Регистратор Как Документ.ПоступлениеТоваровУслуг).Контрагент КАК ПоследнийПоставщик,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.Регистратор
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период,Номенклатура = &Номенклатура И ВЫРАЗИТЬ(Регистратор Как Документ.ПоступлениеТоваровУслуг).Контрагент <> &Организация) КАК ЦеныНоменклатурыСрезПоследних
Помещаем во временную таблицу, следующим пакетом из этой ВТ получим максимальный период, опять помещаем в ВТ и окончательный пакет: Левое соединение второй ВТ с первой ВТ по периоду.
|
|
|
5
Ly_Alena
14.09.16
✎
06:29
|
(4) Попробую - спасибо!
|
|
|
6
Ly_Alena
14.09.16
✎
06:34
|
(4) Это просто божественно! Спасибо, все работает как надо.
|
|
|
7
AneJIbcuH
14.09.16
✎
06:40
|
Надеюсь ошибки написания запроса на будущее свои учли ;)
|
|
|
8
Ly_Alena
14.09.16
✎
06:43
|
(7) Учту
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший