1С 8.3 Типизация колонок Таблицы Значений - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Типизация колонок Таблицы Значений

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Реклама:
Перейти в раздел примеры кода 1С 8.3:
Типизация колонок Таблицы значений в 1С 8.3:
Процедура Типизация_колонок_ТЗ(ТЗ) Экспорт
   // Как типизировать колонку таблицы значений в 1С 8.3?

   // Процедура обходит колонки Таблицы Значений,
   // а те колонки у которых тип: "Произвольный",
   // меняет на типизированные

   МассивКолонок = Новый Массив;
   Для Каждого ТекКолонка Из ТЗ.Колонки Цикл

       Если ЗначениеЗаполнено(ТекКолонка.ТипЗначения.Типы()) Тогда // тип есть, в обработке не нуждается
           Продолжить;
       КонецЕсли;

       ОписаниеТЗ = Новый Структура("Имя,Заголовок,Типы,Ширина,Значения");
       ЗаполнитьЗначенияСвойств(ОписаниеТЗ, ТекКолонка);

       ОписаниеТЗ.Типы     = Новый Массив;
       ОписаниеТЗ.Значения = ТЗ.ВыгрузитьКолонку(0);

       Для Каждого ТекущееЗначение Из ОписаниеТЗ.Значения Цикл
           ТипЗначения = ТипЗнч(ТекущееЗначение);
           Если ОписаниеТЗ.Типы.Найти(ТипЗначения) = Неопределено Тогда
               ОписаниеТЗ.Типы.Добавить(ТипЗначения);
           КонецЕсли;
       КонецЦикла;

       МассивКолонок.Добавить(ОписаниеТЗ);

   КонецЦикла;

   Для Каждого ОписаниеТЗ Из МассивКолонок Цикл

       ТипыКолонкиТЗ  = ОписаниеТЗ.Типы;
       // создаем с произвольным типом, так как невозможно создать колонку с типом "Неопределено"
       Если ТипыКолонкиТЗ.Количество() = 1 И ТипыКолонкиТЗ[0] = Тип("Неопределено") Тогда
           ТипыКолонкиТЗ.Добавить(Тип("Null"));
           ТипыКолонкиТЗ.Добавить(Тип("Булево"));
       КонецЕсли;

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

       ТЗ.ЗагрузитьКолонку(ОписаниеТЗ.Значения, НоваяКолонкаТЗ);
       ТЗ.Колонки.Удалить(ОписаниеТЗ.Имя);

       НоваяКолонкаТЗ.Имя = ОписаниеТЗ.Имя;

   КонецЦикла;

КонецПроцедуры
Поиск кода
0
комментарии
____________________
Copyright by 1Cnik.by©, «Программист 1С в г.Минске», 21.05.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому