Имя: Пароль:
1C
 
Табличный документ. Параметры. Как получить имена параметров?
0 Галахад
 
гуру
14.11.25
15:45
Для каждого Параметр Из Область.Параметры Цикл
...

Как тут получить имя Параметра?
1 Волшебник
 
14.11.25
15:56
Предварительно переберите все ячейки от Лево/Вверх до Право/Низ
Для каждой определите свойство Заполнение
Если там ТипЗаполненияОбластиТабличногоДокумента.Параметр, то вот он.
Если там ТипЗаполненияОбластиТабличногоДокумента.Шаблон, то парсите строку на предмет [параметр]
В итоге получите список параметров.
2 TormozIT
 
гуру
14.11.25
15:55
только через сериализацию см. ирОбщий.ПараметрыТабличногоДокументаЛкс
3 Галахад
 
гуру
14.11.25
15:56
(1) ИИ? ;-) Спасибо!

(2) Спасибо!
4 Волшебник
 
14.11.25
15:57
(3) Нет, это моя гипотеза. Не проверял
5 Галахад
 
гуру
14.11.25
15:59
(4) Рабочая. Но я думал есть что полегче. ))
6 Волшебник
 
14.11.25
16:01
(5) Теперь закиньте задачу и идею в промт и доведите до рабочего программного кода
7 Галахад
 
гуру
14.11.25
16:02
(6) 👌
8 Волшебник
 
14.11.25
16:13
Можно ещё распарсить MXL, там что-то интересное:
{16,0,
	{1,1,
	{"ru","текст"}},0},2,0,1,1,
	{16,1,{1,1,{"","параметр"}},0},3,0,1,1,
	{16,2,{1,1,{"ru","бла-бла [шаблон]"}},0},


ищите строки типа:
1,{"","параметр"}
1,{"ru","шаблон [параметр]"}
10 Волшебник
 
14.11.25
16:17
(2) Тоже интересное решение
11 Галахад
 
гуру
14.11.25
16:24
(8) 1С-никам наверное все же проще парсить:
ОбластьXML = ОбщегоНазначения.ЗначениеВСтрокуXML(Область)
12 Ненавижу 1С
 
гуру
14.11.25
17:03
ОбщегоНазначенияБЗК.ПараметрыТабличногоДокумента(ТабличныйДокумент)
13 Галахад
 
гуру
14.11.25
17:13
(12) Отлично! Спасибо!
14 Волшебник
 
14.11.25
17:23
вот ещё решение https://infostart.ru/1c/articles/1999853/
через ЗначениеВСтрокуВнутр

осторожнее с языком "ru"
15 Garykom
 
гуру
14.11.25
18:36
(0) Для какой практической задачи это требуется?
Ни разу с подобной необходимостью (за 20 лет работы с 1С) не сталкивался

Даже если писать некую универсальную обработку для модификации табличных документов - зачем там параметры?
Там уже работа с ячейками идет напрямую

А если мы встраиваемся (например через расширение) в типовое заполнение табдоков - для конкретного макета параметры обычно заранее известны
А если неизвестны и надо заменять значение неких параметров - ну так заменяй все (совпадающие по именам) и пофиг
Зачем знать есть он в области или нет?
16 Волшебник
 
14.11.25
18:44
(15) пишет какой-то конструктор, понадобилась рефлексия
Может настройка шаблона на уровне Предприятия
17 Волшебник
 
14.11.25
19:12
(5) что же вы такие ленивые...
// Функция возвращает массив уникальных имен параметров в указанной области
// ОбластьТабДок - может быть областью табличного документа или макета
Функция ПолучитьМассивИменПараметров(ОбластьТабДок) Экспорт
    
    МассивИменПараметров = Новый Массив;
    
    // Перебираем все строки и колонки области
    Для НомерСтроки = 1 По ОбластьТабДок.ВысотаТаблицы Цикл
        Для НомерКолонки = 1 По ОбластьТабДок.ШиринаТаблицы Цикл
            
            // Получаем область одной ячейки
            Ячейка = ОбластьТабДок.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
            
            // Проверяем тип заполнения ячейки
            Если Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда
                ИмяПараметра = Ячейка.Параметр;
                // Добавляем в массив, если еще нет
                Если МассивИменПараметров.Найти(ИмяПараметра) = Неопределено Тогда
                    МассивИменПараметров.Добавить(ИмяПараметра);
                КонецЕсли;
                
            ИначеЕсли Ячейка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Шаблон Тогда
                // Извлекаем параметры из шаблона
                ПараметрыШаблона = ИзвлечьПараметрыИзШаблона(Ячейка.Текст);
                Для Каждого Параметр Из ПараметрыШаблона Цикл
                    Если МассивИменПараметров.Найти(Параметр) = Неопределено Тогда
                        МассивИменПараметров.Добавить(Параметр);
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
            
        КонецЦикла;
    КонецЦикла;
    
    Возврат МассивИменПараметров;
    
КонецФункции

// Вспомогательная функция для извлечения параметров из шаблонного текста
Функция ИзвлечьПараметрыИзШаблона(ТекстШаблона)
    
    МассивПараметров = Новый Массив;
    НачалоПараметра = 1;
    
    Пока Истина Цикл
        // Ищем открывающую скобку [
        НачалоПараметра = Найти(ТекстШаблона, "[", НачалоПараметра);
        Если НачалоПараметра = 0 Тогда
            Прервать;
        КонецЕсли;
        
        // Ищем закрывающую скобку ]
        КонецПараметра = Найти(ТекстШаблона, "]", НачалоПараметра + 1);
        Если КонецПараметра = 0 Тогда
            Прервать;
        КонецЕсли;
        
        // Извлекаем имя параметра (без скобок)
        ИмяПараметра = Сред(ТекстШаблона, НачалоПараметра + 1, КонецПараметра - НачалоПараметра - 1);
        МассивПараметров.Добавить(СокрЛП(ИмяПараметра));
        
        НачалоПараметра = КонецПараметра + 1;
    КонецЦикла;
    
    Возврат МассивПараметров;
    
КонецФункции
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан