Добавляет новую запись в набор.
Синтаксис
Добавить()Примеры платформы
НовыйКурс = НаборКурсов.Добавить();Полное описание, параметры и ограничения
РегистрСведенийНаборЗаписей.<Имя регистра сведений>.Добавить (InformationRegisterRecordSet.<Information register name>.Add)
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Information register name>)
Добавить (Add)
Доступен, начиная с версии 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 дробных, неотрицательное.
Проверку заполнения измерения установите Показывать ошибку. Модуль набора записей оставьте ПУСТЫМ; обработчики записи, обмена, фоновые задания и внешние сервисы для урока не создавайте.
Обновите конфигурацию базы данных. Создайте серверный общий модуль УчебныеЗадачи и команду учебной обработки для вызова ВыполнитьПример() Экспорт.
Фрагмент вставьте в тело ВыполнитьПример. Каждую задачу запускайте отдельно. Вымышленные коды не являются справочными ссылками на рабочие товары.
Описание = Метаданные.РегистрыСведений.Найти("УчебныеЦены");
Если Описание = Неопределено Тогда
ВызватьИсключение "Сначала подготовьте собственный учебный регистр";
КонецЕсли;
Если Описание.РежимЗаписи <> Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый
Или Описание.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
ВызватьИсключение "Настройки учебного регистра не соответствуют подготовке";
КонецЕсли;
Если Описание.Измерения.Количество() <> 1
Или Описание.Измерения.Найти("КодТовара") = Неопределено
Или Описание.Ресурсы.Найти("Цена") = Неопределено Тогда
ВызватьИсключение "Нужны одно измерение КодТовара и ресурс Цена";
КонецЕсли;
Набор = РегистрыСведений.УчебныеЦены.СоздатьНаборЗаписей();
Книга = Набор.Добавить();
Книга.КодТовара = "BOOK-A01";
Книга.Цена = 250;
Ручка = Набор.Добавить();
Ручка.КодТовара = "PEN-B02";
Ручка.Цена = 50;
Набор.ДополнительныеСвойства.Вставить("Источник", "Учебный набор в памяти");
Сообщить(Набор.Количество() = 2);
Сообщить(Набор.Итог("Цена") = 300);
Сообщить(Набор.Метаданные().Имя = "УчебныеЦены");
Сообщить(Набор.Модифицированность());
Сообщить(Не Набор.Выбран());
Сообщить(Набор.ЭтотОбъект = Набор);
Сообщить(Набор.ПроверитьЗаполнение());
Сообщить(Набор.ДополнительныеСвойства.Источник);
Сообщить("Записать и Прочитать не вызывались — это подготовка, не сохранение цен.");Разбор по шагам
СоздатьНаборЗаписей создаёт набор соответствующего регистра, но не читает его строки и не сохраняет данные.
Добавить возвращает запись набора. КодТовара/Цена — реквизиты именно подготовленного учебного регистра.
Итог Цена суммирует 250 и 50. Это сумма двух разных цен, не стоимость заказа без количества.
Выбран относится к чтению данных; Модифицированность — к изменению набора в памяти.
ПроверитьЗаполнение контролирует настроенные обязательные поля, но не выполняет запись и все будущие бизнес-проверки.
ДополнительныеСвойства хранит служебный контекст обработки, не новый ресурс регистра.
Как проверить результат
Проверки количества, итога, метаданных, модифицированности, отсутствия чтения, ЭтотОбъект и заполнения — Истина.
Через Все функции/Функции для технического специалиста откройте список собственного УчебныеЦены: эти строки ещё не сохранены.
Ожидаемый результат
Подготовлен пригодный к проверке набор в памяти, без ложного обещания, что данные уже в базе.
На что обратить внимание
Нельзя применять независимый набор по этому уроку к регистру с подчинением регистратору.
Успешная ПроверитьЗаполнение не доказывает наличие прав записи или успешность будущей транзакции.
Итог двух цен не является бизнес-расчётом стоимости товаров.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.