Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 05:55

УТ 11.1 Получить предпоследнюю цену

Автор roofless, 06 мая 2015, 13:33

0 Пользователей и 1 гость просматривают эту тему.

roofless

Собственно, исходный запрос:
ВЫБРАТЬ
ИсходныеДанные.Номенклатура КАК Номенклатура,
ИсходныеДанные.Характеристика КАК Характеристика,
ИсходныеДанные.Упаковка КАК Упаковка,
ИсходныеДанные.Количество КАК Количество,
ИсходныеДанные.Порядок КАК Порядок,
"КоличествоЦенников" КАК КоличествоЦенниковДляПечати,
"КоличествоЭтикеток" КАК КоличествоЭтикетокДляПечати,
"ШаблонЭтикетки" КАК ШаблонЭтикеткиДляПечати,
"ШаблонЦенника" КАК ШаблонЦенникаДляПечати
ПОМЕСТИТЬ ИсходныеДанные
ИЗ

(ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика, ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) КАК Упаковка, 0 КАК Порядок, 0 КАК Количество) КАК ИсходныеДанные

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Упаковка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Штрихкоды.Номенклатура КАК Номенклатура,
Штрихкоды.Характеристика КАК Характеристика,
Штрихкоды.Упаковка КАК Упаковка,
МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод
ПОМЕСТИТЬ ШтрихкодыНоменклатуры
ИЗ
РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
ГДЕ
(Штрихкоды.Номенклатура, Штрихкоды.Характеристика, Штрихкоды.Упаковка) В
(ВЫБРАТЬ
ИсходныеДанные.Номенклатура,
ИсходныеДанные.Характеристика,
ИсходныеДанные.Упаковка
ИЗ
ИсходныеДанные)
{ГДЕ
Штрихкоды.Номенклатура.*,
Штрихкоды.Характеристика.*,
Штрихкоды.Упаковка.*}

СГРУППИРОВАТЬ ПО
Штрихкоды.Номенклатура,
Штрихкоды.Характеристика,
Штрихкоды.Упаковка

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Упаковка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ИсходныеДанныеПоследнийЗапрос.Порядок      КАК Порядок,
ИсходныеДанныеПоследнийЗапрос.Номенклатура КАК Номенклатура,
ИсходныеДанныеПоследнийЗапрос.Характеристика КАК Характеристика,
ИсходныеДанныеПоследнийЗапрос.Упаковка КАК Упаковка,
ВЫБОР КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) Тогда
ИсходныеДанныеПоследнийЗапрос.Номенклатура.ЕдиницаИзмерения
ИНАЧЕ
ИсходныеДанныеПоследнийЗапрос.Упаковка
КОНЕЦ КАК УпаковкаЕдиницаИзмерения,
ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ВЫБОР КОГДА ИсходныеДанныеПоследнийЗапрос.Номенклатура.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая) ТОГДА Истина Иначе Ложь КОНЕЦ
ИНАЧЕ ВЫБОР КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая) ТОГДА Истина Иначе Ложь КОНЕЦ
КОНЕЦ КАК Весовой,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.Количество) КАК Количество,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.КоличествоЦенниковДляПечати) КАК КоличествоЦенниковДляПечати,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.КоличествоЭтикетокДляПечати) КАК КоличествоЭтикетокДляПечати,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.ШаблонЭтикеткиДляПечати) КАК ШаблонЭтикеткиДляПечати,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.ШаблонЦенникаДляПечати) КАК ШаблонЦенникаДляПечати,
МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод,
МАКСИМУМ(КодыТоваровПодключаемогоОборудованияOffline.Код) КАК КодПодключаемогоОборудованияOffline,
МАКСИМУМ(ВидыЦен.Ссылка) КАК ВидЦены,
МАКСИМУМ(Организации.Ссылка) КАК Организация,
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена,
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК ДатаПоследнегоИзмененияЦены,
МАКСИМУМ(ТоварыНаСкладахОстатки.ВНаличииОстаток) КАК ОстатокНаСкладе,
НоменклатураСегмента.Сегмент КАК Сегмент,
МАКСИМУМ(&ТекущееВремя) КАК ТекущееВремя,
МАКСИМУМ(Пользователи.Ссылка) КАК ТекущийПользователь
{ВЫБРАТЬ
Номенклатура.*,
Характеристика.*,
Упаковка.*,
УпаковкаЕдиницаИзмерения,
Весовой,
Количество,
КоличествоЦенниковДляПечати,
КоличествоЭтикетокДляПечати,
ШаблонЦенникаДляПечати,
ШаблонЭтикеткиДляПечати,
Штрихкод,
КодПодключаемогоОборудованияOffline,
ВидЦены.*,
Организация.*,
Цена,
ДатаПоследнегоИзмененияЦены,
ОстатокНаСкладе,
Сегмент.*,
ТекущееВремя,
ТекущийПользователь.*}
ИЗ
ИсходныеДанные КАК ИсходныеДанныеПоследнийЗапрос
{ЛЕВОЕ СОЕДИНЕНИЕ ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = ШтрихкодыНоменклатуры.Характеристика
И ИсходныеДанныеПоследнийЗапрос.Упаковка = ШтрихкодыНоменклатуры.Упаковка}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline КАК КодыТоваровПодключаемогоОборудованияOffline
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = КодыТоваровПодключаемогоОборудованияOffline.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = КодыТоваровПодключаемогоОборудованияOffline.Характеристика
И ИсходныеДанныеПоследнийЗапрос.Упаковка = КодыТоваровПодключаемогоОборудованияOffline.Упаковка
И &ПравилоОбмена = КодыТоваровПодключаемогоОборудованияOffline.ПравилоОбмена}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), ВидЦены = &ВидЦены {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК ЦеныНоменклатурыСрезПоследних
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = НоменклатураСегмента.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = НоменклатураСегмента.Характеристика}
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
ПО (ВидыЦен.Ссылка = &ВидЦены)}
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
ПО (Организации.Ссылка = &Организация)}
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
ПО (Пользователи.Ссылка = &ТекущийПользователь)}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК ТоварыНаСкладахОстатки
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = ТоварыНаСкладахОстатки.Характеристика
И (ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка))}
{ГДЕ
ИсходныеДанныеПоследнийЗапрос.Номенклатура.* КАК Номенклатура,
ИсходныеДанныеПоследнийЗапрос.Характеристика.* КАК Характеристика,
ИсходныеДанныеПоследнийЗапрос.Упаковка.* КАК Упаковка,
ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
КодыТоваровПодключаемогоОборудованияOffline.Код КАК КодПодключаемогоОборудованияOffline,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Период КАК ДатаПоследнегоИзмененияЦены,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ОстатокНаСкладе,
ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ВЫБОР КОГДА ИсходныеДанныеПоследнийЗапрос.Номенклатура.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая) ТОГДА Истина Иначе Ложь КОНЕЦ
ИНАЧЕ ВЫБОР КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая) ТОГДА Истина Иначе Ложь КОНЕЦ
КОНЕЦ КАК Весовой,
НоменклатураСегмента.Сегмент.* КАК Сегмент}

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


Пытаюсь получить предпоследнюю цену, написал вот так:
ВЫБРАТЬ
ИсходныеДанные.Номенклатура КАК Номенклатура,
ИсходныеДанные.Характеристика КАК Характеристика,
ИсходныеДанные.Упаковка КАК Упаковка,
ИсходныеДанные.Количество КАК Количество,
ИсходныеДанные.Порядок КАК Порядок,
"КоличествоЦенников" КАК КоличествоЦенниковДляПечати,
"КоличествоЭтикеток" КАК КоличествоЭтикетокДляПечати,
"ШаблонЭтикетки" КАК ШаблонЭтикеткиДляПечати,
"ШаблонЦенника" КАК ШаблонЦенникаДляПечати
ПОМЕСТИТЬ ИсходныеДанные
ИЗ
(ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура,
ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика,
ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка) КАК Упаковка,
0 КАК Порядок,
0 КАК Количество) КАК ИсходныеДанные

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Упаковка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Штрихкоды.Номенклатура КАК Номенклатура,
Штрихкоды.Характеристика КАК Характеристика,
Штрихкоды.Упаковка КАК Упаковка,
МАКСИМУМ(Штрихкоды.Штрихкод) КАК Штрихкод
ПОМЕСТИТЬ ШтрихкодыНоменклатуры
ИЗ
РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
ГДЕ
(Штрихкоды.Номенклатура, Штрихкоды.Характеристика, Штрихкоды.Упаковка) В
(ВЫБРАТЬ
ИсходныеДанные.Номенклатура,
ИсходныеДанные.Характеристика,
ИсходныеДанные.Упаковка
ИЗ
ИсходныеДанные)
{ГДЕ
Штрихкоды.Номенклатура.*,
Штрихкоды.Характеристика.*,
Штрихкоды.Упаковка.*}

СГРУППИРОВАТЬ ПО
Штрихкоды.Номенклатура,
Штрихкоды.Характеристика,
Штрихкоды.Упаковка

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Упаковка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ИсходныеДанныеПоследнийЗапрос.Порядок КАК Порядок,
ИсходныеДанныеПоследнийЗапрос.Номенклатура КАК Номенклатура,
ИсходныеДанныеПоследнийЗапрос.Характеристика КАК Характеристика,
ИсходныеДанныеПоследнийЗапрос.Упаковка КАК Упаковка,
ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ИсходныеДанныеПоследнийЗапрос.Номенклатура.ЕдиницаИзмерения
ИНАЧЕ ИсходныеДанныеПоследнийЗапрос.Упаковка
КОНЕЦ КАК УпаковкаЕдиницаИзмерения,
ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Номенклатура.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ КАК Весовой,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.Количество) КАК Количество,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.КоличествоЦенниковДляПечати) КАК КоличествоЦенниковДляПечати,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.КоличествоЭтикетокДляПечати) КАК КоличествоЭтикетокДляПечати,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.ШаблонЭтикеткиДляПечати) КАК ШаблонЭтикеткиДляПечати,
МАКСИМУМ(ИсходныеДанныеПоследнийЗапрос.ШаблонЦенникаДляПечати) КАК ШаблонЦенникаДляПечати,
МАКСИМУМ(ШтрихкодыНоменклатуры.Штрихкод) КАК Штрихкод,
МАКСИМУМ(КодыТоваровПодключаемогоОборудованияOffline.Код) КАК КодПодключаемогоОборудованияOffline,
МАКСИМУМ(ВидыЦен.Ссылка) КАК ВидЦены,
МАКСИМУМ(Организации.Ссылка) КАК Организация,
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена,
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Период) КАК ДатаПоследнегоИзмененияЦены,
МАКСИМУМ(ТоварыНаСкладахОстатки.ВНаличииОстаток) КАК ОстатокНаСкладе,
НоменклатураСегмента.Сегмент КАК Сегмент,
МАКСИМУМ(&ТекущееВремя) КАК ТекущееВремя,
МАКСИМУМ(Пользователи.Ссылка) КАК ТекущийПользователь,
ЦеныНоменклатуры.Цена КАК СтараяЦена
{ВЫБРАТЬ
Номенклатура.*,
Характеристика.*,
Упаковка.*,
УпаковкаЕдиницаИзмерения,
Весовой,
Количество,
КоличествоЦенниковДляПечати,
КоличествоЭтикетокДляПечати,
ШаблонЦенникаДляПечати,
ШаблонЭтикеткиДляПечати,
Штрихкод,
КодПодключаемогоОборудованияOffline,
ВидЦены.*,
Организация.*,
Цена,
ДатаПоследнегоИзмененияЦены,
ОстатокНаСкладе,
Сегмент.*,
ТекущееВремя,
ТекущийПользователь.*,
СтараяЦена}
ИЗ
ИсходныеДанные КАК ИсходныеДанныеПоследнийЗапрос
{ЛЕВОЕ СОЕДИНЕНИЕ ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = ШтрихкодыНоменклатуры.Характеристика
И ИсходныеДанныеПоследнийЗапрос.Упаковка = ШтрихкодыНоменклатуры.Упаковка}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline КАК КодыТоваровПодключаемогоОборудованияOffline
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = КодыТоваровПодключаемогоОборудованияOffline.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = КодыТоваровПодключаемогоОборудованияOffline.Характеристика
И ИсходныеДанныеПоследнийЗапрос.Упаковка = КодыТоваровПодключаемогоОборудованияOffline.Упаковка
И (&ПравилоОбмена = КодыТоваровПодключаемогоОборудованияOffline.ПравилоОбмена)}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), ВидЦены = &ВидЦены {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК ЦеныНоменклатурыСрезПоследних

ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ЦеныНоменклатурыСрезПоследних.Период > ЦеныНоменклатуры.Период
И (ЦеныНоменклатуры.ВидЦены = &ВидЦены)

ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = НоменклатураСегмента.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = НоменклатураСегмента.Характеристика}
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЦен КАК ВидыЦен
ПО (ВидыЦен.Ссылка = &ВидЦены)}
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
ПО (Организации.Ссылка = &Организация)}
{ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
ПО (Пользователи.Ссылка = &ТекущийПользователь)}
{ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика}) КАК ТоварыНаСкладахОстатки
ПО ИсходныеДанныеПоследнийЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
И ИсходныеДанныеПоследнийЗапрос.Характеристика = ТоварыНаСкладахОстатки.Характеристика
И (ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка))}
{ГДЕ
ИсходныеДанныеПоследнийЗапрос.Номенклатура.* КАК Номенклатура,
ИсходныеДанныеПоследнийЗапрос.Характеристика.* КАК Характеристика,
ИсходныеДанныеПоследнийЗапрос.Упаковка.* КАК Упаковка,
ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
КодыТоваровПодключаемогоОборудованияOffline.Код КАК КодПодключаемогоОборудованияOffline,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Период КАК ДатаПоследнегоИзмененияЦены,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ОстатокНаСкладе,
(ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ТОГДА ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Номенклатура.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА ИсходныеДанныеПоследнийЗапрос.Упаковка.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
КОНЕЦ) КАК Весовой,
НоменклатураСегмента.Сегмент.* КАК Сегмент}

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

УПОРЯДОЧИТЬ ПО
ИсходныеДанныеПоследнийЗапрос.Порядок


но запрос возвращает все неодинаковые ранее установленные цены

Rasty

Берем последние цены, потом по дате сравниваем и ищем самую ближайшую
Добавлено: 06 мая 2015, 14:24


Или берешь все цены, сортируешь по дате и берешь значение n-2, где n - кол-во
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

roofless

Цитата: Rasty от 06 мая 2015, 14:21
Берем последние цены, потом по дате сравниваем и ищем самую ближайшую
Добавлено: 06 мая 2015, 14:24


Или берешь все цены, сортируешь по дате и берешь значение n-2, где n - кол-во
отдельным запросом получается, а в рамках допила этого стандартного запроса не выходит. либо могу получить только 1 номенклатуру, либо все номенклатуру + ранее установленные цены

Rasty

Зашибень цикл, установит параметр запроса номенклатура, и записывай в ТЗ че та типа

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Цена");
НоваяСтрока = ТЗ.Добавить();
Запрос.текст =
"Тут твой текст"
Для каждого Стр из ТвоейТЧОткудаБерешьНомеклатуру Цикл
    Запрос.УстановитьПараметр("ИмяПараметра",Стр.Номенклатура);
    Выборка = Запрос.Выполнить().Выбрать();
    Результ = Выборка.Получить(Выборка.Количество()-2);   
    НоваяСтрока.Номенклатура = Стр.Номенклатура;
    НоваяСтрока.Цена = Результ.Цена;
КонецЦикла;

Это полное извращение, но все же
Можно еще вложенный запрос, но это очень долго объяснять       
Добавлено: 09 мая 2015, 10:53


Бдин, только НоваяСтрока=ТЗ.Добавить() в цикл запихнуть
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

nemox

А конструкция ВЫБРАТЬ ПЕРВЫЕ 1 не подойдет?

roofless

Цитата: nemox от 10 мая 2015, 13:22
А конструкция ВЫБРАТЬ ПЕРВЫЕ 1 не подойдет?
в таком случае получу только одну номенклатуру

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск