Прошу помощи с запросом

1. uan 21.03.17 11:37 Сейчас в теме
Всем здравия.
Дано:
Документ (например ЗаказКлиента)
Регистр сведений с регистратором (Например ОтслеживаниеПО)
Нужно:
На форму внешней обработки вывести динамический список с произвольным запросом.
Например:
ВЫБРАТЬ
	ДокументЗаказКлиента.Ссылка,
	ОтслежианиеПОСрезПоследних.Операция
ИЗ
	РегистрСведений.ОтслежианиеПО.СрезПоследних КАК ОтслежианиеПОСрезПоследних
		ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ДокументЗаказКлиента
		ПО ОтслежианиеПОСрезПоследних.Регистратор = ДокументЗаказКлиента.Ссылка

При таком запросе, на форме в столбце Операция - только самая последняя запись из регистра сведений для 1 документа.
Я так понимаю, что этот запрос выбирает срез последних записей не зависимо от регистратора.
А нужно, чтобы для каждого документа в динамическом списке выбиралась последняя запись из регистра.
Научите, пожалуйста, как это сделать?
По теме из базы знаний
Найденные решения
10. YanSergey 145 21.03.17 13:10 Сейчас в теме
Тебе нужно в измерения добавить ЗаказКлиента.
Тогда у тебя срез последних будет давать тебе правильные данные.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 21.03.17 11:49 Сейчас в теме
вот пример как получить первую, последнюю и предпоследнюю запсиь
ВЫБРАТЬ
    "Номенклатура1" КАК Номенклатура,
    "Состояние1" КАК Состояние,
    ДАТАВРЕМЯ(2016, 8, 1) КАК Период
ПОМЕСТИТЬ Регистр

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Номенклатура1",
    "Состояние2",
    ДАТАВРЕМЯ(2016, 8, 2)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Номенклатура1",
    "Состояние3",
    ДАТАВРЕМЯ(2016, 8, 3)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    "Номенклатура1",
    "Состояние4",
    ДАТАВРЕМЯ(2016, 8, 4)
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    регистр.Номенклатура,
    МИНИМУМ(регистр.Период) КАК ДатаПервогоСостояния
ПОМЕСТИТЬ ВТ_ПервоеСостояние
ИЗ
    Регистр КАК регистр

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

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    регистр.Номенклатура,
    МАКСИМУМ(регистр.Период) КАК ДатаПоследнегоСостояния
ПОМЕСТИТЬ ВТ_ПоследнееСостояние
ИЗ
    Регистр КАК регистр

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

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    Регистр.Номенклатура,
    МАКСИМУМ(Регистр.Период) КАК ДатаПредпоследнегоСостояния
ПОМЕСТИТЬ ВТ_ПредпоследнееСостояние
ИЗ
    Регистр КАК Регистр
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПоследнееСостояние КАК ВТ_ПоследнееСостояние
        ПО Регистр.Номенклатура = ВТ_ПоследнееСостояние.Номенклатура
            И Регистр.Период = ВТ_ПоследнееСостояние.ДатаПоследнегоСостояния
ГДЕ
    ВТ_ПоследнееСостояние.Номенклатура ЕСТЬ NULL 

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

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
    ВТ_ПервоеСостояние.Номенклатура,
    РегистрДляПервого.Состояние КАК ПервоеСостояние,
    РегистрДляПредпоследнего.Состояние КАК ПредпоследнееСостояние,
    РегистрДляПоследнего.Состояние КАК ПоследнееСостояние
ИЗ
    ВТ_ПервоеСостояние КАК ВТ_ПервоеСостояние
        ЛЕВОЕ СОЕДИНЕНИЕ Регистр КАК РегистрДляПервого
        ПО ВТ_ПервоеСостояние.Номенклатура = РегистрДляПервого.Номенклатура
            И ВТ_ПервоеСостояние.ДатаПервогоСостояния = РегистрДляПервого.Период
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПредпоследнееСостояние КАК ВТ_ПредпоследнееСостояние
        ПО ВТ_ПервоеСостояние.Номенклатура = ВТ_ПредпоследнееСостояние.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Регистр КАК РегистрДляПредпоследнего
        ПО (ВТ_ПредпоследнееСостояние.Номенклатура = РегистрДляПредпоследнего.Номенклатура)
            И (ВТ_ПредпоследнееСостояние.ДатаПредпоследнегоСостояния = РегистрДляПредпоследнего.Период)
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПоследнееСостояние КАК ВТ_ПоследнееСостояние
        ПО ВТ_ПервоеСостояние.Номенклатура = ВТ_ПоследнееСостояние.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Регистр КАК РегистрДляПоследнего
        ПО (ВТ_ПоследнееСостояние.Номенклатура = РегистрДляПоследнего.Номенклатура)
            И (ВТ_ПоследнееСостояние.ДатаПоследнегоСостояния = РегистрДляПоследнего.Период)
Показать
3. YanSergey 145 21.03.17 11:51 Сейчас в теме
Вообще СрезПоследних нужен для выборки последних записей по совокупности измерений.
Когда СрезПоследних делается с разворачиваем до регистратора, получается фигня.
Вам судя по тому как вы соединяете эти две таблицы нужно не из таблицы СрезПоследних, а из простой таблицы движений регистра выбирать данные:
ВЫБРАТЬ
    ДокументЗаказКлиента.Ссылка,
    ОтслежианиеПОСрез.Операция
ИЗ
    РегистрСведений.ОтслежианиеПО КАК ОтслежианиеПОСрезПоследних
        ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ДокументЗаказКлиента
        ПО ОтслежианиеПО.Регистратор = ДокументЗаказКлиента.Ссылка
Показать
4. uan 21.03.17 12:20 Сейчас в теме
Попробую более подробно объяснить.
Документ ЗаказКлиента является регистратором для регистра сведений ОтслеживаниеПО.
На форме документа вывести эти данные из регистра не составляет труда, см. рис 1.
Требуется в динамический список вывести колонку Операция, в которой отражена последняя операция для каждого документа.
При моем запросе берется только одна последняя запись без учета регистратора.
Мне нужно, чтобы в этой колонке была последняя запись из регистра для каждого документа.
См. рис 2. Выводится только 1 самая последняя.
Если выбирать просто из регистра, а не срез последних, то я получаю весь набор записей, а мне нужна только последняя запись.
Не могу сообразить, прошу помощи.
Прикрепленные файлы:
5. m-serg74 46 21.03.17 12:38 Сейчас в теме
(4)
Если выбирать просто из регистра, а не срез последних

нужно сделать искусственно срез последних по нужным полям регистра
6. YanSergey 145 21.03.17 12:48 Сейчас в теме
У тебя все 7 записей на 1 рисунке сделаны одним регистратором?
Покажи структуру регистра.
7. uan 21.03.17 13:06 Сейчас в теме
Вот регистр
Прикрепленные файлы:
8. YanSergey 145 21.03.17 13:08 Сейчас в теме
А на вопрос "У тебя все 7 записей на 1 рисунке сделаны одним регистратором? " ответ будет? )))
9. uan 21.03.17 13:08 Сейчас в теме
(8) Да, одним регистратором.
10. YanSergey 145 21.03.17 13:10 Сейчас в теме
Тебе нужно в измерения добавить ЗаказКлиента.
Тогда у тебя срез последних будет давать тебе правильные данные.
11. uan 21.03.17 13:11 Сейчас в теме
(10)Спасибо. Сейчас попробую.
12. uan 21.03.17 13:23 Сейчас в теме
(10) Помогло. Огромное спасибо.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот