dev1c:param_name_tab
Список имен параметров табличного документа
Функция ПолучитьМассивИменПараметров(ОбластьТабДокумента) Экспорт
МассивИменПараметров = Новый Массив;
Для НомерСтроки = 1 По ОбластьТабДокумента.ВысотаТаблицы Цикл
Для НомерКолонки = 1 По ОбластьТабДокумента.ШиринаТаблицы Цикл
Ячейка = ОбластьТабДокумента.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
//если такого параметра еще нет, то добавим его
Если МассивИменПараметров.Найти(Ячейка.Параметр) = Неопределено тогда
МассивИменПараметров.Добавить(Ячейка.Параметр);
КонецЕсли;
ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
//выделим все параметры в шаблоне в отдельные строки
ТекстШаблона = Ячейка.Текст;
ТекстШаблона = СтрЗаменить(ТекстШаблона, "[", Символы.ПС + "[");
ТекстШаблона = СтрЗаменить(ТекстШаблона, "]", Символы.ПС);
Для Счетчик = 1 По СтрЧислоСтрок(ТекстШаблона) Цикл
ТекСтрока = СтрПолучитьСтроку(ТекстШаблона, Счетчик);
Если Лев(ТекСтрока, 1) = "[" тогда
ИмяПараметра = Сред(ТекСтрока, 2);
//если такого параметра еще нет, то добавим его
Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено тогда
МассивИменПараметров.Добавить(ИмяПараметра);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;//конец проверки, что в ячейке - текст, параметр или шаблон
КонецЦикла;//конец обхода по колонкам
КонецЦикла;//конец обхода по строкам
Возврат МассивИменПараметров;
КонецФункции
Или через сериализацию
Функция ПолучитьПараметрыТабличногоДокумента(ТабличныйДокумент)
Объект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);
КонецЦикла;
Возврат Результат;
КонецФункции
dev1c/param_name_tab.txt · Последнее изменение: 2025/01/31 12:18 — admin16