Привязка ячейки табличного поля к типу реквизита

  • Автор темы Oleh
  • Дата начала
O

Oleh

Гость
#1
Помогите пожалуйста!
Эсть табличное поле з колонками Реквізит и Значення
Необхідно щоб при введені значення Реквізит в текуший строці в колонці (Значення) задавася тип як у реквізита для полегшення подальшого заповнення!
В колонці Значення типи полів даних можуть бути різними в залежності від типів реквізитів!
Реквізити автоматично вносяться в табличнеПоле при виборі документу в Полеввода(ТипДокумента)!
Код:
Процедура ТипДокументаПриИзменении(Элемент)

Если ЗначениеЗаполнено(Элемент.Значение) Тогда
ЭтаФорма.ТабличноеПоле1.Очистить();
Для Каждого док Из Метаданные.Документы[Элемент.Значение].Реквизиты 
Цикл
Имя = Док.Имя;
Синоним = Док.Синоним;			
ЭлементыФормы.ТабличноеПоле1.ДобавитьСтроку();

ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Реквізит=Имя;

ТипЗнач=Метаданные.НайтиПоТипу(Метаданные.Документы[Элемент.Значение].Реквизиты[Имя].Тип.Типы()[0]).ПолноеИмя(); 

//ТипЗнач=СправочникСсылка.Склад --- работает, а вот дальше как?

//Может так, но выдает ошибку!

МассивТипов=Новый Массив();

МассивТипов.Добавить(Тип(ТипЗнач));


ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные["Значення"] = Новый ОписаниеТипов(МассивТипов);

КонецЦикла;

КонецЕсли;

КонецПроцедуры
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#2
Полагаю, надо использовать ПривестиЗначение()

И еще, вот эта конструкция мне не нравится:
Метаданные.НайтиПоТипу(...
Получается, с МД берешь тип реквизита, из него выделяешь только первый (а если он составной?). Затем его символьное Имя. А потом по символьному имени опять получаешь тип. Рецепта не выдам, но должен быть путь более простой.

Может тебя наведет на мысль, что своим выражением ты получил только 1 тип (из описания типов выделил первый). А к колонке Табл нужно применить описание типов.

А еще мне текст не понравился. Я не про рiдну мову, а про 1C. Ты и в самом деле так словами вразброс пишешь? Начни с серьезного шага - напиши:
Код:
Если НЕ ЗначениеЗаполнено(Элемент.Значение) Тогда
Возврат;
КонецЕсли;