Группа: Пользователи
Сообщений: 91
Спасибо сказали: 1 раз
Рейтинг: 0
Конфигурация УТ для Украины 2.3.24, платформа 8.3. Вопрос как запросом получить товары у которых менялась цена и получить последнюю и предпоследнюю цену на определенную дату.
Группа: Местный
Сообщений: 372
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 66.3
Pashaboston @ Вчера, 14:15
,
Вы уже нашли "срез последних на каждую дату"?
Пока я не перед компьютером, опишу принцип:
1. Выбрать список цен по заданной номенклатуре из обычной таблицы (не из виртуальных СрезПоследних) и поместить во временную таблицу. Она нам пригодится не раз. Колонки первой таблицы: Номенклатура, Период, Цена
2. Затем соединять таблицу товаров с таблицей цен с максимальной датой (Период <= ДатаПоискаЦен) и поместить во вторую временную таблицу. Получится таблица с колонками: Номенклатура, Цена1. Период1 - это последние изменения цен на указанную дату.
3. Со второй временной таблицей снова соединить первую таблицу точно таким же способом по условию (Период первой таблицы < Период1 из второй таблицы) Полученную цену и дату предпоследнего изменения поместить в колонки Цена2 и Период2.
Позже добавлю текст запроса
// может, тему перенести в форум для программистов?
Группа: Местный
Сообщений: 372
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 66.3
Смотрите, пользуйтесь.
ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ втНоменклатура ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Родитель = &Родитель ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЦеныНоменклатуры.Период КАК Период, ЦеныНоменклатуры.Активность, ЦеныНоменклатуры.ТипЦен, ЦеныНоменклатуры.Номенклатура КАК Номенклатура, ЦеныНоменклатуры.Цена КАК Цена ПОМЕСТИТЬ втЦеныНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ГДЕ ЦеныНоменклатуры.Период <= &ДатаПолученияЦен И ЦеныНоменклатуры.Активность И ЦеныНоменклатуры.ТипЦен = &ТипЦен И ЦеныНоменклатуры.Номенклатура В (ВЫБРАТЬ втНоменклатура.Номенклатура ИЗ втНоменклатура КАК втНоменклатура) ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втНоменклатура.Номенклатура КАК Номенклатура, ЕСТЬNULL(втЦеныНоменклатуры.Цена, 0) КАК ПоследняяЦена, ЕСТЬNULL(втЦеныНоменклатуры.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаПосленейЦены ПОМЕСТИТЬ втПоследняяЦена ИЗ втНоменклатура КАК втНоменклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЦеныНоменклатуры КАК втЦеныНоменклатуры ПО втНоменклатура.Номенклатура = втЦеныНоменклатуры.Номенклатура И (втЦеныНоменклатуры.Период В (ВЫБРАТЬ ПЕРВЫЕ 1 втЦеныНоменклатуры.Период КАК Период ИЗ втЦеныНоменклатуры КАК втЦеныНоменклатуры ГДЕ втЦеныНоменклатуры.Период <= &ДатаПолученияЦен И втЦеныНоменклатуры.Номенклатура = втНоменклатура.Номенклатура УПОРЯДОЧИТЬ ПО Период УБЫВ)) ;
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втПоследняяЦена.Номенклатура КАК Номенклатура, втПоследняяЦена.ПоследняяЦена КАК ПоследняяЦена, втПоследняяЦена.ДатаПосленейЦены КАК ДатаПосленейЦены, ЕСТЬNULL(втЦеныНоменклатуры.Цена, 0) КАК ПредпоследняяЦена, ЕСТЬNULL(втЦеныНоменклатуры.Период, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) КАК ДатаПредпоследнейЦены ИЗ втПоследняяЦена КАК втПоследняяЦена ЛЕВОЕ СОЕДИНЕНИЕ втЦеныНоменклатуры КАК втЦеныНоменклатуры ПО втПоследняяЦена.Номенклатура = втЦеныНоменклатуры.Номенклатура И (втЦеныНоменклатуры.Период В (ВЫБРАТЬ ПЕРВЫЕ 1 втЦеныНоменклатуры.Период КАК Период ИЗ втЦеныНоменклатуры КАК втЦеныНоменклатуры ГДЕ втЦеныНоменклатуры.Период < втПоследняяЦена.ДатаПосленейЦены И втЦеныНоменклатуры.Номенклатура = втПоследняяЦена.Номенклатура УПОРЯДОЧИТЬ ПО Период УБЫВ))
УПОРЯДОЧИТЬ ПО Номенклатура, ДатаПосленейЦены, ДатаПредпоследнейЦены АВТОУПОРЯДОЧИВАНИЕ
В результате будет таблица с последними двумя ценами номенклатуры с указанием дат установки цены.
Если надо сгруппировать по товару, то просто в последнем подзапросе таблицы не соединять, а объединять и потом сгруппировать по номенклатуре.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!