Добрый вечер, Как можно получить Срез последних по Одному измерению из регистра сведений?
Например, два измерения: Сотрудник и ДокументОснование.
(срез по сотруднику).
---
окей. а из вашего примера какая запись последняя?) док5 или док8 и по какому принципу определяется? по дате? вытащите дату и по МАКС отбор из (9) логики. может регистр не правильно спроектирован? если он не дает ответа на вопрос? может Период должен быть с Временем? и тогда все будет решено сразу
---
Как обычно, либо определите, какой именно документ основание вас интересует и сформируйте срез последних самостоятельно.
---
но мне документ основание не нужен, только последнюю запись, если их больше двух на дату среза
---
В таком случае делайте срез последних вручную:

ВЫбрать Максимум(Период) КАК период, Сотрудник ИЗ Регистр.СрезПоследних() СГРУППИРОВАТЬ ПО Сотрудник.
---
в таком случае ресурс тоже придётся взять как Максимум? И получится ли он от последней записи, если на по этим изменениям две записи на период среза
---
нет, вы ж запросом только нужные вам поля выбираете, если не нужен период, то только сотрудника можно выбрать или если отбор задан по сотруднику, то сразу выбирать Максимум(Период)
---
Название регистра и изменение заменить на свое.
Наверное нужен отбор по сотруднику

```1c
    //получить последнюю цену по заданной номенклатуре

    //назначенную до 31.03.2017 г. (включительно)

    Запрос = Новый Запрос;

    Запрос.Текст =

    "ВЫБРАТЬ

    | ЦеныСрезПоследних.Цена

    |ИЗ

    | РегистрСведений.Цены.СрезПоследних(

    | ,

    |

    | ) КАК ЦеныСрезПоследних";

    //Запрос.УстановитьПараметр("ПоДату", '20170331');

    //Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

    Выборка = Запрос.Выполнить().Выбрать();

    Если Выборка.Следующий() Тогда

    Сообщить(Выборка.Цена);

    КонецЕсли
```

Вы бы написали ваш запрос, и что получается, было бы понятна суть проблемы
---
например,
06.11.19 Сотрудник1 Док5, - Ресурсы
06.11.19 Сотрудник1 Док8, - Ресурсы
Хотелось бы получить последнюю запись по этому сотруднику.
---
Если делаем выборку по срезу последних, но не ставим отбор по всем измерениям то получаем не одну запись
для получения именно последней по одному измерению 1) получаем срез последних по сотруднику
06.11.19 Сотрудник1 Док5 - Ресурс
06.11.19 Сотрудник1 Док8 - Ресурс
Помещаем в ВреТабл
В втором запросе выбираем нашу времТабл а на закладке условия указываем что (Период, сотрудник) в (Максимум(Период), Сотрудник из ВремТабл сгруппировать по Сотрудник)
Но в вашем примере выше обе записи одной датой, значит используйте в условии еще и макс по Документу, Хотя может у вас Период имеет состав типа ДатаВремя и тогда все норм будет.
---
но все таки, может попасться либо Док5, либо Док8. (поскольку документ основание имеет составной тип).
Не получится же сделать всегда последнюю запись, То-есть Док8?
---
окей. а из вашего примера какая запись последняя?) док5 или док8 и по какому принципу определяется? по дате? вытащите дату и по МАКС отбор из (9) логики. может регистр не правильно спроектирован? если он не дает ответа на вопрос? может Период должен быть с Временем? и тогда все будет решено сразу
---
спасибо большое!!) Просто в режиме предприятия в этом регистре Док8 и был последним, не подумал про дату документа
---
К чему такие трудности? не нужны никакие временные таблицы.

```1c
    Выбрать Максимум(Период) КАК период, Сотрудник ИЗ Регистр.СрезПоследних() СГРУППИРОВАТЬ ПО Сотрудник
```
---
в вашем решении не учитывается измерение Документ, его тоже надо брать максимум, да и даже если мы возьмем Максимум от даты документа, то тогда мы не узнаем сам документ
---
Если нужен именно сам документ, то необходимо брать максимум МоментВремени, а не даты документа и только в этом случае нужна временная таблица результата для соединения с реальной таблицей регистра на следующем шаге.
Делать Максимум(Документ) - такое себе занятие.
---
да согласен, но даже если брать Макс(Док.моментВремени) то в результирующей таблице не будет самого документа, согласны?
---
Естественно не будет, нужно еще одно соединение с реальной таблицей регистра.
---
т.е. мы 2 раза будем читать данные регистра? чем не вариант 1 раз прочитать, и потом на виртуальную таблицу наложить отбор по сгруппированной той же самой временной таблице?
---
После 1-го обращения к регистру у вас не будет документа для использования отбора виртуальной таблицы. Чтобы его получить, необходимо 2 раза обратится к регистру, т.е. всего получится 3 обращения к регистру.

Это в случае, если нужен именно сам документ. Если документ не нужен, то количество обращений к регистру будет 1.
---
вообще бы понять какую структуру имеет регистр.. а то я то подумал что Док8 это измерение, а почитав выясняется что это ресурс...
тогда если в регистре измерение Период (периодический или отдельное измерение с типом дата), и измерение Сотрудник то того примера быть не может т.к. записи будут не уникальны, только если период с временем, но в такой структуре регистра срез последних должен нормально отрабатывать при отборе по сотруднику. структуру регистра в студию плиз.
---
Измерение, а затем идут ресурсы, которые нужно получить
---
1) получает срез последних с отбором по сотруднику
06.11.19 Сотрудник1 Док5 - Ресурсы
06.11.19 Сотрудник1 Док8 - Ресурсы
Помещаем в ВТ
2) выбираем эту же ВТ но на закладке условия ставит отбор (Период, Сотрудник ...) в правильно сгруппированной нашей же ВТ (Макс период, и пр.)

Где 2 -3 чтения? Документа нет для отбора виртуальной таблицы, есть сотрудник, документ нам надо как бы получить точнее последнюю запись в регистре по сотруднику, а т.к. Период без времени решено что последняя запись это где док.момент имеет максимум
---
минимум 2 чтения:

1.
```1c
    Выбрать МАКСИМУМ(Период) КАК Период, Сотрудник, МАКСИМУМ(Документ.МоментВремени) КАК МоментВремени, Ресурс1, Ресурс2, ......,РесурсN ПОМЕСТИТЬ ВТ_СрезПоследних ИЗ Регистр.СрезПоследних(, Сотрудник = &Сотрудник) Сгруппировать ПО Сотрудник, Ресурс1, Ресурс2, .....РесурсN
```

2.

```1c
    Выбрать Т1.Период, Т1.Сотрудник, Т2.Документ, Т1.Ресурс1, Т1.Ресурс2, ......Т1.РесурсN
    ИЗ ВТ_СрезПоследних КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ Регистр.СрезПоследних(, Сотрудник = &Сотрудник) КАК Т2
    ПО Т1.Период = Т2.период
    И Т1.Сотрудник = Т2.Сотрудник
    И Т1.МоментВремени = Т2.Документ.МоментВремени
```
---
нет.я не разложу в запрос прям, но по сути
1) Выбрать Период, Сотрудник, Док поместить в ВТ Из Регистр.....
2) Выбрать ВТ.Период, ВТ.Сотрудник, ВТ.Док Из ВТ ГДЕ (ВТ.Период, Вт.Сотрудник) в ( Выбрать Максимум(ВТ.период), ВТ.Сотрудник из ВТ Сгруппировать по ВТ.сотрудник) (по полям и группировкам может не корректно, но суть такая)
1 чтение из БД. остальные манипульции уже с временной таблицей
---
Каким образом вы собираетесь получить последний документ по моменту времени?
---
а вы ни разу не делали срез последних по документам (именно по метаданным документы)?
Выбираем в первом запросе нужные нам поля (не знаю какие там точно),
в втором запросе делаем отбор по ПРАВИЛЬНО сгруппированному первому запросу выбирая поля максимум получая последнюю запись в том числе и по МоментВремени.
---
ээээ....

```1c
    Выбрать Период, Сотрудник, Документ
    Поместить ВТ_СрезПоследних
    ИЗ регистр.СрезПоследних(, Сотрудник = &Сотрудник)
    Индексировать по
    Период, Сотрудник, Документ.МоментВремени
    ;
    Выбрать Период, Сотрудник, Документ
    Из ВТ_СрезПоследних
    ГДЕ (Период, Сотрудник, Документ.МоментВремени) В (Выбрать Максимум(Период), Сотрудник, Максимум(Документ.МоментВремени))
```

Не пробовал так, нет подходящих данных под такой запрос.
---
да тип того. теперь согласны что 1 чтение?)
---
Согласен, при условии, что оно будет работать в таком виде :)