Создание копированием
Создание копированием
Чтобы упростить работу пользователей приложения и ускорить ввод данных в систему, «1С:Шина» предоставляет возможность создавать новый экземпляр записи регистров сведений путем копирования данных существующего экземпляра.
Системная команда Создать копию автоматически добавляется в формы списка и записи регистров сведений при их создании. При вызове этой команды выполняется копирование исходного объекта и открывается форма записи копии. Далее пользователь может отредактировать данные копии и сохранить изменения.
Команда Создать копию автоматически добавляется в дополнительные команды при создании новой формы записи в среде разработки, а также в автоматическую форму записи при ее создании.
При создании новой формы записи команда Создать копию автоматически прописывается в ее YAML-файле в свойстве ДополнительныеКоманды:
ДополнительныеКоманды:
Тип: Фрагме нтКомандногоИнтерфейса<Команда>
Элементы:
- =Обновить
- =СоздатьКопию
В формах списка записей команда Создать копию автоматически добавляется в команды строки:
При создании новой формы списка команда Создать копию автоматически прописывается в ее YAML-файле в свойстве КомандыСтроки:
КомандыСтроки:
Тип: ФрагментКомандногоИнтерфейса<КомандаСПараметром<Массив<Сущность.Ключ>>|КомандаСПараметром<Сущность.Ключ>>
Элементы:
- =Компоненты.ОсновнаяТаблица.СоздатьКопию
Использование механизма создания копированием в интерфейсе
Вы можете создать новый экземпляр сущности на клиенте из формы или другого компонента интерфейса. Для этого:
-
в модуле компонента интерфейса получите ключ записи сущности-источника;
-
откройте форму записи и в качестве параметра
КлючИсточни каКопирования: имя-регистра-сведений.КлючЗаписи
укажите этот ключ.метод ОткрытьКопиюМоегоРегистраСведений(Ключ: МойРегистрСведений.КлючЗаписи)
Открыть(КлючИсточникаКопирования = Ключ,
СпособОткрытия = СпособОткрытияФормы.ВМодальномОкне)
;
Использование механизма создания копированием в коде
Чтобы создать копию экземпляра регистра сведений в коде на сервере:
-
получите ключ копируемой записи регистра сведений и воспользуйтесь методом
имя-регистра-сведений.КлючЗаписи.СоздатьКопиюЗаписи()
. Чтобы сразу переопределить значения реквизитов, метод можно вызвать с параметрами, аналогично конструктору экземпляра сущности:метод СкопироватьЗаписьСКлючом(Парам: Строка)
пер Запрос = Запрос{ВЫБРАТЬ КлючЗаписи ИЗ МойРегистрСведений ГДЕ Измерение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
Тип: Число
ЗаполнятьПриКопировании: Ложь