Здравствуйте ребята, хочу получить предпоследнее значение в регистре сведений.
Вроде все как по учебнику но на деле не получает то что Я хочу.
Подставляет вообще все что вагоны что есть а не предпоследний.
Вроде все как по учебнику но на деле не получает то что Я хочу.
ВЫБРАТЬ
НаливПродуктаНовСрезПоследних.Грязь КАК ГрязьПоследняя,
НаливПродуктаНовСрезПоследних.Грузополучатель,
НаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНовСрезПоследних.Вагон КАК Вагон,
НаливПродуктаНов.Грязь,
МАКСИМУМ(НаливПродуктаНов.Регистратор.Дата) КАК РегистраторСсылка
ИЗ
РегистрСведений.НаливПродуктаНов.СрезПоследних(&ДатаОтчета, Вагон.СобственникОКПО = 58300903) КАК НаливПродуктаНовСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ПО НаливПродуктаНовСрезПоследних.Вагон = НаливПродуктаНов.Вагон
И НаливПродуктаНовСрезПоследних.Период <> НаливПродуктаНов.Период
СГРУППИРОВАТЬ ПО
НаливПродуктаНов.Период,
НаливПродуктаНовСрезПоследних.Грязь,
НаливПродуктаНовСрезПоследних.Грузополучатель,
НаливПродуктаНовСрезПоследних.Вагон,
НаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНов.Грязь
УПОРЯДОЧИТЬ ПО
Вагон
ПоказатьПодставляет вообще все что вагоны что есть а не предпоследний.
Прикрепленные файлы:

По теме из базы знаний
Найденные решения
Попробуйте так:
По одному конкретному вагону в целях отладки надо попробовать.
Если не получается, то надо смотреть что второй запрос из пакета возвращает.
ВЫБРАТЬ
НаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНовСрезПоследних.Вагон,
НаливПродуктаНовСрезПоследних.Грязь,
НаливПродуктаНовСрезПоследних.Грузополучатель
ПОМЕСТИТЬ втПоследняя
ИЗ
РегистрСведений.НаливПродуктаНов.СрезПоследних(, Вагон=&ОдинКонкретныйВагон) КАК НаливПродуктаНовСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(НаливПродуктаНов.Период) КАК Период,
НаливПродуктаНов.Вагон
ПОМЕСТИТЬ втПредпоследняя
ИЗ
РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследняя КАК втПоследняя
ПО НаливПродуктаНов.Вагон = втПоследняя.Вагон
И НаливПродуктаНов.Период < втПоследняя.Период
СГРУППИРОВАТЬ ПО
НаливПродуктаНов.Вагон
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НаливПродуктаНов.Период,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь,
НаливПродуктаНов.Вагон
ИЗ
втПредпоследняя КАК втПредпоследняя
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ПО втПредпоследняя.Период = НаливПродуктаНов.Период
И втПредпоследняя.Вагон = НаливПродуктаНов.Вагон
ПоказатьПо одному конкретному вагону в целях отладки надо попробовать.
Если не получается, то надо смотреть что второй запрос из пакета возвращает.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Подход немножко не верный в использовании агрегатной функции МАКСИМУМ. Оно так не найти предпоследнее значение.
Но задача чертовски интересная.
Посмотрите вот такой пример нахождения предпоследнего значения цены. Это 100% работает на УТ-11. И можно принцип применить для Ваших вагонов:
Но задача чертовски интересная.
Посмотрите вот такой пример нахождения предпоследнего значения цены. Это 100% работает на УТ-11. И можно принцип применить для Ваших вагонов:
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Период КАК Период,
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ втПоследняяЦена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
&НаДату,
Номенклатура = &Номенклатура
И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
ЦеныНоменклатуры.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ втПредпоследняяЦена
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследняяЦена КАК втПоследняяЦена
ПО ЦеныНоменклатуры.Номенклатура = втПоследняяЦена.Номенклатура
И ЦеныНоменклатуры.Период < втПоследняяЦена.Период
СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.Период КАК Период,
ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
ЦеныНоменклатуры.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПредпоследняяЦена КАК втПредпоследняяЦена
ПО (втПредпоследняяЦена.Период = ЦеныНоменклатуры.Период
И втПредпоследняяЦена.Номенклатура = ЦеныНоменклатуры.Номенклатура)
ПоказатьВЫБРАТЬ
НаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНовСрезПоследних.Вагон,
НаливПродуктаНовСрезПоследних.Грязь,
НаливПродуктаНовСрезПоследних.Грузополучатель
ПОМЕСТИТЬ втПоследняя
ИЗ
РегистрСведений.НаливПродуктаНов.СрезПоследних(, Вагон.СобственникОКПО = 30006903) КАК НаливПродуктаНовСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(НаливПродуктаНов.Период) КАК Период,
НаливПродуктаНов.Вагон,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь
ПОМЕСТИТЬ втПредпоследняя
ИЗ
РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследняя КАК втПоследняя
ПО НаливПродуктаНов.Вагон = втПоследняя.Вагон
И НаливПродуктаНов.Период < втПоследняя.Период
СГРУППИРОВАТЬ ПО
НаливПродуктаНов.Вагон,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НаливПродуктаНов.Период,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь,
НаливПродуктаНов.Вагон
ИЗ
втПредпоследняя КАК втПредпоследняя
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ПО втПредпоследняя.Период = НаливПродуктаНов.Период
И втПредпоследняя.Вагон = НаливПродуктаНов.Вагон
ПоказатьВсе как по примеру а все ровно, вместо 1436 вагонов Более 6000
Попробуйте так:
По одному конкретному вагону в целях отладки надо попробовать.
Если не получается, то надо смотреть что второй запрос из пакета возвращает.
ВЫБРАТЬ
НаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНовСрезПоследних.Вагон,
НаливПродуктаНовСрезПоследних.Грязь,
НаливПродуктаНовСрезПоследних.Грузополучатель
ПОМЕСТИТЬ втПоследняя
ИЗ
РегистрСведений.НаливПродуктаНов.СрезПоследних(, Вагон=&ОдинКонкретныйВагон) КАК НаливПродуктаНовСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(НаливПродуктаНов.Период) КАК Период,
НаливПродуктаНов.Вагон
ПОМЕСТИТЬ втПредпоследняя
ИЗ
РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследняя КАК втПоследняя
ПО НаливПродуктаНов.Вагон = втПоследняя.Вагон
И НаливПродуктаНов.Период < втПоследняя.Период
СГРУППИРОВАТЬ ПО
НаливПродуктаНов.Вагон
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НаливПродуктаНов.Период,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь,
НаливПродуктаНов.Вагон
ИЗ
втПредпоследняя КАК втПредпоследняя
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ПО втПредпоследняя.Период = НаливПродуктаНов.Период
И втПредпоследняя.Вагон = НаливПродуктаНов.Вагон
ПоказатьПо одному конкретному вагону в целях отладки надо попробовать.
Если не получается, то надо смотреть что второй запрос из пакета возвращает.
ПО
(7)
По одному вагону сработало очень даже хорошо, все как и должно быть
(7)
ВЫБРАТЬ
НаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНовСрезПоследних.Вагон,
НаливПродуктаНовСрезПоследних.Грязь,
НаливПродуктаНовСрезПоследних.Грузополучатель
ПОМЕСТИТЬ втПоследняя
ИЗ
РегистрСведений.НаливПродуктаНов.СрезПоследних(, Вагон=&ОдинКонкретныйВагон) КАК НаливПродуктаНовСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(НаливПродуктаНов.Период) КАК Период,
НаливПродуктаНов.Вагон
ПОМЕСТИТЬ втПредпоследняя
ИЗ
РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследняя КАК втПоследняя
ПО НаливПродуктаНов.Вагон = втПоследняя.Вагон
И НаливПродуктаНов.Период < втПоследняя.Период
СГРУППИРОВАТЬ ПО
НаливПродуктаНов.Вагон
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НаливПродуктаНов.Период,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь,
НаливПродуктаНов.Вагон
ИЗ
втПредпоследняя КАК втПредпоследняя
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ПО втПредпоследняя.Период = НаливПродуктаНов.Период
И втПредпоследняя.Вагон = НаливПродуктаНов.Вагон
ПоказатьНаливПродуктаНовСрезПоследних.Период,
НаливПродуктаНовСрезПоследних.Вагон,
НаливПродуктаНовСрезПоследних.Грязь,
НаливПродуктаНовСрезПоследних.Грузополучатель
ПОМЕСТИТЬ втПоследняя
ИЗ
РегистрСведений.НаливПродуктаНов.СрезПоследних(, Вагон=&ОдинКонкретныйВагон) КАК НаливПродуктаНовСрезПоследних
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(НаливПродуктаНов.Период) КАК Период,
НаливПродуктаНов.Вагон
ПОМЕСТИТЬ втПредпоследняя
ИЗ
РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПоследняя КАК втПоследняя
ПО НаливПродуктаНов.Вагон = втПоследняя.Вагон
И НаливПродуктаНов.Период < втПоследняя.Период
СГРУППИРОВАТЬ ПО
НаливПродуктаНов.Вагон
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
НаливПродуктаНов.Период,
НаливПродуктаНов.Грузополучатель,
НаливПродуктаНов.Грязь,
НаливПродуктаНов.Вагон
ИЗ
втПредпоследняя КАК втПредпоследняя
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаливПродуктаНов КАК НаливПродуктаНов
ПО втПредпоследняя.Период = НаливПродуктаНов.Период
И втПредпоследняя.Вагон = НаливПродуктаНов.Вагон
По одному вагону сработало очень даже хорошо, все как и должно быть
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот