|
УФ. ТЗ в РеквизитФормы и обратно. Теряется ТипЗначения колонки |
☑ |
0
palpetrovich
07.08.21
✎
09:34
|
ТЗ до:
// ТЗ.Колонки.Карточка.ТипЗначения Строка, Null
// ТЗ.Колонки.Товар.ТипЗначения.КвалификаторыСтроки.Длина 10
ЗначениеВРеквизитФормы(ТЗ, "ТаблицаДанных");
ТЗ = РеквизитФормыВЗначение("ТаблицаДанных"); // или ТЗ = ТаблицаДанных.Выгрузить() - результат тот же
ТЗ после:
// ТЗ.Колонки.Карточка.ТипЗначения (пусто)
// ТЗ.Колонки.Товар.ТипЗначения.КвалификаторыСтроки.Длина 0
Это можно победить?
|
|
1
palpetrovich
07.08.21
✎
09:37
|
+(0)
колонки ТаблицаДанных формирую так, ТипЗначения судя по отладчику устанавливается
МассивРеквизитов.Очистить();
Для Каждого Колонка ИЗ ТЗ.Колонки Цикл
МассивТипов = Новый Массив;
МассивТипов.Добавить(Колонка.ТипЗначения);
НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ТаблицаДанных");
МассивРеквизитов.Добавить(НоваяКолонка);
КонецЦикла;
ИзменитьРеквизиты(МассивРеквизитов);
|
|
2
palpetrovich
07.08.21
✎
10:03
|
+(0) семерочное УстановитьПараметрыКолонки порешало-бы проблемку ...эх :(
|
|
3
palpetrovich
07.08.21
✎
10:13
|
+(0) жертва копи пасте )
// ТЗ.Колонки.Товар.ТипЗначения.КвалификаторыСтроки.Длина
читать как
// ТЗ.Колонки.Карточка.ТипЗначения.КвалификаторыСтроки.Длина
|
|
4
acht
07.08.21
✎
11:04
|
(1) > ТипЗначения судя по отладчику устанавливается
Во что он устанавливается-то?
> МассивТипов.Добавить(Колонка.ТипЗначения);
Здесь ты запихиваешь в массив значение типа ОписаниеТипов, а не Тип, который ожидает конструктор ОписаниеТипов
> НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ТаблицаДанных");
А здесь ты создаешь описание типа из странного массива и с неявным указанием КвалификаторыСтроки.Длина = 0.
КвалификаторыСтроки ж оно к описанию типа относятся, не к Тип("Строка")
|
|
5
palpetrovich
07.08.21
✎
11:13
|
(4) спасибо, попробую.
Не знаю правда когда, админы базу забрали на обновление :)
|
|
6
palpetrovich
07.08.21
✎
13:20
|
(4) Я немного сомневался, ведь в Новый ОписаниеТипов(МассивТипов) - МассивТипов тип ОписаниеТипов со всем содержимым, но сработало. Спасибо
Для Каждого Колонка ИЗ ТаблицаРезультат.Колонки Цикл
КЧ = Новый КвалификаторыЧисла(Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность, Колонка.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти);
КС = Новый КвалификаторыСтроки(Колонка.ТипЗначения.КвалификаторыСтроки.Длина);
МассивТипов = Новый Массив;
Если Колонка.ТипЗначения.СодержитТип(Тип("Строка")) Тогда
МассивТипов.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(МассивТипов, , КС);
НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, ОписаниеТиповС, "ТаблицаДанных");
ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда
МассивТипов.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(МассивТипов, , КЧ);
НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, ОписаниеТиповЧ, "ТаблицаДанных");
Иначе
МассивТипов.Добавить(Колонка.ТипЗначения);
НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "ТаблицаДанных");
КонецЕсли;
МассивРеквизитов.Добавить(НоваяКолонка);
КонецЦикла;
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший