0
yur4egg
17.11.12
✎
08:21
|
Есть в глоб.модуле функция, создающая новый элемент справочника, копирующая в него значения реквизитов из аналогичного элемента-образца:
Функция КопияСправ(вхСправ,вКорень,вСебя="") Экспорт Спр=СоздатьОбъект("Справочник."+вхСправ.Вид());
Если вСебя="" Тогда
Спр.Новый();
Иначе
Спр.НайтиЭлемент(вСебя.ТекущийЭлемент());
КонецЕсли;
КолвоРек=Метаданные.Справочник(вхСправ.Вид()).Реквизит();
Для р=1 по КолвоРек Цикл
ИмяРек=Метаданные.Справочник(вхСправ.Вид()).Реквизит(р).Идентификатор;
Если Метаданные.Справочник(вхСправ.Вид()).Реквизит(р).Периодический=0 Тогда
Спр.УстановитьАтрибут(ИмяРек,вхСправ.ПолучитьАтрибут(ИмяРек));
КонецЕсли;
КонецЦикла;
Если вКорень=0 Тогда
Спр.Родитель=вхСправ.Родитель;
КонецЕсли;
Если Метаданные.Справочник(вхСправ.Вид()).АвтоНумерация=1 Тогда //1 - Нет атвонумерации, 2 - есть
Спр.Код=вхСправ.Код+"_Копия";
КонецЕсли;
Если вСебя="" Тогда
Спр.Записать();
КонецЕсли;
Возврат Спр;
КонецФункции //КопияСправ
Возникла необходимость скопировать значения реквизитов образца прямо в открытой форме справочника-приемника. Чтобы не писать похожий код еще раз, решил использовать эту функцию. Для этого передаю в нее Контекст из открытой формы в параметр вСебя. Так вот, Спр найденный через вСебя, принимает все реквизиты из образца правильно, но внутри открытой формы они остаются прежние (видно в отладчике). Как так? Ведь Спр ссылается на переданный Контекст. ПРи этом внутри справочника Форма.Обновить(1) Не помогает!
|
|