Имя: Пароль:
1C
1С v8
Запрос.
0 lapatunec
 
15.11.11
16:34
8.1. Розница 1. Есть запрос:
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Номенклатура.Код КАК Код,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток,
   ТоварыНаСкладахОстатки.КоличествоОстаток * ТоварыНаСкладахОстатки.РозничнаяЦена / ТоварыНаСкладахОстатки.ЕдиницаИзмерения.Коэффициент КАК Сумма,
   ПоступлениеТоваровТовары.Ссылка,
   ПоступлениеТоваровТовары.Ссылка.Дата,
   ТоварыНаСкладахОстатки.РозничнаяЦена,
   ТоварыНаСкладахОстатки.Склад
   ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(
           &ДатаОтчета,
           Склад = &Склад
               И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки,
   Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ГДЕ
   (ПоступлениеТоваровТовары.Ссылка, ПоступлениеТоваровТовары.Ссылка.Дата,1) В
           (ВЫБРАТЬ ПЕРВЫЕ 1
               ПоступлениеТоваровТовары.Ссылка КАК Ссылка,
               ПоступлениеТоваровТовары.Ссылка.Дата КАК ДатаПост,
               ((ВЫБОР
                   КОГДА ПоступлениеТоваровТовары.Ссылка.Склад = ТоварыНаСкладахОстатки.Склад
                       ТОГДА 2
                   ИНАЧЕ 0
               КОНЕЦ) +
               (ВЫБОР
                   КОГДА ПоступлениеТоваровТовары.РозничнаяЦена = ТоварыНаСкладахОстатки.РозничнаяЦена
                       ТОГДА 1
                   ИНАЧЕ 0
               КОНЕЦ)) КАК Порядок
           ИЗ
               Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
           ГДЕ
               ПоступлениеТоваровТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
               И ПоступлениеТоваровТовары.Ссылка.Проведен
           УПОРЯДОЧИТЬ ПО
               Порядок УБЫВ,
               ДатаПост УБЫВ)

УПОРЯДОЧИТЬ ПО
   ТоварыНаСкладахОстатки.Номенклатура.Наименование
Смысл запроса: получить последний документ прихода. Т. к. товар может быть получен с другого склада перемещением и переоценен, в условии еще один запрос, в котором это учитывается и введено поле "порядок". Так вот, в таком виде запрос ничего не выдает. Если убираю конструкцию
(ВЫБОР
                   КОГДА ПоступлениеТоваровТовары.Ссылка.Склад = ТоварыНаСкладахОстатки.Склад
                       ТОГДА 2
                   ИНАЧЕ 0
               КОНЕЦ) +
, тогда запрос результат выдает. Только думает довольно долго. Что изменить в запросе, чтобы он заработал как надо?
1 Axel2009
 
15.11.11
16:43
я бы умер от кросс джоина такого
2 lapatunec
 
15.11.11
16:48
(1) Как по-вашему лучше написать?
3 Axel2009
 
15.11.11
16:52
ну хотябы
   РегистрНакопления.ТоварыНаСкладах.Остатки(
           &ДатаОтчета,
           Склад = &Склад
               И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ    Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ПО ТоварыНаСкладахОстатки.Склад = ПоступлениеТоваровТовары.Ссылка.Склад
И ТоварыНаСкладахОстатки.Номенклатура = ПоступлениеТоваровТовары.Номенклатура
2 + 2 = 3.9999999999999999999999999999999...