Записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение. Если для регистра сведений подчиненного регистратору производится запись в режиме добавления, то после выполнения записи набор очищается.
Синтаксис
Записать(<Замещать>)Примеры платформы
НаборКурсов.Записать();Полное описание, параметры и ограничения
РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Записать (InformationRegisterRecordSet.<Information register name>.Write)
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Information register name>)
Записать (Write)
Доступен, начиная с версии 8.0.
Синтаксис:
Записать(<Замещать>)
Параметры:
<Замещать> (необязательный)
Тип: Булево, РежимЗамещения.
Определяет режим замещения существующих записей в соответствии с текущими установками отбора:
Истина или Замещение - перед записью существующие записи будут удалены.
Ложь или Добавление - записи будут дописаны к уже существующим в информационной базе записям.
Обновление - существующие записи регистра, совпадающие по значениям ключевых полей (Период, измерения, разделители - для независимого регистра, Регистратор, НомерСтроки, разделители - для подчиненного) с записями набора записей будут перезаписаны. Если для какой-либо записи набора записей нет соответствующей записи регистра, будет сгенерировано исключение.
Слияние - будет произведено слияние записей из набора записей с существующими записями регистра. Существующие записи регистра, совпадающие с записями набора записей по значениям ключевых полей (Период, измерения, значения разделителей), будут перезаписаны, а записи набора, для которых нет соответствия среди существующих записей регистра, будут добавлены в регистр. Данное значение параметра допустимо только для независимых регистров сведений.
Удаление - записи регистра, совпадающие с записями набора записей по значениям ключевых полей, будут удалены из регистра.
Значения параметров Удаление или Обновление для набора записей подчиненного регистра сведений могут быть использованы только в том случае, если свойство ДлинаНомераСтроки набора записей имеет значение Истина.
Значение по умолчанию: Истина.
Описание:
Записывает набор записей в базу данных. В зависимости от переданного параметра, может быть выполнено добавление записей или их замещение.
Если для регистра сведений подчиненного регистратору производится запись в режиме добавления, то после выполнения записи набор очищается.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Для регистров сведений, подчиненных регистратору, при вызове с параметром <Замещать> равным Ложь после записи в информационную базу набор записей очищается (удаляются записи из набора).
Пример:
НаборКурсов.Записать();
Использование в версии:
Доступен, начиная с версии 8.0.
Описание изменено в версии 8.3.26.
Методическая информация
Практические примеры
Получить цену на дату по двум учебным изменениям
Цена менялась 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 и ситуация без найденных изменений требуют отдельного решения; этот урок проверяет только приведённые две записи.
Значения ресурсов в структуре сами по себе не заменяют проверку существования записи в общем случае.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.