Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как получить описание типа по значению?

Как получить описание типа по значению?
Я
   Галахад
 
23.01.13 - 11:34
Задача:
Добавить в таблицу значений колонку
с типом колонки другой таблицы значений. :-)

Написал вот такой код. Нерабочий.
ТипКолонки = ТипЗнч(тз1[0][ИмяКолонки]);
тз2.Колонки.Добавить(ИмяКолонки, ТипКолонки);

Какой будет рабочим?
 
 
   acsent
 
1 - 23.01.13 - 11:35
Тип <> ОписаниеТипа
   Галахад
 
2 - 23.01.13 - 11:36
(1) Спасибо Кэп. А как описание получить.
Можно не из типа, а из значения.
   samozvanec
 
3 - 23.01.13 - 11:37
СП читать не предлагать?
   mzelensky
 
4 - 23.01.13 - 11:38
СП:


ОписаниеТипов (TypeDescription)
На основании объекта ОписаниеТипов
Синтаксис:

Новый ОписаниеТипов(<ИсходноеОписаниеТипов>, <ДобавляемыеТипы>, <ВычитаемыеТипы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
Параметры:

<ИсходноеОписаниеТипов> (необязательный)

Тип: ОписаниеТипов.
Исходное описание типов, на основании которого будет строиться новое. 
<ДобавляемыеТипы> (необязательный)

Тип: Массив; Строка.
Массив значений типа Тип, состоящий из типов, которые будут использованы в объекте, или строка содержащая имена типов разделенных запятыми.
<ВычитаемыеТипы> (необязательный)

Тип: Массив; Строка.
Массив значений типа Тип (или строка, содержащая имена типов, разделенных запятыми), состоящий из типов, которые будут исключены из исходного описания, указанного в первом параметре.
<КвалификаторыЧисла> (необязательный)

Тип: КвалификаторыЧисла.
Квалификаторы числа, описывающие допустимые значения числового типа. 
<КвалификаторыСтроки> (необязательный)

Тип: КвалификаторыСтроки. 
Квалификаторы строки, описывающие допустимые значения строкового типа. 
<КвалификаторыДаты> (необязательный)

Тип: КвалификаторыДаты. 
Квалификаторы даты, описывающие допустимые значения типа Дата. 
<КвалификаторыДвоичныхДанных> (необязательный)

Тип: КвалификаторыДвоичныхДанных. 
Квалификаторы двоичных данных.
Описание:

Создает описание типов на основании другого описания типов, путем добавления одних и исключения других типов. Если новый квалификатор не указан, будут оставлены квалификаторы исходного описания типов.
Пример:

// расширим описание ДопустимыеТипы новыми типами
 
Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.Методы"));
Массив.Добавить(Тип("Число"));
Знак = ДопустимыйЗнак.Неотрицательный;
КвЧисла = Новый КвалификаторыЧисла(10, 2, Знак);

ДопустимыеТипы = Новый ОписаниеТипов(ДопустимыеТипы, Массив, , КвЧисла);
   НафНаф
 
5 - 23.01.13 - 11:39
(4) это не тот конструктор, ему другой нужен
   samozvanec
 
6 - 23.01.13 - 11:39
(4) на основании типов надо
   samozvanec
 
7 - 23.01.13 - 11:40
+(6) тоже самое, только массив с типами первым параметром. это для тех, у кого нет СП
   mzelensky
 
8 - 23.01.13 - 11:43
(5) почему? подходит! ток вместо
Тип("СправочникСсылка.Методы")

нужно

ТипЗнч(тз1[0][ИмяКолонки])

и вроде все.

Вот кусок из рабочего кода:

МассивТипов = Новый Массив;
                        МассивТипов.Добавить(Тип("Строка"));
                        МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));
                        Тип=Новый ОписаниеТипов(МассивТипов);

ТЗ.Колонки.Добавить(ИмяКолонкиТЗ, Новый ОписаниеТипов("Строка") );
   Галахад
 
9 - 23.01.13 - 11:45
ТипКолонки = ТипЗнч(тз1[0][ИмяКолонки]);
        
Массив = Новый Массив;
Массив.Добавить(ТипКолонки);
        
Описание = Новый ОписаниеТипов(, Массив, , );

Ошибка при вызове конструктора (ОписаниеТипов): Несоответствие типов (параметр номер '2')
        Описание = Новый ОписаниеТипов(, Массив, , );

Что я делаю не так?
   mzelensky
 
10 - 23.01.13 - 11:45
Ой, не то вставил


вместо
ТЗ.Колонки.Добавить(ИмяКолонкиТЗ, Новый ОписаниеТипов("Строка") );

надо
ТабЗагрузки.Колонки.Добавить(ИмяКолонкиТЗ,Тип );
 
 Рекламное место пустует
   viktor_vv
 
11 - 23.01.13 - 11:45
(8) Че так сложно-то
ТЗ.Колонки.Добавить(ИмяКолонкиТЗ, Новый ОписаниеТипов(тз1.Колонки[ИмяКолонки].ТипЗначения) )
   acsent
 
12 - 23.01.13 - 11:46
(11) можно даже проще
ТЗ.Колонки.Добавить(ИмяКолонкиТЗ, тз1.Колонки[ИмяКолонки].ТипЗначения)
   mzelensky
 
13 - 23.01.13 - 11:47
(11) у меня там просто составные типы и много условий. Поэтому для мня так проще :)
   samozvanec
 
14 - 23.01.13 - 11:47
попытка телепатии: копировать колонки не предлагать?
   Nzn
 
15 - 23.01.13 - 11:48
(9) ТипЗнч возвращает Тип
   viktor_vv
 
16 - 23.01.13 - 11:49
(12) Точно. Если не надо модифицировать исходное описание типов, то таки да.

(13) Я так понял тебе один в один надо описание типов из исходной ТЗ.
   samozvanec
 
17 - 23.01.13 - 11:49
(9) массив первым параметром
   х86
 
18 - 23.01.13 - 11:50
(0)ну чо мудрить???

ня
    Таб1 = Новый ТаблицаЗначений;
    Таб1.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    
    Таб2 = Новый ТаблицаЗначений;
    Таб2.Колонки.Добавить("Номенклатура", Таб1.Колонки[0].ТипЗначения);

   viktor_vv
 
19 - 23.01.13 - 11:50
(16) Попутал (13) с ТС'ом.
   samozvanec
 
20 - 23.01.13 - 11:51
ТС, ответь на (14), пытаюсь развивать навыки
   Галахад
 
21 - 23.01.13 - 11:55
(11) Спасибо. Я знал, что все просто. :-)

(17) Да, спасибо, заработало.

(14) Вопроса не понял. Как можно скопировать колонку?
   samozvanec
 
22 - 23.01.13 - 12:00
(21) ПустаяТЗСНужнымиКолонками = ТвояТЗ.СкопироватьКолонки("СписокИменНужныхКолонокЧерезЗапятую");
   х86
 
23 - 23.01.13 - 12:01
(22)+ 100500
проще бывает скопировать ТЗ и очистить её
   Галахад
 
24 - 23.01.13 - 12:01
(22) А, понял. Но, тз2 не пустая таблица.
   samozvanec
 
25 - 23.01.13 - 12:02
(24) ну вот, без левелапа остался(


Список тем форума
Рекламное место пустует  Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует