Создание колонок ТЗ с определенными типами, которые соответствуют типам значений некоторой структуры.
Всем доброго времени суток! Пытаюсь преобразовать массив структур в таблицу значений с целью последующей сортировки и отбора.
Есть такая функция:
Сначала создаю колонки, соответсвующие ключам структуры. Пытаюсь задать тип колонки в соответствии с типом значения соответствующего ключа.
С примитивными типами всё ок. Дохожу до ключа, значения которого ссылаются на стандартное перечисление конфигурации "УчетНачисленийВСреднемЗаработкеОбщий". И вот тут начинаются проблемы. Переменной "ТипЗначения" присваивается значение УчетНачисленийВСреднемЗаработкеОбщий. А мне нужно, чтобы было так - ПеречислениеСсылка.УчетНачисленийВСреднемЗаработкеОбщий. Как это сделать не понимаю...
Создавать конкретные колонки в коде с указанием конкретного типа я не вижу смысла. Пытаюсь сделать универсальное решение.
Может кто-нибудь помочь?
Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.19.48)
Есть такая функция:
Функция МассивВТаблицуЗначений(МассивСтруктур)
Таблица = Новый ТаблицаЗначений;
Если ТипЗнч(МассивСтруктур) = Тип("Массив")
И МассивСтруктур.Количество() > 0
И ТипЗнч(МассивСтруктур[0]) = Тип("Структура") Тогда
ПерваяСтруктура = МассивСтруктур[0];
Для Каждого Элемент Из ПерваяСтруктура Цикл
ТипЗначения = Строка(ТипЗнч(Элемент.Значение));
Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(ТипЗначения));
КонецЦикла;
Для Каждого Структура Из МассивСтруктур Цикл
НоваяСтрока = Таблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура);
КонецЦикла;
КонецЕсли;
Возврат Таблица;
КонецФункции
ПоказатьСначала создаю колонки, соответсвующие ключам структуры. Пытаюсь задать тип колонки в соответствии с типом значения соответствующего ключа.
С примитивными типами всё ок. Дохожу до ключа, значения которого ссылаются на стандартное перечисление конфигурации "УчетНачисленийВСреднемЗаработкеОбщий". И вот тут начинаются проблемы. Переменной "ТипЗначения" присваивается значение УчетНачисленийВСреднемЗаработкеОбщий. А мне нужно, чтобы было так - ПеречислениеСсылка.УчетНачисленийВСреднемЗаработкеОбщий. Как это сделать не понимаю...
Создавать конкретные колонки в коде с указанием конкретного типа я не вижу смысла. Пытаюсь сделать универсальное решение.
Может кто-нибудь помочь?
Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.19.48)
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Понятно, спасибо за разъяснения. Вообще цель в присвоении типизации - это дальнейшее использование данной ТЗ в Построителе запроса. Мне нужен гибкий отбор как раз по значениям в этой колонке. А как только создаю построитель и устанавливаю отбор, то не даёт установить. Везде говорят что как раз из-за отсутсвия типизации у колонок таблицы..
Так а в чём проблема создать описание типа на основе массива типов?
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(Элемент.Значение));
Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(МассивТипов));
(6)
Честно говоря была такая идея. Сейчас попробовал проверить. Да, так действительно работает. У колонок получается составной тип, насколько я понимаю. Построитель запроса более не ругается на установку отбора. Но я честно говоря всё равно не понимаю как это работает... Сейчас смотрю на типы колонок в исходной ТЗ - там составные типы. Смотрю ТЗ, которую возвращает построитель запроса - там уже строго те типы у каждой колонки, которые и должны быть.
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(Элемент.Значение));
Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(МассивТипов))
МассивТипов.Добавить(ТипЗнч(Элемент.Значение));
Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(МассивТипов))
Честно говоря была такая идея. Сейчас попробовал проверить. Да, так действительно работает. У колонок получается составной тип, насколько я понимаю. Построитель запроса более не ругается на установку отбора. Но я честно говоря всё равно не понимаю как это работает... Сейчас смотрю на типы колонок в исходной ТЗ - там составные типы. Смотрю ТЗ, которую возвращает построитель запроса - там уже строго те типы у каждой колонки, которые и должны быть.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот