Имя: Пароль:
1C
1С v8
Получить последнюю цену номенклатуры контрагента
,
0 Lancer666
 
05.01.13
01:58
Здравствуйте, уважаемые специалисты. Проблема такая: необходимо получить последнюю цену, также дату и контрагента закупа номенклатуры (конфигурация УПП). Эта информация хранится в регистре ЦеныНоменклатурыКонтрагентов. Я одним вложенным запросом получил Срез последних из этого регистра, сделал группировку по номенклатуре, а период получил максимальный. Потом соединил тот же регистр срез последних с подзапросом по номенклатуре и периоду (запрос привожу ниже). Всё было бы хорошо, но если одна и таже номенклатура имеет напривет два поступления от 30.11.12 23.59.59 от разных контрагентов и соответственно 2 записи с этим периодом в регистре, то в результате номенклатура задваивается, подскажите как этого можно избежать, учитывая, что если есть два поступления одним максимальным периодом, взять можно любой из них..
Мой запрос:
ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Период КАК Период,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.Владелец КАК Контрагент
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ТекДата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ТекДата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних

СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК МаксПериод
ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = МаксПериод.Период
И ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = МаксПериод.Номенклатура
1 1C-band
 
05.01.13
02:13
2 Lancer666
 
05.01.13
02:41
Спасибо, но если честно, не очень понял, как мне  может помочь эта статья.
3 Нуф-Нуф
 
05.01.13
04:11
Сгруппируй с максимумом по контрагенту, будь мужиком, блеать!
4 Lancer666
 
06.01.13
01:55
Всем спасибо за помощь. Решил вопрос с помощью следующего запроса:
ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Период КАК Период,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.Владелец КАК Контрагент
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен) КАК ТипЦен
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период,
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних

СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК ГруппировкаНоменклатура
ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = ГруппировкаНоменклатура.Период
И ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = ГруппировкаНоменклатура.Номенклатура

СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК МаксПериод
ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура = МаксПериод.Номенклатура
И ЦеныНоменклатурыКонтрагентовСрезПоследних.Период = МаксПериод.Период
И ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен = МаксПериод.ТипЦен
5 Рэйв
 
06.01.13
02:00
Я бы сказал жестче.

Пригласи специалиста блеать!
6 Lancer666
 
06.01.13
02:31
Ну а что не так? Задача решена полностью. Для каждой номенклатуры найдена дата последней установленной цены с указанием контрагента и периода. В случае если на максимальный период выпадает не одна запись, то отбирается случайная запись (по максимальному контрагенту). Что не так то?
7 IOL
 
06.01.13
02:33
К ста, очень хорошие примеры в КЗ, для понимания, первый запрос: нужно выбрать разрез и максимумы, второй запрос, присоединить к максимум(период, дата), то, что есть. Все пристрастно обрежется.
8 IOL
 
06.01.13
02:34
(6) Если из периодического регистра, то да, а если из набора, к примеру, накладных - фиаско
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn