Проблема: получить ВСЕ параметры табличного документа с именем параметра и его значением при этом имена параметров заранее неизвестны. Это легко сделать в отладчике в просмотре переменной ТабДок.Параметры, но программно получить их список невозможно.
Сначала я с чего-то решил, что параметры табличного документа - это обычная структура :) с кем не бывает?
Но потом понял, что табличный документ имена параметров не отдаст без костылей вида ЗначениеВСтрокуВнутр и нагуглил эту статью: //infostart.ru/1c/articles/1999853/.
Оказалось до меня уже сделали, я немного поплевался от стиля написания кода, а проверив работу функции на моем макете поплевался и от результата, т.к. у меня были задействованы новомодные "форматированные строки".
Допиливать чужой велосипед, как водится, не так интересно, как позаниматься своим :) И вспомнил что регулярные выражения в 1с уже завезли и от режима совместимости они не зависят (будет работать на 8.3.23, ну или переделать вызов регулярки на VBScript на старых платформах).
Оставляю свой буквально двухколесный велик потомкам:
//Макет - ТабличныйДокумент или область табличного документа
//Превращаем в 1С-ную кашу:
Стр = ЗначениеВСтрокуВнутр(Макет);
ПараметрыСтруктура = Новый Структура;
//это для обычных параметров
Результат = СтрНайтиВсеПоРегулярномуВыражению(Стр, "\[([^\]]+)\]", Истина, Истина);
Для Каждого Элемент Из Результат Цикл
Значение = Элемент.ПолучитьГруппы()[0].Значение;
ПараметрыСтруктура.Вставить(Значение, Макет.Параметры[Значение]);
КонецЦикла;
//это для шаблонов и форматрованных строк
Результат = СтрНайтиВсеПоРегулярномуВыражению(Стр, "\{\s*\""\"",\s*\""([^\""]+)\""\s*\}", Истина, Истина);
Для Каждого Элемент Из Результат Цикл
Значение = Элемент.ПолучитьГруппы()[0].Значение;
ПараметрыСтруктура.Вставить(Значение, Макет.Параметры[Значение]);
КонецЦикла;
UPD: в комментариях указали более здоровый способ получения через сериализацию XDTO.