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

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

1С 8.3 Получить список параметров табличного документа (программно)

Данные > Примеры кода 1С > 1С 8.3 Табличный документ / Макет
Программно получить список параметров табличного документа в 1С 8.3:
Функция ПолучитьПараметрыТабличногоДокумента(ТабличныйДокумент)
   ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ТабличныйДокумент);

   ИменаПараметров = Новый Соответствие;
   Для Каждого ДанныеСтрок Из ОбъектXDTO.rowsItem Цикл
       Для Каждого Колонка Из ДанныеСтрок.row.c Цикл
           ИмяПараметра = Колонка.c.parameter;
           Если ИмяПараметра <> Неопределено Тогда
               ИменаПараметров.Вставить(ИмяПараметра);
           КонецЕсли;
           Если Колонка.c.f > 0 Тогда
               Формат = ОбъектXDTO.format[Колонка.c.f - 1];
               Если Формат.fillType = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
                   Для Каждого Содержание Из Колонка.c.tl.item Цикл
                       ПараметрыШаблона = ПараметрыШаблона(Содержание.content);
                       Для Каждого ИмяПараметра Из ПараметрыШаблона Цикл
                           ИменаПараметров.Вставить(ИмяПараметра);
                       КонецЦикла;
                   КонецЦикла;
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;

   Результат = Новый Соответствие;
   Для Каждого КлючИЗначение Из ИменаПараметров Цикл
       Результат[КлючИЗначение.Ключ] = ТабличныйДокумент.Параметры[КлючИЗначение.Ключ];
   КонецЦикла;

   Возврат Результат;

КонецФункции

Функция ПараметрыШаблона(Знач Строка)
   Результат = Новый Массив;
   Пока Истина Цикл
       Начало = Найти(Строка, "[");
       Если Начало = 0 Тогда
           Прервать;
       КонецЕсли;
       Конец = Найти(Строка, "]");
       Если Конец = 0 Тогда
           Прервать;
       КонецЕсли;

       ИмяПараметра = Сред(Строка, Начало + 1, Конец - Начало - 1);
       Если Не ПустаяСтрока(ИмяПараметра) Тогда
           Результат.Добавить(ИмяПараметра);
       КонецЕсли;
       Строка = Сред(Строка, Конец + 1);
   КонецЦикла;

   Возврат Результат;

КонецФункции

// Имена параметров могут содержать пробел, поэтому использование структуры может вызвать ошибку.
Получить список параметров табличного документа с помощью RegExp в 1С 8.3.23:
Функция ПолучитьПараметрыТабличногоДокументаRegExp(ТабличныйДокумент)

   //Макет - ТабличныйДокумент или область табличного документа
   //Превращаем в 1С-ную кашу:
   Стр = ЗначениеВСтрокуВнутр(Макет);

   ПараметрыСтруктура = Новый Структура;

   //это для обычных параметров
   Результат = СтрНайтиВсеПоРегулярномуВыражению(Стр, "\[([^\]]+)\]", Истина, Истина);

   Для Каждого Элемент Из Результат Цикл
       Значение = Элемент.ПолучитьГруппы()[0].Значение;
       ПараметрыСтруктура.Вставить(Значение, Макет.Параметры[Значение]);
   КонецЦикла;

   //это для шаблонов и форматрованных строк
   Результат = СтрНайтиВсеПоРегулярномуВыражению(Стр, "\{\s*\""\"",\s*\""([^\""]+)\""\s*\}", Истина, Истина);

   Для Каждого Элемент Из Результат Цикл
       Значение = Элемент.ПолучитьГруппы()[0].Значение;
       ПараметрыСтруктура.Вставить(Значение, Макет.Параметры[Значение]);
   КонецЦикла;

   Возврат Результат;

КонецФункции
Оригинал статьи: https://infostart.ru/1c/articles/2179573/
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 04.09.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому