Получает ресурсы регистра сведений по указанным ключевым полям.
Синтаксис
Получить(<Период>, <Отбор>)Получить(<Отбор>)Полное описание, параметры и ограничения
РегистрСведенийМенеджер.<Имя регистра сведений>.Получить (InformationRegisterManager.<Information register name>.Get)
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Information register name>)
Получить (Get)
Доступен, начиная с версии 8.0.
Вариант синтаксиса: Для периодического регистра
Синтаксис:
Получить(<Период>, <Отбор>)
Параметры:
<Период> (обязательный)
Тип: Дата, МоментВремени.
Определяет момент времени, на который необходимо получить значения ресурсов. Если указанный момент времени не совпадает с периодом ни одной записи регистра, то будет возвращена структура, содержащая пустые значения.
<Отбор> (необязательный)
Тип: Структура.
Структура, содержащая отбор по измерениям регистра.
В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Должны указываться значения для всех измерений.
Параметр обязателен для регистров, имеющих измерения.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Неиспользуемым в сеансе разделителям регистра в структуре должен соответствовать элемент с указанным значением отбора, так же, как для всех измерений, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Вариант синтаксиса: Для непериодического регистра
Синтаксис:
Получить(<Отбор>)
Параметры:
<Отбор> (необязательный)
Тип: Структура.
Структура, содержащая отбор по измерениям регистра.
В переданной структуре должны содержаться те измерения, по которым должны быть отфильтрованы записи. В элементе структуры задается имя и значение отбора. Должны указываться значения для всех измерений.
Параметр обязателен для регистров, имеющих измерения.
Структура дополнительно может иметь элементы, соответствующие разделителям регистра с уровнем разделения НезависимоИСовместно, в состав которых входит регистр. Если такой элемент структуры задан для используемого в сеансе разделителя, значение для этого элемента должно совпадать со значением разделителя, иначе будет вызвано исключение.
Неиспользуемым в сеансе разделителям регистра в структуре должен соответствовать элемент с указанным значением отбора, так же, как для всех измерений, иначе будет вызвано исключение.
Если параметр не указан, то отбор не используется.
Возвращаемое значение:
Тип: Структура.
Структура, содержащая значения ресурсов.
Описание:
Получает ресурсы регистра сведений по указанным ключевым полям.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 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 и ситуация без найденных изменений требуют отдельного решения; этот урок проверяет только приведённые две записи.
Значения ресурсов в структуре сами по себе не заменяют проверку существования записи в общем случае.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Записать одну учебную цену и доказать откат транзакции
Только новая пустая учебная база с пустыми модулями. Уникальный код, запись без замещения чужого ключа, чтение своей строки и намеренный откат.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую базу. В Конфигураторе корню задайте имя Учебная85; не добавляйте учебные регистры в рабочую УТ/КА2/УНФ/БП.
Регистры сведений → Добавить: УчебныеЦены. Режим записи Независимый, периодичность Непериодический. Измерение КодТовара: Строка, длина 50, индексировать. Ресурс Цена: Число, 12 цифр, 2 дробных, неотрицательное.
Проверку заполнения измерения установите Показывать ошибку. Модуль набора записей оставьте ПУСТЫМ; обработчики записи, обмена, фоновые задания и внешние сервисы для урока не создавайте.
Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки для вызова ВыполнитьПример() Экспорт.
Фрагмент вставьте в тело ВыполнитьПример. Каждую задачу запускайте отдельно. Вымышленные коды не являются справочными ссылками на рабочие товары.
Для этого урока выполняется настоящая кратковременная запись в СОБСТВЕННУЮ учебную базу. Не используйте рабочую базу или чужую транзакцию.
Длина КодТовара 50 обязательна: TRAIN- + UUID занимает 42 символа. В регистрах не должно быть обработчиков, выполняющих внешние действия.
Описание = Метаданные.РегистрыСведений.Найти("УчебныеЦены");
Если Описание = Неопределено Тогда
ВызватьИсключение "Сначала подготовьте собственный учебный регистр";
КонецЕсли;
Если Описание.РежимЗаписи <> Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый
Или Описание.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
ВызватьИсключение "Настройки учебного регистра не соответствуют подготовке";
КонецЕсли;
Если Описание.Измерения.Количество() <> 1
Или Описание.Измерения.Найти("КодТовара") = Неопределено
Или Описание.Ресурсы.Найти("Цена") = Неопределено Тогда
ВызватьИсключение "Нужны одно измерение КодТовара и ресурс Цена";
КонецЕсли;
Если ТранзакцияАктивна() Тогда
ВызватьИсключение "Урок не выполняется внутри чужой транзакции";
КонецЕсли;
Код = "TRAIN-" + Строка(Новый УникальныйИдентификатор);
Менеджер = РегистрыСведений.УчебныеЦены;
ПроверкаДо = Менеджер.СоздатьМенеджерЗаписи();
ПроверкаДо.КодТовара = Код;
ПроверкаДо.Прочитать();
Если ПроверкаДо.Выбран() Тогда
ВызватьИсключение "Неожиданно найден занятый учебный ключ";
КонецЕсли;
НачатьТранзакцию();
Попытка
Запись = Менеджер.СоздатьМенеджерЗаписи();
Запись.КодТовара = Код;
Запись.Цена = 250;
Запись.Записать(Ложь);
Прочитанная = Менеджер.СоздатьМенеджерЗаписи();
Прочитанная.КодТовара = Код;
Прочитанная.Прочитать();
Если Не Прочитанная.Выбран() Или Прочитанная.Цена <> 250 Тогда
ВызватьИсключение "Своя запись не прочитана с ожидаемой ценой";
КонецЕсли;
Ресурсы = Менеджер.Получить(Новый Структура("КодТовара", Код));
Сообщить(Ресурсы.Цена = 250);
Выборка = Менеджер.Выбрать(Новый Структура("КодТовара", Код));
Если Не Выборка.Следующий() Тогда
ВызватьИсключение "Своя запись не найдена в выборке";
КонецЕсли;
ИзВыборки = Выборка.ПолучитьМенеджерЗаписи();
Сообщить(ИзВыборки.Выбран());
Сообщить(ИзВыборки.Цена = 250);
Сообщить(Не Выборка.Следующий());
ОтменитьТранзакцию();
Исключение
Если ТранзакцияАктивна() Тогда
ОтменитьТранзакцию();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
После = Менеджер.СоздатьМенеджерЗаписи();
После.КодТовара = Код;
После.Прочитать();
Если После.Выбран() Тогда
ВызватьИсключение "После отката учебная запись всё ещё существует";
КонецЕсли;
Сообщить("Откат подтверждён: своя учебная цена отсутствует.");Разбор по шагам
Отказываемся работать внутри существующей транзакции. Не отменяем чужие незавершённые изменения.
Создаём уникальный учебный ключ и до записи подтверждаем отсутствие строки через менеджер записи.
Записать(Ложь) не замещает другую существующую запись с тем же ключом. Это не универсальная защита от ошибок бизнес-обработчиков.
Внутри собственной транзакции читаем свою запись новым менеджером, через Получить ресурсы и через выборку.
ПолучитьМенеджерЗаписи вызывается только после успешного Следующий: выборка позиционирована на строке.
Намеренно отменяем, а не фиксируем транзакцию. После отката читаем новым менеджером и требуем отсутствие строки.
Как проверить результат
Четыре проверки внутри транзакции Истина: цена, выбранность менеджера, цена из выборки, отсутствие второй строки.
После отката сообщение о подтверждённом отсутствии учебной цены.
В списке регистра не остаётся нового кода TRAIN-…, ФиксироватьТранзакцию нигде не вызывается.
Ожидаемый результат
Новичок наблюдает запись, несколько способов чтения и проверяемый откат своей транзакции.
На что обратить внимание
Откат базы не отменяет письма, HTTP-запросы и запись файлов из обработчиков. Поэтому регистр должен иметь пустой модуль и база быть новой.
После отката старый объект в памяти может хранить прежние поля; состояние базы проверяем новым экземпляром.
Получить возвращает структуру ресурсов, не полный объект записи с ключом.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.