Получает значения ресурсов наиболее поздней записи регистра, соответствующей указанным периоду и значениям измерений регистра.
Синтаксис
ПолучитьПоследнее(<КонецПериода>, <Отбор>)Примеры платформы
Доллары = Справочники.Валюты.НайтиПоНаименованию("USD");
Отбор = Новый Структура;
Отбор.Вставить("Валюта", Доллары);
Курсы = РегистрыСведений.КурсыВалют;
ТекКурс = Курсы.ПолучитьПоследнее(ТекущаяДата(), Отбор);
Сообщить("Текущий курс доллара: " + ТекКурс.Курс + " руб.");Полное описание, параметры и ограничения
РегистрСведенийМенеджер.<Имя регистра сведений>.ПолучитьПоследнее (InformationRegisterManager.<Information register name>.GetLast)
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Information register name>)
ПолучитьПоследнее (GetLast)
Доступен, начиная с версии 8.0.
Синтаксис:
ПолучитьПоследнее(<КонецПериода>, <Отбор>)
Параметры:
<КонецПериода> (необязательный)
Тип: Дата, МоментВремени, Граница.
Определяет момент времени, по который необходимо получить значения ресурсов. Может задаваться значениями типа Дата, МоментВремени или Граница. Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
<Отбор> (необязательный)
Тип: Структура.
Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Возвращаемое значение:
Тип: Структура.
Возвращает структуру, содержащую значения ресурсов.
Описание:
Получает значения ресурсов наиболее поздней записи регистра, соответствующей указанным периоду и значениям измерений регистра.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Применим только для периодических регистров сведений.
Пример:
Доллары = Справочники.Валюты.НайтиПоНаименованию("USD");
Отбор = Новый Структура;
Отбор.Вставить("Валюта", Доллары);
Курсы = РегистрыСведений.КурсыВалют;
ТекКурс = Курсы.ПолучитьПоследнее(ТекущаяДата(), Отбор);
Сообщить("Текущий курс доллара: " + ТекКурс.Курс + " руб.");
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Получить цену на дату по двум учебным изменениям
Цена менялась 15 сентября в 09:00 и 12:00. Внутри отменяемой транзакции проверяем точную запись, первое/последнее значение и табличные срезы.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу. В Конфигураторе корню задайте имя Учебная85; не добавляйте учебные регистры в рабочую УТ/КА2/УНФ/БП.
Регистры сведений → Добавить: УчебныеЦены. Режим записи Независимый, периодичность Непериодический. Измерение КодТовара: Строка, длина 50, индексировать. Ресурс Цена: Число, 12 цифр, 2 дробных, неотрицательное.
Проверку заполнения измерения установите Показывать ошибку. Модуль набора записей оставьте ПУСТЫМ; обработчики записи, обмена, фоновые задания и внешние сервисы для урока не создавайте.
Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки для вызова ВыполнитьПример() Экспорт.
Фрагмент вставьте в тело ВыполнитьПример. Каждую задачу запускайте отдельно. Вымышленные коды не являются справочными ссылками на рабочие товары.
Создайте второй независимый регистр УчебнаяИсторияЦен: периодичность В пределах секунды, измерение КодТовара (Строка 50, индексировать), ресурс Цена (Число 12,2, неотрицательное). Модуль также пустой.
Обновите конфигурацию базы данных. Код первого регистра не заменяйте именем рабочего регистра цен.
Здесь две кратковременные записи в собственный периодический регистр отменяются. Нужны пустой модуль регистра, права на свой регистр и отсутствие чужой активной транзакции.
Обе строки дополнительно имеют тот же КодТовара, что отбор набора. Запись выполняется с Ложь — без замещения существующих строк.
Описание = Метаданные.РегистрыСведений.Найти("УчебнаяИсторияЦен");
Если Описание = Неопределено Тогда
ВызватьИсключение "Сначала подготовьте собственный учебный регистр";
КонецЕсли;
Если Описание.РежимЗаписи <> Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый
Или Описание.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Секунда Тогда
ВызватьИсключение "Настройки учебного регистра не соответствуют подготовке";
КонецЕсли;
Если Описание.Измерения.Количество() <> 1
Или Описание.Измерения.Найти("КодТовара") = Неопределено
Или Описание.Ресурсы.Найти("Цена") = Неопределено Тогда
ВызватьИсключение "Нужны одно измерение КодТовара и ресурс Цена";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Для урока нужна собственная транзакция";
КонецЕсли;
Код = "TRAIN-" + Строка(Новый УникальныйИдентификатор);
Менеджер = РегистрыСведений.УчебнаяИсторияЦен;
Отбор = Новый Структура("КодТовара", Код);
Набор = Менеджер.СоздатьНаборЗаписей();
Набор.Отбор.КодТовара.Установить(Код);
Набор.Прочитать();
Если Набор.Количество() <> 0 Тогда
ВызватьИсключение "Учебный ключ уже занят";
КонецЕсли;
Ранняя = Набор.Добавить();
Ранняя.Период = Дата(2026, 9, 15, 9);
Ранняя.КодТовара = Код;
Ранняя.Цена = 100;
Поздняя = Набор.Добавить();
Поздняя.Период = Дата(2026, 9, 15, 12);
Поздняя.КодТовара = Код;
Поздняя.Цена = 120;
НачатьТранзакцию();
Попытка
Набор.Записать(Ложь);
Точная = Менеджер.Получить(Дата(2026, 9, 15, 9), Отбор);
ДоПолудня = Менеджер.ПолучитьПоследнее(Дата(2026, 9, 15, 11), Отбор);
НаПолдень = Менеджер.ПолучитьПоследнее(Дата(2026, 9, 15, 12), Отбор);
ПерваяПослеДесяти = Менеджер.ПолучитьПервое(Дата(2026, 9, 15, 10), Отбор);
Сообщить(Точная.Цена = 100);
Сообщить(ДоПолудня.Цена = 100);
Сообщить(НаПолдень.Цена = 120);
Сообщить(ПерваяПослеДесяти.Цена = 120);
Последние = Менеджер.СрезПоследних(Дата(2026, 9, 15, 12), Отбор);
Первые = Менеджер.СрезПервых(Дата(2026, 9, 15, 10), Отбор);
Сообщить(Последние.Количество() = 1);
Сообщить(Последние.Получить(0).Цена = 120);
Сообщить(Первые.Количество() = 1);
Сообщить(Первые.Получить(0).Цена = 120);
ОтменитьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
После = Менеджер.СоздатьНаборЗаписей();
После.Отбор.КодТовара.Установить(Код);
После.Прочитать();
Если После.Количество() <> 0 Тогда
ВызватьИсключение "Откат истории учебного кода не подтверждён";
КонецЕсли;
Сообщить("Две учебные цены отменены; история рабочего регистра не использовалась.");Разбор по шагам
Период входит в ключ записи: один код может иметь цены в 09:00 и 12:00.
Получить в 09:00 ищет точную запись, ПолучитьПоследнее в 11:00 — самое позднее изменение не позже границы.
Граница включительная: ПолучитьПоследнее ровно в 12:00 уже даёт 120.
ПолучитьПервое в 10:00 ищет первое изменение начиная с границы, то есть 12:00 и цену 120.
Табличные СрезПоследних/СрезПервых возвращают строки по сочетаниям измерений; для нашего одного кода это одна строка.
После проверки намеренно откатываем обе записи и новым набором доказываем отсутствие своего кода.
Как проверить результат
Восемь сравнений Истина: точная/последняя/первая цены и два среза.
В 11:00 цена 100, ровно в 12:00 уже 120.
После отката сообщение о двух отменённых учебных ценах и ноль строк собственного кода.
Ожидаемый результат
Показана историческая цена на дату с точной включительной границей и различием структуры ресурсов/табличного среза.
На что обратить внимание
Эти методы предназначены для периодического регистра; не переносите их в непериодический УчебныеЦены.
Цена до 09:00 и ситуация без найденных изменений требуют отдельного решения; этот урок проверяет только приведённые две записи.
Значения ресурсов в структуре сами по себе не заменяют проверку существования записи в общем случае.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.