====== Список имен параметров табличного документа ====== Функция ПолучитьМассивИменПараметров(ОбластьТабДокумента) Экспорт МассивИменПараметров = Новый Массив; Для НомерСтроки = 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); КонецЦикла; Возврат Результат; КонецФункции