Доброго времени суток, можно ли как то с помощью объекта ТекстовыДокумент поставить значение параметров в строку? К примеру есть строка "Ваша сумма [Сумма]" и нужно что бы вместо подстроки [Сумма] подставилось число, причем не важно в каком регистре напишут параметр [Сумма], хоть [СуМмА]. Попробовал так:
Но при вызове метода ПолучитьТекст() возвращает тот же текст "Ваша сумма [Сумма]". А можно как то получить готовый тест с учетом установленных параметров?
Результат = Новый ТекстовыйДокумент();
Результат.УстановитьТекст("Ваша сумма [Сумма]");
Результат.Параметры.Сумма = 100;
Но при вызове метода ПолучитьТекст() возвращает тот же текст "Ваша сумма [Сумма]". А можно как то получить готовый тест с учетом установленных параметров?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Ну если там гдето шаблон хранится,
то параметры надо подставлять уже после получения текста,
обычным
ТекстШаблона = СтрЗаменить(ТекстШаблона,"[Сумма]", 100);
Чтобы без учета регистра, надо сразу имя параметра делать в одном регистре, "Ваша сумма [СУММА]"
а дальше конструкция такая,
ТекстШаблона = СтрЗаменить(ТекстШаблона,Врег("[Сумма]"), 100);
и имя параметра все равно будет приведено к верхнему регистру, и корректно найдется
то параметры надо подставлять уже после получения текста,
обычным
ТекстШаблона = СтрЗаменить(ТекстШаблона,"[Сумма]", 100);
Чтобы без учета регистра, надо сразу имя параметра делать в одном регистре, "Ваша сумма [СУММА]"
а дальше конструкция такая,
ТекстШаблона = СтрЗаменить(ТекстШаблона,Врег("[Сумма]"), 100);
и имя параметра все равно будет приведено к верхнему регистру, и корректно найдется
(3) Полностью с Вами согласен, сейчас так и делаю, но проблема в том, что шаблон заполняет заказчик, а он как известно всегда "тупой" и хотелось бы отвязаться от регистра букв параметров, что бы минимизировать проблемы. Просто думал, что можно получить как то финальный результат текстового документа после заполнения параметров, да и заполнение параметров как то удобней и лаконичней чем СтрЗаменить.
(1)
Результат = Новый ТекстовыйДокумент;
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.УстановитьТекст("
|#Область Область1
|Ваша сумма [Сумма]
|#КонецОбласти");
Область1 = ТекстДок.ПолучитьОбласть("Область1");
Область1.Параметры.Сумма = 100;
Результат.Вывести(Область1);
Сообщить(Результат.ПолучитьТекст());
Показать
(6) Да, наверное так будет работать, ща попробую. Просто я пробовал выводить не область, а целиком один текстовый документ в другом после заполнения параметров, но ничего не получилось, видимо придется самому область описывать. Сейчас попробую.
(6) Да, так работает но все равно херня получается - лишние переводы строк вставляет, а с параметром оказывается вообще беда - если передаваемая строка короче чем название параметра, она дополняется пробелами, а если длиннее, то обрезается. Короче не годится данная задумка. Всем спасибо!
Почитал статью на ИТС по работе с шаблонами текстовых документов - прикольно.
Неслабо наворочено. Наверное, было очень актуально при печати документов на матричные принтеры в текстовом режиме.
Никогда не пользовался :)
Неслабо наворочено. Наверное, было очень актуально при печати документов на матричные принтеры в текстовом режиме.
Никогда не пользовался :)
(11) Нашлась поиском по веб-ИТС статья "Пример использования текстового макета" в основах конфигурирования для начинающих в разделе по 8.1 :)
(10) Да, смутно припоминаю что по той же самой причине (фиксированные размеры значений параметров) когда-то отказался от их использования. Да и в типовых где встречал параметры вручную заменялись по той же причине.
(10) Да, смутно припоминаю что по той же самой причине (фиксированные размеры значений параметров) когда-то отказался от их использования. Да и в типовых где встречал параметры вручную заменялись по той же причине.
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот