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©, «Программист 1С в г.Минске», 21.05.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому