Для себя открыл новую возможность применения данного метода в типовых конфигурациях.
Особенность чрезвычайно интересная при загрузке справочников.
Есть реквизит Справочника "Контрагенты", "ОсновнойДоговор". И если создавать нового контрагента, приходится записывать основной договор контрагента. Проблема в том, что для того чтобы записать реквизит ОсновнойДоговор необходимо делать избыточную запись справочника контрагенты.
Процедура СоздатьКонтрагентыИДоговоры()
//контрагент
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.УстановитьНовыйКод();
НовыйКонтрагент.Наименование = НаименованиеКонтрагент;
НовыйКонтрагент.Записать();
//договор
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
ДоговорКонтрагента.УстановитьНовыйКод();
ДоговорКонтрагента.Владелец = НовыйКонтрагент.Ссылка;
ДоговорКонтрагента.Организация = Организация;
ДоговорКонтрагента.Наименование = "Основной договор";
ДоговорКонтрагента.Записать();
//снова записуем
НовыйКонтрагент.ОсновнойДоговорКонтрагента = ДоговорКонтрагента.Ссылка;
НовыйКонтрагент.Записать();
КонецПроцедуры
Процедура СоздатьКонтрагентыИДоговорыПоНовому()
НовыйДоговорСсылка = Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(Новый УникальныйИдентификатор); //получаем ссылку для основного договора контрагента
//контрагент
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагентСсылка = СправочникКонтрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор);
НовыйКонтрагент.УстановитьСсылкуНового(НовыйКонтрагентСсылка);
НовыйКонтрагент.УстановитьНовыйКод();
НовыйКонтрагент.Наименование = НаименованиеКонтрагент;
НовыйКонтрагент.ОсновнойДоговорКонтрагента = НовыйДоговорСсылка;
НовыйКонтрагент.Записать();
//договор
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
ДоговорКонтрагента.УстановитьНовыйКод();
ДоговорКонтрагента.УстановитьСсылкуНового(НовыйДоговорСсылка);
ДоговорКонтрагента.Владелец = НовыйКонтрагентСсылка;
ДоговорКонтрагента.Организация = Организация;
ДоговорКонтрагента.Наименование = "Основной договор";
ДоговорКонтрагента.Записать();
КонецПроцедуры
Недостатки старого метода во всем!
Преимущества нового метода во всем, мы системе указываем конкретную ссылку. При этом никаких кэширований и самое важное, избавились от ненужной повторной записи объекта справочника "Контрагенты".
Особенность чрезвычайно интересная при загрузке справочников.
Есть реквизит Справочника "Контрагенты", "ОсновнойДоговор". И если создавать нового контрагента, приходится записывать основной договор контрагента. Проблема в том, что для того чтобы записать реквизит ОсновнойДоговор необходимо делать избыточную запись справочника контрагенты.
Процедура СоздатьКонтрагентыИДоговоры()
//контрагент
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.УстановитьНовыйКод();
НовыйКонтрагент.Наименование = НаименованиеКонтрагент;
НовыйКонтрагент.Записать();
//договор
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
ДоговорКонтрагента.УстановитьНовыйКод();
ДоговорКонтрагента.Владелец = НовыйКонтрагент.Ссылка;
ДоговорКонтрагента.Организация = Организация;
ДоговорКонтрагента.Наименование = "Основной договор";
ДоговорКонтрагента.Записать();
//снова записуем
НовыйКонтрагент.ОсновнойДоговорКонтрагента = ДоговорКонтрагента.Ссылка;
НовыйКонтрагент.Записать();
КонецПроцедуры
Процедура СоздатьКонтрагентыИДоговорыПоНовому()
НовыйДоговорСсылка = Справочники.ДоговорыКонтрагентов.ПолучитьСсылку(Новый УникальныйИдентификатор); //получаем ссылку для основного договора контрагента
//контрагент
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагентСсылка = СправочникКонтрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор);
НовыйКонтрагент.УстановитьСсылкуНового(НовыйКонтрагентСсылка);
НовыйКонтрагент.УстановитьНовыйКод();
НовыйКонтрагент.Наименование = НаименованиеКонтрагент;
НовыйКонтрагент.ОсновнойДоговорКонтрагента = НовыйДоговорСсылка;
НовыйКонтрагент.Записать();
//договор
ДоговорКонтрагента = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
ДоговорКонтрагента.УстановитьНовыйКод();
ДоговорКонтрагента.УстановитьСсылкуНового(НовыйДоговорСсылка);
ДоговорКонтрагента.Владелец = НовыйКонтрагентСсылка;
ДоговорКонтрагента.Организация = Организация;
ДоговорКонтрагента.Наименование = "Основной договор";
ДоговорКонтрагента.Записать();
КонецПроцедуры
- НовыйКонтрагент.Ссылка, ДоговорКонтрагента.Ссылка; Система тут кэширует всю ссылку.
- НовыйКонтрагент.Записать(); Лишняя запись объекта.
Преимущества нового метода во всем, мы системе указываем конкретную ссылку. При этом никаких кэширований и самое важное, избавились от ненужной повторной записи объекта справочника "Контрагенты".
Комментариев нет:
Отправить комментарий