Заполнить программно параметры шаблонов сообщений
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)
в теле формы есть строка, как формируется этот параметр
ТекущийОбъект.Параметры.Очистить();
Для каждого ПараметрШаблона Из Объект.Параметры Цикл
НоваяСтрока = ТекущийОбъект.Параметры.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПараметрШаблона);
НоваяСтрока.ТипПараметра = Новый ХранилищеЗначения(ПараметрШаблона.ОписаниеТипа);
КонецЦикла;
что там в описании типа, тоже можешь отследить, как формируется.
Мне просто времени жалко сейчас шерстить конфу, но по анализу кода данного справочника вполне можно понять, что должно быть внутри этого хранилища
в теле формы есть строка, как формируется этот параметр
ТекущийОбъект.Параметры.Очистить();
Для каждого ПараметрШаблона Из Объект.Параметры Цикл
НоваяСтрока = ТекущийОбъект.Параметры.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПараметрШаблона);
НоваяСтрока.ТипПараметра = Новый ХранилищеЗначения(ПараметрШаблона.ОписаниеТипа);
КонецЦикла;
что там в описании типа, тоже можешь отследить, как формируется.
Мне просто времени жалко сейчас шерстить конфу, но по анализу кода данного справочника вполне можно понять, что должно быть внутри этого хранилища
Нашел процедуру, но не могу её применить у себя. Параметр у меня уже создан, нужно лишь его заполнить и получить готовый текст из шаблона.
Но по первому скрину видно, что у меня никакого "ОписаниеТипа" нет.
Вопрос актуальный, пока так и не нашёл решение.
&НаСервере
Процедура ЗаполнитьПроизвольныеПараметрыИзОбъекта(Знач ТекущийОбъект)
Перем НайденныеСтроки, Отбор, ПараметрШаблонаТекущийОбъект;
Для каждого ПараметрШаблонаТекущийОбъект Из ТекущийОбъект.Параметры Цикл
Отбор = Новый Структура("ИмяПараметра", ПараметрШаблонаТекущийОбъект.ИмяПараметра);
НайденныеСтроки = Объект.Параметры.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() > 0 Тогда
НайденныеСтроки[0].ОписаниеТипа = ПараметрШаблонаТекущийОбъект.ТипПараметра.Получить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьНо по первому скрину видно, что у меня никакого "ОписаниеТипа" нет.
Вопрос актуальный, пока так и не нашёл решение.
(9) посмотри в конфигурации ОбщийМодуль.ШаблоныСообщений.
думаю тебе не нужно на физическом уровне ковырять справочник шаблонов и пытаться воссоздавать вручную сообщение. Для этого и придумали общие модули.
Там например есть такая функция
ну и еще ряд функций для работы с ними. Вот выбери подходящую функцию, подготовь параметры для нее - и просто вызови.
На более низком уровне ОбщийМодуль.ШаблоныСообщенийСлужебный. Там тоже куча функций и процедур низкого уровня
думаю тебе не нужно на физическом уровне ковырять справочник шаблонов и пытаться воссоздавать вручную сообщение. Для этого и придумали общие модули.
Там например есть такая функция
// Создает сообщение на основании предмета по шаблону сообщения.
//
// Параметры:
// Шаблон - СправочникСсылка.ШаблоныСообщений - ссылка на шаблон сообщения.
// Предмет - Произвольный - Объект основания для шаблона сообщений, типы объектов перечислены в
// определяемом типе ПредметШаблонаСообщения.
// УникальныйИдентификатор - УникальныйИдентификатор - Идентификатор формы, необходим для размещения вложений во
// временном хранилище при клиент-серверном вызове. Если вызов
// происходит только на сервере, то можно использовать любой идентификатор.
// ДополнительныеПараметры - Структура - Необязательный, список дополнительных параметров, который будет передан в
// параметр Сообщение в процедурах ПриФормированииСообщения при создании сообщения.
// * ПреобразовыватьHTMLДляФорматированногоДокумента - Булево - необязательный, по умолчанию Ложь, определяет
// необходимо ли преобразование HTML текста сообщения содержащего картинки в тексте письма из-за
// особенностей вывода изображений в форматированном документе.
//
// Возвращаемое значение:
// Структура - подготовленное сообщение на основание шаблона для отправки.
// * Тема - Строка - тема письма
// * Текст - Строка - текст письма
// * Получатель - СписокЗначений - список получателей письма
// * ДополнительныеПараметры - Структура - параметры шаблона сообщения.
// * Вложения - ТаблицаЗначений - список вложений
// ** Представление - Строка - имя файла вложения.
// ** АдресВоВременномХранилище - Строка - адрес двоичных данных вложения во временном хранилище.
// ** Кодировка - Строка - кодировка вложения (используется, если отличается от кодировки письма).
// ** Идентификатор - Строка - необязательный, идентификатор вложения, используется для хранения
// картинок, отображаемых в теле письма.
//
Функция СформироватьСообщение(Шаблон, Предмет, УникальныйИдентификатор, ДополнительныеПараметры = Неопределено) Экспорт
ПараметрыОтправки = СформироватьПараметрыОтправки(Шаблон, Предмет, УникальныйИдентификатор, ДополнительныеПараметры);
Возврат ШаблоныСообщенийСлужебный.СформироватьСообщение(ПараметрыОтправки);
КонецФункции
Показатьну и еще ряд функций для работы с ними. Вот выбери подходящую функцию, подготовь параметры для нее - и просто вызови.
На более низком уровне ОбщийМодуль.ШаблоныСообщенийСлужебный. Там тоже куча функций и процедур низкого уровня
(10)
Постарался сделать именно так, но не работает...
ну и еще ряд функций для работы с ними. Вот выбери подходящую функцию, подготовь параметры для нее - и просто вызови.
Постарался сделать именно так, но не работает...
ПроизвольныеПараметры = Новый Структура;
ПроизвольныеПараметры.Вставить("Номер", Объект.Номер);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПроизвольныеПараметры", ПроизвольныеПараметры);
СообщениеСПараметром = ШаблоныСообщений.СформироватьСообщение(Шаблон, Объект.Ссылка, ЭтотОбъект.УникальныйИдентификатор, ДополнительныеПараметры);
(11) если еще актуально,то:
ДополнительныеПараметры= Новый Структура;
Произвольные = Новый Соответствие;
Произвольные.Вставить("Номер",Объект.Номер);
ДополнительныеПараметры.Вставить("ПроизвольныеПараметры",Произвольные);
СообщениеСПараметром = ШаблоныСообщений.СформироватьСообщение(Шаблон, Объект.Ссылка, ЭтотОбъект.УникальныйИдентификатор, ДополнительныеПараметры);
Правильно ли я понимаю, что если получится таким способом заполнить параметры шаблона, то он будет работать если имя параметры = реквизиту документа? Хотелось бы в коде подставить одну фразу вместо другой, в зависимости от ситуации.
Добавил в структуру "ДополнительныеПараметры" Соответствие "ПроизвольныеПараметры"
Сообщение = ШаблоныСообщений.СформироватьСообщениеИОтправить(ШаблонСобытия, ОбъектОповещения, УИД, ДополнительныеПараметры)
В соответствии "ПроизвольныеПараметры" ключ - имя параметра из Шаблона письма, Значение = (в моем случае) вставляемая в письмо строка.
Сообщение = ШаблоныСообщений.СформироватьСообщениеИОтправить(ШаблонСобытия, ОбъектОповещения, УИД, ДополнительныеПараметры)
В соответствии "ПроизвольныеПараметры" ключ - имя параметра из Шаблона письма, Значение = (в моем случае) вставляемая в письмо строка.
Прикрепленные файлы:

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