Перейти к основному содержимому

Создание копированием

Создание копированием

Чтобы упростить работу пользователей приложения и ускорить ввод данных в систему, «1С:Шина» предоставляет возможность создавать новый экземпляр записи регистров сведений путем копирования данных существующего экземпляра.

Использование механизма создания копированием в коде

Чтобы создать копию экземпляра регистра сведений в коде на сервере:

  • получите ключ копируемой записи регистра сведений и воспользуйтесь методом имя-регистра-сведений.КлючЗаписи.СоздатьКопиюЗаписи(). Чтобы сразу переопределить значения реквизитов, метод можно вызвать с параметрами, аналогично конструктору экземпляра сущности:

    метод СкопироватьЗаписьСКлючом(Парам: Строка)
    пер Запрос = Запрос{ВЫБРАТЬ КлючЗаписи ИЗ МойРегистрСведений ГДЕ Измерение1 == %Парам}
    исп Результат = Запрос.Выполнить()
    для Строка из Результат
    пер Ключ = Строка.КлючЗаписи
    пер НоваяЗапись = Ключ.СоздатьКопиюЗаписи()
    // Меняем значения ресурсов, измерений или реквизитов и записываем новую запись
    ;
    ;
  • получите копируемую запись регистра сведений и воспользуйтесь методом имя-регистра-сведений.Запись.СоздатьКопию(). Чтобы сразу переопределить значения реквизитов, метод можно вызвать с параметрами, аналогично конструктору экземпляра сущности:

    метод СкопироватьЗапись(Парам: Строка)
    пер Запрос = Запрос{ВЫБРАТЬ КлючЗаписи ИЗ МойРегистрСведений ГДЕ Измерение1 == %Парам}
    исп Результат = Запрос.Выполнить()
    для Строка из Результат
    пер Ключ = Строка.КлючЗаписи
    пер Запись = Ключ.ЗагрузитьЗапись()
    пер НоваяЗапись = Запись.СоздатьКопию()
    // Меняем значения ресурсов, измерений или реквизитов и записываем новую запись
    ;
    ;

Настройка создания копированием

Вы можете изменить процесс создания копированием в обработчике события ПриСозданииКопии в модуле записи регистра сведений. В параметре Источник этого обработчика находятся данные копируемого объекта. Вы можете перезаписать значения нужных вам измерений, ресурсов и реквизитов в соответствии с бизнес-логикой. Пример:

@Обработчик
метод ПриСозданииКопии(Источник: МойРегистрСведений.Данные)
если Источник.Реквизит1 == 1
Реквизит2 = "Значение Реквизита2, соответствующее бизнес-логике"
;
;

На момент вызова обработчика ПриСозданииКопии значения всех реквизитов уже будут скопированы, за исключением стандартного поля Период для периодических регистров сведений.

Свойство «ЗаполнятьПриКопировании»

Чтобы отключить копирование определенного реквизита, воспользуйтесь свойством ЗаполнятьПриКопировании, которое присутствует у измерений, ресурсов и реквизитов.

ВидЭлемента: РегистрСведений
Ид: 1228d00a-dc2a-48bf-8709-d4fd0fdd331e
Имя: МойРегистрСведений
ОбластьВидимости: ВПодсистеме
Измерения:
-
Ид: 4661c2bc-a5b2-4293-ac66-02a5dd16fdc0
Имя: Измерение1
Тип: Число
ЗаполнятьПриКопировании: Ложь
Ресурсы:
-
Ид: 2af5e19a-d922-4158-b27a-36bd214ee295
Имя: Ресурс1
Тип: Строка
МаксимальнаяДлина: 10
ЗаполнятьПриКопировании: Ложь
Реквизиты:
-
Ид: 1e26fe17-1f7f-42be-b9bc-9a4c449a1279
Имя: Реквизит1
Тип: Число
ЗаполнятьПриКопировании: Ложь