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

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

1С 8.3 Скопировать колонки в Таблицу Значений или Дерево значений

Данные > Примеры кода 1С > 1С 8.3 Дерево значений
Данная функция может использоваться как конструктор для создания таблицы или дерева значений из других объектов, имеющих коллекцию колонок, включая РезультатЗапроса. А также дополнения колонок из других коллекций.

Функция копирования колонок в таблицу или дерево значений (конструктор таблиц и деревьев значений) в 1С 8.3 (от Sokolin D.A.):
// СкопироватьКолонки  —  Копирует заданые колонки из Источника в Приемник с учетом исключений
//
// Параметры:
// Приемник  — ТаблицаЗначений, ДеревоЗначений — коллекция в которой создаются колонки
// Источник   — РезультатЗапроса, ТаблицаЗначений, ДеревоЗначений — коллекция из которой копируются свойства колонок
//                    — СтрокаДереваЗначений, СтрокаТаблицыЗначений — строка коллекции из которой копируются свойства колонок
// ИменаКолонок — Строка — разделенные запятыми имена колонок, которые подлежат копированию
//                    — Массив, ФиксированныйМассив — массив имен колонок, которые подлежат копированию
//                    — Неопределено — копируются все колонки с учетом исключений
// ИменаКолонокИсключений — Строка — разделенные запятыми имена колонок, которые исключены из копирования
//                    — Массив, ФиксированныйМассив — массив имен колонок, которые исключены из копирования
//                    — Неопределено — нет исключений
//
// Возвращаемое значение:
//                    — ТаблицаЗначений, ДеревоЗначений — значение параметра Приемник
// Пример:
//                   Дерево = СкопироватьКолонки(Новый ДеревоЗначений(), РезультатЗапроса);
//
Функция СкопироватьКолонки(Приемник, Знач Источник, Знач ИменаКолонок = Неопределено, Знач ИменаКолонокИсключений = Неопределено) Экспорт
   Перем Колонка, КоллекцияИмен, КоллекцияИменИсключений, КолонкиИсточника;

   Если ЗначениеЗаполнено(ИменаКолонок) Тогда
       Если ТипЗнч(ИменаКолонок) = Тип("Строка") Тогда
           КоллекцияИмен = РазложитьСтрокуВМассивПодстрок(ИменаКолонок, ",", Истина, Истина);
       Иначе
           КоллекцияИмен = ИменаКолонок;
       КонецЕсли;
   Иначе
       КоллекцияИмен = Неопределено;
   КонецЕсли;

   Если ЗначениеЗаполнено(ИменаКолонокИсключений) Тогда
       Если ТипЗнч(ИменаКолонокИсключений) = Тип("Строка") Тогда
           КоллекцияИменИсключений = РазложитьСтрокуВМассивПодстрок(ИменаКолонокИсключений, ",", Истина, Истина);
       Иначе
           КоллекцияИменИсключений = ИменаКолонокИсключений;
       КонецЕсли;
   Иначе
       КоллекцияИменИсключений = Неопределено;
   КонецЕсли;

   Если ТипЗнч(Источник) = Тип("СтрокаДереваЗначений")
       Или ТипЗнч(Источник) = Тип("СтрокаТаблицыЗначений") Тогда
       КолонкиИсточника = Источник.Владелец().Колонки;
   Иначе
       КолонкиИсточника = Источник.Колонки;
   КонецЕсли;

   Для Каждого Колонка Из КолонкиИсточника Цикл
       Если (КоллекцияИмен = Неопределено Или КоллекцияИмен.Найти(Колонка.Имя) <> Неопределено)
           И (КоллекцияИменИсключений = Неопределено Или КоллекцияИменИсключений.Найти(Колонка.Имя) = Неопределено)
       Тогда
           Если ТипЗнч(Источник) = Тип("РезультатЗапроса") Тогда
               Приемник.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения, Колонка.Имя, Колонка.Ширина);
           Иначе
               Приемник.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения, Колонка.Заголовок, Колонка.Ширина);
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат Приемник;
КонецФункции
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 08.04.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому