Запись в регистр сведений программно одна из типовых операций в 1с.
В “1с:Предприятие 8” имеется два способа выполнить программную запись в регистр сведений.
Как добавить записи в независимый регистр сведений?
Регистр сведений менеджер записей
Для добавления отдельной записи в регистр сведений, не подчиненный регистратору, можно использовать объект РегистрСведенийМенеджерЗаписи.<имя>
Во-первых создадим независимый регистр сведений цены:
В нашем независимом регистр сведений “Цены” измерениями будут “Номенклатура”, “ВидЦены” и ресурс “Цена”.
Во-вторых создадим внешнюю обработку для изменения Регистра Сведений “Цены” при помощи программного кода.
Обработка содержит четыре реквизита:
- Номенклатура;
- Видцены;
- Цена;
- ДатаИзменения.
Реквизит “ДатаИзменения” был добавлен для того, чтобы заполнить значение “Период” в Регистре Сведений “Цены”.
Чтобы добавить одну запись, содержащую значение цены выбранной номенклатуры, можно использовать следующий код:
МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Период=объект.ДатаИзменения;
МенеджерЗаписи.Номенклатура =объект.Номенклатура;
МенеджерЗаписи.ВидЦены = объект.ВидЦены;
МенеджерЗаписи.Цена = Объект.Цена;
МенеджерЗаписи.Записать();
Результат выполнения кода:
В результате запись будет добавлена в регистр, или, если регистр уже содержит запись с выбранными значениями измерений “Номенклатура” и “ВидЦены”, – существующая запись будет заменена новой. Ссылка на обработку: Ссылка. Мы произвели Запись в регистр сведений программно.
Регистр сведений набор записей
Если требуется добавить несколько записей в регистр сведений, можно использовать объект РегистрСведенийНаборЗаписей.<имя>
Во-первых будем использовать уже готовый Регистр Сведений “Цены”.
Во-вторых Изменим обработку, добавив в неё Табличную Часть “Список Цен”.
В-третьих в процедуре НаСервере заполним следующий код:
НаборЗаписей = РегистрыСведений.Цены.СоздатьНаборЗаписей();
//Устанавливаем отбор
НаборЗаписей.Отбор.Номенклатура.Установить(объект.Номенклатура);
НаборЗаписей.Отбор.Период.Установить(Объект.ДатаИзменения);
//формируем список записей
ТаблицаЦен=объект.СписокЦен;
для каждого Строка из ТаблицаЦен цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Номенклатура=объект.Номенклатура;
НоваяЗапись.Период=объект.ДатаИзменения;
НоваяЗапись.ВидЦены=Строка.ВидЦены;
НоваяЗапись.Цена=Строка.Цена;
конецЦикла;
//Запись в регистр
НаборЗаписей.Записать();
Проверим работу обработки.
Результат заполнения Регистра Сведений при помощи Набора Записей.
В результате произвед=ли заполнение Регистра Сведений при помощи Набора Записей. Ссылка на внешнюю обработку: ссылка.
Дополнительный пример кода.
&НаСервере
Процедура Команда1НаСервере()
движ = регистрысведений.Занятыеместа.СоздатьМенеджерЗаписи();
движ.Билет=объект.билет;
движ.пассажир = объект.пассажир;
движ.рейс = объект.Рейс;
движ.статусместа = объект.стаутсместа;
движ.Записать();
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
//билет=элементы.билет;
//пассажир=элементы.пассажир;
//статус=элементы.стаутсместа;
Команда1НаСервере();
КонецПроцедуры