Добрый день, помогите пожалуйста выбрать последнюю запись с регистра сведений.
Есть код:

```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПриказыОЗачисленииСтудента.Студент КАК СтудентСсылка,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа КАК ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа КАК НомерПриказа
    ПОМЕСТИТЬ ВТ_ПриказыОЗачислении
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента КАК ПриказыОЗачисленииСтудента
    ГДЕ
    ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"

    СГРУППИРОВАТЬ ПО
    ПриказыОЗачисленииСтудента.Студент,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа
    ;
```

Так выбирает 2189 строк и есть несколько записей у студентов, а нужен последний. Если брать с среза последних, то выходит 300 строк. Подскажите пожалуйста, что можно сделать
---
Мне в принципе не понятно, что не так с вариантом в 8, все верно там предложено
Неа не верно.Логически условие должно быть на временной таблице, а не в результирующей. Вот это:
```1c
    ГДЕ
    ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"
```

Движения бывают не только приема, но перевода и отчисления и может ещё чего, но об этом автор предусмотрительно изначально умолчал :-) Что бы жизнь медом не казалась :-)
---
Что значит последняя запись?
---
По некоторым студентам есть 2 приказа о зачислении и мне нужен последний приказ
---
Последний по дате приказа?
Вообще, тянуть запросом реквизиты регистратора очень страшный моветон. Все данные для отчетов должны храниться в регистре.
---
Последний по дате приказа или по дате периода.
---
Так или/или? Определиться надо. Но по сути. Если берем по последней дате приказа (даже с учетом, что тянем из реквизита регистратора)

```1c
    Выбрать
    ПриказыОЗачисленииСтудента.Студент,
    максимум(ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа)
    Поместить временнаяТаблица
    из РегистрСведений.ПриказыОЗачисленииСтудента КАК ПриказыОЗачисленииСтудента
    Сгруппировать по
    ПриказыОЗачисленииСтудента.Студент
    ;
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПриказыОЗачисленииСтудента.Студент КАК СтудентСсылка,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа КАК ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа КАК НомерПриказа
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента КАК ПриказыОЗачисленииСтудента
    Внтрунее соединение временнаяТаблица
    по приказыозачислении.сотрудник = временнаятаблица.сотрудник
    и приказы.регистратор.датаприказа = временнаятаблица.датаприказа.
    ГДЕ
    ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"

    СГРУППИРОВАТЬ ПО
    ПриказыОЗачисленииСтудента.Студент,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа
```
---
(8) Остались 350 как при регистре срез последних
---
Значит есть записи с одинаковой датой приказа.
---
Одна из повторяющих записей. Даты 28.08.2020 0:00:00 и 16.09.2021 0:00:00
---
Ну так по чем тогда брать последнее?
---
Можно по РегистраторДата, в нем хотя бы минуты различаются
---
А дата регистратора отличается от периода в регистре? Ну и тоже: регистратор 1 дата 1 января, дата приказа 1 февраля, начало действия 1 февраля
Регистратор 2, дата 2 января, дата приказа 15 января, начало действия 15 января.
Какая запись должна попасть?
---
Пример 2 повторяющиеся записи.
1.
РегистраторДата 09.10.2020 12:30:17
ДатаПриказа 28.08.2020 0:00:00
ДатаНачалаДействия 01.09.2020 0:00:00
2.
РегистраторДата 04.10.2021 9:26:31
ДатаПриказа 16.09.2021 0:00:00
ДатаНачалаДействия 08.09.2021 0:00:00

Должна вторая запись попасть.
По Вашему примеру должен попасть 1 регистратор.

Может сразу брать с 1 документа? Но если по нему брать, то тоже дубли
---
Тогда если построили правильно, то по запросу должна попасть именно вторая запись. вообще без вариантов. Даже по срезу последних.
Тогда первым ловим последнюю дату по сотруднику через срез последних (он тогда проигнорирует регистратор) а вторым соединяем по периоду и сотруднику. Если, конечно, периодичность хотя бы в пределах дня.
---
А у меня либо попадают записи как со среза последних либо с дублями
---
Периодичность - по позиции регистратора, см. (11)
---
У твоего регистра есть срез последних?
---
Да, но с ним выходит не все записи
---
очередная битва экстрасенсов.........
Показывайте структуру регистра, его периодичность, какие в нем есть данные
---
Периодичность по По позиции регистратора
---
так понимаю, какая-то лютая самопись и абсолютное непонимание принципов работы периодического подчиненного РС?
---
Нет, конфигурация от одного известного поставщика
---
Бро, это трэш, угар и содомия, а не конфигурация. Задача РС заключается в хранении сведений. Ради одного измерения нет смысла РС вообще создавать. 3-5 измерений позволяют без лишних заморочек делать отборы в разрезе нескольких аналитик. А у тебя уже банально на срезе последних костыли пошли. Подумай в сторону доработки структуры.
---
Там вообще бы всю конфигурацию в помойку отправлять надо.
Мне бы щас дописать отчет, а он встает как раз из-за дублирующих строк по приказам у студента
---
Ради одного измерения нет смысла РС вообще создавать. 3-5 измерений позволяют ...
Смотря какое измерение. В типовых наоборот создают служебный справочник, в котором реквизитами сочетания этих самых двух трех измерений и создают из них одно. :-)
---
Видел такое. Но там и реквизитов было изрядно и для дела. А тут я вижу одно измерение и один ресурс, который дублирует регистратор (интересный лайфхак, но использовать его я не буду). Проще создать свой РС в расширении и оттуда уже брать данные.
---
Можно попробовать вот так:

```1c
    Выбрать
    Т1.Студент,
    Т1.МоментВремени
    ПОМЕСТИТЬ ВТСтудентыРегистраторы
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПриказыОЗачисленииСтудента КАК Т2
    ПО Т1.Студент = Т2.Студент
    И Т1.МоментВремени <= Т2.МоментВремени
    СГРУППИРОВАТЬ ПО
    Т1.Студент,
    Т1.МоментВремени
    ИМЕЮЩИЕ
    Сумма(1) <= 1
    ;
    Выбрать
    Т1.Студент,
    Т2.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
    Т2.Регистратор.ДатаПриказа КАК ДатаПриказа,
    Т2.Регистратор.НомерПриказа КАК НомерПриказа
    ИЗ
    ВТСтудентыРегистраторы КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПриказыОЗачисленииСтудента КАК Т2
    Т1.Студент = Т2.Студент
    И Т1.МоментВремени = Т2.МоментВремени
```
---
Вообще стало 334, а было лишних записей 7. Убрало много нужных
---
мы уже увидим результат хранения данных в РС хотя бы по одному проблемному студенту с указанием того, как должно быть правильно? или вы и дальше будете сферические результаты в вакууме нам сообщать?

Интересует результат запроса

```1c
    ВЫБРАТЬ
    ПриказыОЗачисленииСтудента.Студент,
    ПриказыОЗачисленииСтудента.Регистратор,
    ПриказыОЗачисленииСтудента.Период,
    ПриказыОЗачисленииСтудента.МоментВремени,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа КАК ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа КАК НомерПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.Номер КАК НомерДокумента,
    ПриказыОЗачисленииСтудента.Регистратор.Дата КАК ДатаДокумента
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента КАК ПриказыОЗачисленииСтудента
    ГДЕ
    ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"
    И ПриказыОЗачисленииСтудента.Студент = &Студент
```

А так же

```1c
    ВЫБРАТЬ
    ПриказыОЗачисленииСтудента.Студент,
    ПриказыОЗачисленииСтудента.Регистратор,
    ПриказыОЗачисленииСтудента.Период,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа КАК ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа КАК НомерПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.Номер КАК НомерДокумента,
    ПриказыОЗачисленииСтудента.Регистратор.Дата КАК ДатаДокумента
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента.СрезПоследних(, Студент = &Студент) КАК ПриказыОЗачисленииСтудента
    ГДЕ
    ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"
```
---
По первому
Студент Регистратор Период МоментВремени ДатаНачалаДействия ДатаПриказа НомерПриказа НомерДокумента ДатаДокумента
Студент1 Приказ 00-000000966 от 09.10.2020 12:30:17 01.09.2020 0:00:00 01.09.2020 0:00:00; Приказ 00-000000966 от 09.10.2020 12:30:17 01.09.2020 0:00:00 28.08.2020 0:00:00 2963-ссс 00-000000966 09.10.2020 12:30:17
Студент1 Приказ 00-000001587 от 04.10.2021 9:26:31 08.09.2021 0:00:00 08.09.2021 0:00:00; Приказ 00-000001587 от 04.10.2021 9:26:31 08.09.2021 0:00:00 16.09.2021 0:00:00 666/3-сссс 00-000001587 04.10.2021 9:26:31

А по второму пусто
---
Хорошо. По тому же студенту результат этого запроса:

```1c
    Выбрать
    Т1.Студент,
    Т1.МоментВремени
    ПОМЕСТИТЬ ВТСтудентыРегистраторы
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПриказыОЗачисленииСтудента КАК Т2
    ПО Т1.Студент = Т2.Студент
    И Т1.МоментВремени >= Т2.МоментВремени
    ГДЕ
    Т1.Студент = &Студент
    СГРУППИРОВАТЬ ПО
    Т1.Студент,
    Т1.МоментВремени
    ИМЕЮЩИЕ
    Сумма(1) <= 1
```
---
Пусто
---
А так:

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

А вообще забавно. Разговаривали, разговаривали про срез. А сам срез появился только в (27). :-)
---
2398 строк. Дублей нет.

```1c
    ВЫБРАТЬ
    СтатусыРабочихСрезПоследних.Рабочий КАК Рабочий,
    СтатусыРабочихСрезПоследних.Период КАК ПериодВТ
    ПОМЕСТИТЬ ВТ_Первая
    ИЗ
    РегистрСведений.СтатусыРабочих.СрезПоследних(&ДатаОкончания, ) КАК СтатусыРабочихСрезПоследних
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Первая.ПериодВТ КАК ПериодВТ,
    ВТ_Первая.Рабочий КАК Рабочий,
    СтатусыРабочих.Регистратор КАК Регистратор,
    СтатусыРабочих.Период КАК ПериодРегистратора
    ИЗ
    ВТ_Первая КАК ВТ_Первая
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыРабочих КАК СтатусыРабочих
    ПО ВТ_Первая.Рабочий = СтатусыРабочих.Рабочий
    И ВТ_Первая.ПериодВТ = СтатусыРабочих.Период
```

У тебя косяк со связью между таблицами
---
Если запрос пуст, то либо Студент не имеет движений либо не задан параметр запроса, либо задан не верно, либо последних "зачислений" нет. Все "отчисления". :-). Убери условие где и смотри. Убери условие на студента и смотри.

```1c
    ВЫБРАТЬ
    ПриказыОЗачисленииСтудента.Студент,
    ПриказыОЗачисленииСтудента.Регистратор,
    ПриказыОЗачисленииСтудента.Период,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
    ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа КАК ДатаПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа КАК НомерПриказа,
    ПриказыОЗачисленииСтудента.Регистратор.Номер КАК НомерДокумента,
    ПриказыОЗачисленииСтудента.Регистратор.Дата КАК ДатаДокумента
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента.СрезПоследних(, Студент = &Студент) КАК ПриказыОЗачисленииСтудента
    //ГДЕ
    // ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"
```
---
Так есть, но приказ о "О переводе на следующий семестр"
(38) ВЫБРАТЬ
ПриказыОЗачисленииСтудента.Студент,
ПриказыОЗачисленииСтудента.Регистратор,
ПриказыОЗачисленииСтудента.Период,
ПриказыОЗачисленииСтудента.Регистратор.ДатаНачалаДействия КАК ДатаНачалаДействия,
ПриказыОЗачисленииСтудента.Регистратор.ДатаПриказа КАК ДатаПриказа,
ПриказыОЗачисленииСтудента.Регистратор.НомерПриказа КАК НомерПриказа,
ПриказыОЗачисленииСтудента.Регистратор.Номер КАК НомерДокумента,
ПриказыОЗачисленииСтудента.Регистратор.Дата КАК ДатаДокумента
ИЗ
РегистрСведений.ПриказыОЗачисленииСтудента.СрезПоследних(, Студент = &Студент) КАК ПриказыОЗачисленииСтудента
---
```1c
    ИЗ
    РегистрСведений.ПриказыОЗачисленииСтудента.СрезПоследних(, Студент = &Студент, Регистратор Ссылка Документ.<ИмяДокумента>)
```
---
Поменял и неверные параметры
---
Мне в принципе не понятно, что не так с вариантом в 8, все верно там предложено
"Пример 2 повторяющиеся записи.
1.
РегистраторДата 09.10.2020 12:30:17
ДатаПриказа 28.08.2020 0:00:00
ДатаНачалаДействия 01.09.2020 0:00:00
2.
РегистраторДата 04.10.2021 9:26:31
ДатаПриказа 16.09.2021 0:00:00
ДатаНачалаДействия 08.09.2021 0:00:00"

Если вы говорите что в данном случае должен попасть второй, то просто меняете дату на и запрос должен быть примерно такой

Выбрать <Измерения и реквизиты в разрезе которых нужны последние записи>, Максимум(<Нужный реквизит Даты>) поместить ВТ последние даты
ИЗ
Физ регистра;
Выбрать ВТ последние даты.*, <остальные реквизиты из регистра, регистраторы и проч.>
ИЗ
ВТ
Левое соед с физ. регистром (либо внутр, зависит от условий), по измерению и выбранному реквизиту даты
---
Мне в принципе не понятно, что не так с вариантом в 8, все верно там предложено
Неа не верно.Логически условие должно быть на временной таблице, а не в результирующей. Вот это:
```1c
    ГДЕ
    ПриказыОЗачисленииСтудента.Регистратор.НазначениеПриказа.Родитель.Наименование = "Зачисление"
```

Движения бывают не только приема, но перевода и отчисления и может ещё чего, но об этом автор предусмотрительно изначально умолчал :-) Что бы жизнь медом не казалась :-)
---
Спасибо большое всем, 2 сутки ломал голову и так и сяк