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

Возникла необходимость скопировать значения реквизитов образца прямо в открытой форме справочника-приемника. Чтобы не писать похожий код еще раз, решил использовать эту функцию. Для этого передаю в нее Контекст из открытой формы в параметр вСебя. Так вот, Спр найденный через вСебя, принимает все реквизиты из образца правильно, но внутри открытой формы они остаются прежние (видно в отладчике). Как так? Ведь Спр ссылается на переданный Контекст. ПРи этом внутри справочника Форма.Обновить(1) Не помогает!
1 Надсмотрщик
 
17.11.12
08:42
Через параметры только в ту форму, откуда открывал новую форму