Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УФ. ТЗ в РеквизитФормы и обратно. Теряется ТипЗначения колонки

УФ.  ТЗ в РеквизитФормы и обратно. Теряется ТипЗначения	 колонки
Я
   palpetrovich
 
07.08.21 - 09:34
ТЗ до:
// ТЗ.Колонки.Карточка.ТипЗначения  Строка, Null    
// ТЗ.Колонки.Товар.ТипЗначения.КвалификаторыСтроки.Длина  10

ЗначениеВРеквизитФормы(ТЗ, "ТаблицаДанных");

ТЗ = РеквизитФормыВЗначение("ТаблицаДанных");  // или ТЗ = ТаблицаДанных.Выгрузить() - результат тот же

ТЗ после:
// ТЗ.Колонки.Карточка.ТипЗначения  (пусто)    
// ТЗ.Колонки.Товар.ТипЗначения.КвалификаторыСтроки.Длина  0

Это можно победить?
   palpetrovich
 
1 - 07.08.21 - 09:37
+(0)
колонки ТаблицаДанных формирую так, ТипЗначения судя по отладчику устанавливается

МассивРеквизитов.Очистить();
Для Каждого Колонка ИЗ ТЗ.Колонки Цикл
        МассивТипов = Новый Массив;
        МассивТипов.Добавить(Колонка.ТипЗначения);
        НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ТаблицаДанных");
        МассивРеквизитов.Добавить(НоваяКолонка);
КонецЦикла;
ИзменитьРеквизиты(МассивРеквизитов);
   palpetrovich
 
2 - 07.08.21 - 10:03
+(0)  семерочное УстановитьПараметрыКолонки порешало-бы проблемку ...эх :(
   palpetrovich
 
3 - 07.08.21 - 10:13
+(0) жертва копи пасте )
// ТЗ.Колонки.Товар.ТипЗначения.КвалификаторыСтроки.Длина

читать как 
// ТЗ.Колонки.Карточка.ТипЗначения.КвалификаторыСтроки.Длина
   acht
 
4 - 07.08.21 - 11:04
(1) >  ТипЗначения судя по отладчику устанавливается
Во что он устанавливается-то?
> МассивТипов.Добавить(Колонка.ТипЗначения);
Здесь ты запихиваешь в массив значение типа ОписаниеТипов, а не Тип, который ожидает конструктор ОписаниеТипов

> НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ТаблицаДанных");

А здесь ты создаешь описание типа из странного массива и с неявным указанием КвалификаторыСтроки.Длина = 0.
КвалификаторыСтроки ж оно к описанию типа относятся, не к Тип("Строка")
   palpetrovich
 
5 - 07.08.21 - 11:13
(4) спасибо, попробую.
Не знаю правда когда, админы базу забрали на обновление :)
   palpetrovich
 
6 - 07.08.21 - 13:20
(4) Я немного сомневался, ведь в Новый ОписаниеТипов(МассивТипов) - МассивТипов тип ОписаниеТипов со всем содержимым, но сработало. Спасибо
    Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл
        
        КЧ = Новый КвалификаторыЧисла(Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность, Колонка.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти);
        КС = Новый КвалификаторыСтроки(Колонка.ТипЗначения.КвалификаторыСтроки.Длина);
        МассивТипов = Новый Массив;
        Если Колонка.ТипЗначения.СодержитТип(Тип("Строка")) Тогда
            МассивТипов.Добавить(Тип("Строка"));
            ОписаниеТиповС = Новый ОписаниеТипов(МассивТипов, , КС);
            НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, ОписаниеТиповС, "ТаблицаДанных");
        ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда
            МассивТипов.Добавить(Тип("Число"));
            ОписаниеТиповЧ = Новый ОписаниеТипов(МассивТипов, , КЧ);
            НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, ОписаниеТиповЧ, "ТаблицаДанных");
        Иначе    
            МассивТипов.Добавить(Колонка.ТипЗначения);
            НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ТаблицаДанных");
        КонецЕсли;    
        
        МассивРеквизитов.Добавить(НоваяКолонка);
    КонецЦикла;

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.