Записки программиста 1с

Запись в регистр сведений программно

Запись в регистр сведений программно одна из типовых операций в 1с.

В “1с:Предприятие 8” имеется два способа выполнить программную запись в регистр сведений.

Запись в регистр сведений программно
Объекты работы с записью в регистр

Как добавить записи в независимый регистр сведений?

Регистр сведений менеджер записей

Для добавления отдельной записи в регистр сведений, не подчиненный регистратору, можно использовать объект РегистрСведенийМенеджерЗаписи.<имя>

Во-первых создадим независимый регистр сведений цены:

Запись в регистр сведений программно
Регистр сведений

В нашем независимом регистр сведений “Цены” измерениями будут “Номенклатура”, “ВидЦены” и ресурс “Цена”.

Запись в регистр сведений программно
Измерения и Ресурсы регистра сведений “Цены”

Во-вторых создадим внешнюю обработку для изменения Регистра Сведений “Цены” при помощи программного кода.

Обработка содержит четыре реквизита:

  • Номенклатура;
  • Видцены;
  • Цена;
  • ДатаИзменения.

Реквизит “ДатаИзменения” был добавлен для того, чтобы заполнить значение “Период” в Регистре Сведений “Цены”.

Запись в регистр сведений программно
Внешняя обработка “Изменение цены”

Чтобы добавить одну запись, содержащую значение цены выбранной номенклатуры, можно использовать следующий код:

МенеджерЗаписи = РегистрыСведений.Цены.СоздатьМенеджерЗаписи();
	
МенеджерЗаписи.Период=объект.ДатаИзменения;
МенеджерЗаписи.Номенклатура =объект.Номенклатура;
МенеджерЗаписи.ВидЦены = объект.ВидЦены;
МенеджерЗаписи.Цена = Объект.Цена;

МенеджерЗаписи.Записать();

Результат выполнения кода:

регистр заполнен менеджером записи
Результат выполнения кода

В результате запись будет добавлена в регистр, или, если регистр уже содержит запись с выбранными значениями измерений “Номенклатура” и “ВидЦены”, – существующая запись будет заменена новой. Ссылка на обработку: Ссылка. Мы произвели Запись в регистр сведений программно.

Регистр сведений набор записей

Если требуется добавить несколько записей в регистр сведений, можно использовать объект РегистрСведенийНаборЗаписей.<имя>

Во-первых будем использовать уже готовый Регистр Сведений “Цены”.

Во-вторых Изменим обработку, добавив в неё Табличную Часть “Список Цен”.

набор записей
Внешняя обработка

В-третьих в процедуре НаСервере заполним следующий код:

НаборЗаписей = РегистрыСведений.Цены.СоздатьНаборЗаписей();
//Устанавливаем отбор
НаборЗаписей.Отбор.Номенклатура.Установить(объект.Номенклатура);
НаборЗаписей.Отбор.Период.Установить(Объект.ДатаИзменения);
//формируем список записей
ТаблицаЦен=объект.СписокЦен;
для каждого Строка из ТаблицаЦен цикл
НоваяЗапись = НаборЗаписей.Добавить();

НоваяЗапись.Номенклатура=объект.Номенклатура;
НоваяЗапись.Период=объект.ДатаИзменения;

НоваяЗапись.ВидЦены=Строка.ВидЦены;
НоваяЗапись.Цена=Строка.Цена;
конецЦикла;
//Запись в регистр
НаборЗаписей.Записать();

Проверим работу обработки.

Регистр сведений набор записей
Обработка заполнения с использованием набора записей.

Результат заполнения Регистра Сведений при помощи Набора Записей.

Регистр сведений набор записей
Регистр Сведений

В результате произвед=ли заполнение Регистра Сведений при помощи Набора Записей. Ссылка на внешнюю обработку: ссылка.

Дополнительный пример кода.

&НаСервере
Процедура Команда1НаСервере()
движ = регистрысведений.Занятыеместа.СоздатьМенеджерЗаписи();
движ.Билет=объект.билет;
движ.пассажир = объект.пассажир;
движ.рейс = объект.Рейс;
движ.статусместа = объект.стаутсместа;
движ.Записать();
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
//билет=элементы.билет;
//пассажир=элементы.пассажир;
//статус=элементы.стаутсместа;
Команда1НаСервере();
КонецПроцедуры

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *