1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем Oleh, 30 авг 2011.

  1. Oleh

    Oleh Гость

    Репутация:
    0
    Помогите пожалуйста!
    Эсть табличное поле з колонками Реквізит и Значення
    Необхідно щоб при введені значення Реквізит в текуший строці в колонці (Значення) задавася тип як у реквізита для полегшення подальшого заповнення!
    В колонці Значення типи полів даних можуть бути різними в залежності від типів реквізитів!
    Реквізити автоматично вносяться в табличнеПоле при виборі документу в Полеввода(ТипДокумента)!
    Код:
    Процедура ТипДокументаПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Элемент.Значение) Тогда
    ЭтаФорма.ТабличноеПоле1.Очистить();
    Для Каждого док Из Метаданные.Документы[Элемент.Значение].Реквизиты 
    Цикл
    Имя = Док.Имя;
    Синоним = Док.Синоним;			
    ЭлементыФормы.ТабличноеПоле1.ДобавитьСтроку();
    
    ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные.Реквізит=Имя;
    
    ТипЗнач=Метаданные.НайтиПоТипу(Метаданные.Документы[Элемент.Значение].Реквизиты[Имя].Тип.Типы()[0]).ПолноеИмя(); 
    
    //ТипЗнач=СправочникСсылка.Склад --- работает, а вот дальше как?
    
    //Может так, но выдает ошибку!
    
    МассивТипов=Новый Массив();
    
    МассивТипов.Добавить(Тип(ТипЗнач));
    
    
    ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные["Значення"] = Новый ОписаниеТипов(МассивТипов);
    
    КонецЦикла;
    
    КонецЕсли;
    
    КонецПроцедуры
     
  2. Дайнеко

    Дайнеко Well-Known Member

    Репутация:
    0
    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Полагаю, надо использовать ПривестиЗначение()

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

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

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

Поделиться этой страницей