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