Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получение текущей и будущей цены из регистра сведений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
vasilijgrafeev
Добрый день, есть регистр сведений - "Цены", нужно получить цену на сегодня, и цену если есть на будущее. Цена на сегодня Период=&Дата, цена на будущее Период>&Дата, но если цены на будущее нету то нету и записи, как получить 0 или любое значение -"цена на будущее не установлена" ?


 ! 

необходимо зарегистрироваться для просмотра ссылки: 4
 
sava1
а получаете цену как? запросом или через объект?
vasilijgrafeev
sava1 @ Сегодня, 11:07 необходимо зарегистрироваться для просмотра ссылки ,
Запросом
sava1
делаете выборку, если пустая - цена=0
или
в запросе добавляете заведомую "пустышку" с ценой=0 и через юнион олл свой запрос + сгруппировать - в результате цена будет обязательно (или 0 или установленная)
vasilijgrafeev
sava1 @ Сегодня, 11:16 необходимо зарегистрироваться для просмотра ссылки ,
sava1 @ Сегодня, 11:07 необходимо зарегистрироваться для просмотра ссылки ,
Запросом, в регистре есть Номенклатура, Период, Цена, текущая цена Период=&ТекущаяДата, будущая цена Период>&ТекущаяДата. Если в регистре есть запись с датой больше текущей все ок, но если записи нету то возникает проблема как заполнить поле. Таблица выгладит следующим образом Номенклатура-ЦенаТекушая-ЦенаНовая. Номенклатуру знаем, цену текущую знаем, а новую цену нужно проверять или заполнен регистр датой больше текущей. Если дата есть то установить цену, если даты нету поставить 0
sava1
запрос покажите
vasilijgrafeev
sava1 @ Сегодня, 11:25 необходимо зарегистрироваться для просмотра ссылки ,
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК ЦенаТекущая,
Цены.Цена КАК ЦенаНовая
ИЗ
РегистрСведений.Цены.СрезПоследних(&Дата, ) КАК ЦеныСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
ПО ЦеныСрезПоследних.Номенклатура = Цены.Номенклатура
ГДЕ
ЦеныСрезПоследних.Период <= &Дата
И ЦеныСрезПоследних.Номенклатура = &Номенклатура
И Цены.Период > &Дата
sava1
1. цены обе надо получать из виртуальной таблицы


ВЫБРАТЬ
Номенклатура,
максимум(IsNULL(ЦенаТекущая,0) ,
максимум(IsNULL(ЦенаНовая,0)
ИЗ (

ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК ЦенаТекущая,
0 КАК ЦенаНовая
ИЗ
РегистрСведений.Цены.СрезПоследних(&Дата, ) КАК ЦеныСрезПоследних

ОбЪЕдинить все

ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
0 КАК ЦенаТекущая,
ЦеныСрезПоследних.Цена КАК ЦенаНовая
ИЗ
РегистрСведений.Цены.СрезПоследних(&ДатаНовая, ) КАК ЦеныСрезПоследних

) как твр

СГРУППИРОВАТЬ ПО Номенклатура



типо так - ошибки могут быть из-за ручной печати

Номенклатуру и типЦена - в параметры вирт. таблицы
vasilijgrafeev
sava1 @ Вчера, 11:37 необходимо зарегистрироваться для просмотра ссылки ,
Вариант супер, спасибо, но есть минус. Нужно заполнять &ДатаНовая. Ваш вариант супер. Как поправить чтобы пока не наступит ДатаНовая устанавливался 0 на ЦенаНовая. Буду благодарен, только учусь. 32000000.gif
andr_andrey
Цитата(vasilijgrafeev @ 13.07.22, 11:14) необходимо зарегистрироваться для просмотра ссылки
Как поправить чтобы пока не наступит ДатаНовая устанавливался 0 на ЦенаНовая.

Що означає "пока не наступит ДатаНовая"?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.