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