Добрый день!

 

Подскажите, каким образом в письмо по макросу можно вывести многострочное поле с сохранением переноса строк?

Если вставить просто макрос со ссылкой на многострочное поле, то шаблон не находит
и \n в тексте и считает, что переноса строк нет, хотя они и есть.

Возможно есть вариант заменять переносы строк на \n в рамках бизнес-процесса?

Нравится

3 комментария
Лучший ответ

   Отправка письма

 var emailSendService = new EmailSendService(context.UserConnection);

    

    var activityId = Guid.NewGuid();

    var insertActivity = new Terrasoft.Configuration.Activity(context.UserConnection);

    insertActivity.Id = activityId;

    insertActivity.SetDefColumnValues();

    insertActivity.Title = "Тема письма";

    insertActivity.Recepient = email;

    insertActivity.Sender = senderEmail;

    insertActivity.PriorityId = new Guid("D625A9FC-7EE6-DF11-971B-001D60E938C6");

    insertActivity.IsHtmlBody = true;

    insertActivity.Body = "<div>Тело письма</div>";

    insertActivity.TypeId = new Guid("E2831DEC-CFC0-DF11-B00F-001D60E938C6");

    insertActivity.MessageTypeId = new Guid("7F6D3F94-F36B-1410-068C-20CF30B39373");

    insertActivity.Save();

    

    emailSendService.Send(activityId.ToString());

Нормально манипулировать текстом письма можно только используя C#. Делает ScriptTask в нем отправку письма на C# и собираете любое тело письма которое вам нужно.

Полозюков Евгений Петрович,

Спасибо! Подскажите, где можно подробнее прочитать про отправку письма по скрипту?

   Отправка письма

 var emailSendService = new EmailSendService(context.UserConnection);

    

    var activityId = Guid.NewGuid();

    var insertActivity = new Terrasoft.Configuration.Activity(context.UserConnection);

    insertActivity.Id = activityId;

    insertActivity.SetDefColumnValues();

    insertActivity.Title = "Тема письма";

    insertActivity.Recepient = email;

    insertActivity.Sender = senderEmail;

    insertActivity.PriorityId = new Guid("D625A9FC-7EE6-DF11-971B-001D60E938C6");

    insertActivity.IsHtmlBody = true;

    insertActivity.Body = "<div>Тело письма</div>";

    insertActivity.TypeId = new Guid("E2831DEC-CFC0-DF11-B00F-001D60E938C6");

    insertActivity.MessageTypeId = new Guid("7F6D3F94-F36B-1410-068C-20CF30B39373");

    insertActivity.Save();

    

    emailSendService.Send(activityId.ToString());

Показать все комментарии

Добавить возможность для колонки отображать многострочное поле как многострочное поле (так, как оно было заведено, учитывая перенос строки).В настоящий момент просто учитывается, влезает поле в ширину или нет

3 комментария

Здравствуйте, Владимир!

Мы создали задачу на ответственную команду разработки для анализа возможности доработки данного функционала в последующих релизах.

Спасибо за Ваше пожелание по развитию функциональности приложения!

Шкурупий Владимир,

день добрый! есть ли шанс, что данный функционал уже работает и вы можете поделиться кусочком кода??

Проверил в последней версии - пока нет... 

Показать все комментарии

Здравствуйте.

В 1С 7.7 я написала обработку переноса документа Договора в Terrasoft CRM 3.2.
Все отлично переносится, но есть одна проблема.

В договоре есть два поля, созданные администратором 1С: Договорные условия и Предмет договора. Оба они имеют тип Строка, флаги - Неограниченная длина и Многострочное поле.

В 1С информация в самом договоре выглядит так:

В поле Договорные условия такой текст:

1- 03.08.11- 10,40
2- 15.08.11- 20,40
3- 12.09.11- 30,20

В поле Предмет договора такой текст:
10,40 до 15.08.11
30,00 до 15.09.11
40,00 до 25.09.11
50,00 до 15.10.11

Оба текста бухгалтером вносятся с использованием Enter для перехода на новую строку

Эти два поля мне нужно одной строкой с использованием переноса строк перенести в Terrasoft в поле Memo таблицы Contracts.

Текст программы такой:

if (EmptyValue(sqOfferingContact) = 1) then
sqOfferingContact = TS.Services.GetNewItemByUSI("sq_Contact"); //Создание экземпляра запроса
endif;

if (EmptyValue(refOffering) = 1) then
refOffering = CreateObject("Document.Договор"); //1С Документ Договор
endif;

Memo = dsOffering.DataFields.ItemsByName("Memo");
Memo.Value = ("Договорные условия:"+(refOffering.ДоговорныеУсловия))+". "+РазделительСтроки+ "Предмет договора; "+(refOffering.ПредметДоговора)));

Вот как выглядит текст в Terrasoft в поле Memo документа Contracts после этого.

1- 03.08.11- 10,402- 15.08.11- 20,403- 12.09.11- 30,20 Предмет дог

Причем если попробовать пролистать строку курсором, то после подстроки "1- 03.08.11- 10,40" он не двигается дальше, а переходит на новую строку. Весь текст просмотреть невозможно.

Как перенести его средствами языка 1С без потери форматирования, т.е. в таком же виде как он записан в документе Договор 1С, т.е. выглядел в поле Memo вот так:

Договорные условия: 1- 03.08.11- 10,40
2- 15.08.11- 20,40
3- 12.09.11- 30,20.
Предмет договора: 10,40 до 15.08.11
30,00 до 15.09.11
40,00 до 25.09.11
50,00 до 15.10.11

Заранее спасибо за помощь.

Нравится

3 комментария

Здравствуйте, Наталья!

Для того, чтобы добавить разделитель строки в Terrasoft, используйте \r\n.

В результате программный код примет следующий вид:

Memo.Value = ("Договорные условия:"+(refOffering.ДоговорныеУсловия))+". "+"\r\n" + "Предмет договора; "+(refOffering.ПредметДоговора)));

Здравствуйте, Анна.

Строка

Memo.Value = ("Договорные условия:"+(refOffering.ДоговорныеУсловия))+". "+"\r\n" + "Предмет договора; "+(refOffering.ПредметДоговора)));

переносится в Terrasoft буквально как строка:

Договорные условия: 1- 03.08.11- 10,40 2- 15.08.11- 20,40 3- 12.09.11- 30,20.\r\nПредмет договора:

Если \r\n записать без кавычек, то 1С ругается. Потому, что такой функции в 1С нет.

Наталья, уточните, пожалуйста, код применяется в скрипте интеграции?

Еще один вариант переноса именно для 1С:

Симв(13)+Симв(10)

По сути, это аналог вышеописанной конструкции, только в формате для базы данных.

В случае, если это не поможет, необходимо будет делать замену переноса строки в 1С на стандартный для Вашей СУБД.

Показать все комментарии