AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.07.2010, 16:09   #1  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
делаю отсылку письма.
текст которого заполняется navision.
если заполнения в виде
OutlookMsg.HTMLBody := 'здесь текст больше 1024 символов'
то в письмо все переходит. Делаю еще перенос строк, т.к. outlook не хочет воспринимать
строки длиннее 260 символов.

дело в том что в разном случае необходимо делать разное количество строк,
поэтому делаю по схеме

repeat
OutlookMsg.HTMLBody :=OutlookMsg.HTMLBody+'здесь текст';
until = условие;

в этом случае происходит переполнение, выдает, что длина текстовой строки
превосходит размер буфера строки.

Как это можно обойти?
Старый 14.07.2010, 17:14   #2  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Цитата:
Сообщение от flov Посмотреть сообщение
repeat
OutlookMsg.HTMLBody :=OutlookMsg.HTMLBody+'здесь текст';
until = условие;
Не понимаю смысла данной конструкции. Как с помощью этого ты перевод строки делаешь?
Старый 15.07.2010, 10:55   #3  
grnik is offline
grnik
Участник
 
6 / 10 (1) +
Регистрация: 17.09.2013
А сначала сформировать полный правильный текст (с переносом) в строке Navision, а уже потом единой строкой присвоить письму?
Старый 15.07.2010, 12:42   #4  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
Цитата:

Не понимаю смысла данной конструкции. Как с помощью этого ты перевод строки делаешь?
перенос делаю с помощью format(char13)+format(char10)
в примере просто это не дописал.

насчет сформировать вначале текст, потом присвоить.
во-первых в зависимости от условий текст может быть разной длинны.
во-вторых если формировать отдельно исходя из условий, то как сделать присвоение
OutlookMsg.HTMLBody := 'сформированный текст'???
OutlookMsg.HTMLBody имеет тип text, поэтому воспользоваться BigText не удастся,
покрайнемере я не знаю как это реализовать.
И где хранить сформированный текст, если текстовая переменная не может содержать
текст больше 1024 символа.

Есть идея типа все формировать в текстовом файле отдельно, с помощью OutStream,
а потом оттуда одним махом присвоить это все OutlookMsg.HTMLBody.
Только не знаю как это реализовать?
Старый 16.07.2010, 10:37   #5  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от flov Посмотреть сообщение
Только не знаю как это реализовать?
Сформированный файл можно оформить вложением в письмо. А в теле написать нечто краткое... Типа "Ознакомьтесь с информацией во вложении"
Старый 16.07.2010, 12:06   #6  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
можно, конечно и так как вариант, но это не совсем то что хотелось.

а можно что-нибудь сообразить с использованием sql server? Вроде что-то попадалось на глаза,
может кто-нибудь знает такое решение?
Старый 16.07.2010, 12:56   #7  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
Не знаю, подойдет ли Вам такой вариант, но я делал следующим образом.
Создал таблицу для очереди из писем (что-то наподобие таблицы 5935), с полем Body типа BLOB, в которое записывается сообщение в html-формате. На SQL-сервере написал хранимку для отправки писем из этой очереди с помощью компоненты Database Mail, ну и соответственно настроил джоб для ее вызова с заданной периодичностью. В принципе, при необходимости это хранимку можно вызывать и непосредственно из Нава.
В общем, все сводится к вызову процедуры sp_send_dbmail:

EXEC @result = msdb.dbo.sp_send_dbmail
@profile_name = @Profile,
@recipients = @ToAddress,
@copy_recipients = @CopyToAddress,
@body_format = 'HTML',
@subject = @SubjectLine,
@body = @BodyBlob
Старый 16.07.2010, 16:26   #8  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Цитата:
Сообщение от chebv Посмотреть сообщение
Не знаю, подойдет ли Вам такой вариант, но я делал следующим образом.
Создал таблицу для очереди из писем (что-то наподобие таблицы 5935), с полем Body типа BLOB, в которое записывается сообщение в html-формате. На SQL-сервере написал хранимку для отправки писем из этой очереди с помощью компоненты Database Mail, ну и соответственно настроил джоб для ее вызова с заданной периодичностью. В принципе, при необходимости это хранимку можно вызывать и непосредственно из Нава.
В общем, все сводится к вызову процедуры sp_send_dbmail:

EXEC @result = msdb.dbo.sp_send_dbmail
@profile_name = @Profile,
@recipients = @ToAddress,
@copy_recipients = @CopyToAddress,
@body_format = 'HTML',
@subject = @SubjectLine,
@body = @BodyBlob
Используем абсолютно такую же модель.
__________________
Want to believe...
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:57.