Добрый день!

Есть такая задача. 

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

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

Или можно учесть как то абзац при такой схеме?

Спасибо!

Нравится

6 комментариев

Если мы говорим, о стандартных печатных формах Word, то все форматирование можно настроить в шаблоне печатной формы.

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

Откуда клиент хочет переносить блоки с документов Word ? Тогда лучше на основе этого документа сделать шаблон или штатными средствами или самостоятельно вставить в нужніх местах макроподстановки, открыть на чтение прочитать документ и заменить макроподстановки в шаблоне на нужные значения!

Алла Савельева,

я дам узкий пример. Если в поле Примечание  применить функцию список например, то в печатной форме мы увидим список с какими-левыми символами (скрин прилагаю).

Григорий Чех, я дам узкий пример. Если в поле Примечание  применить функцию список например, то в печатной форме мы увидим список с левыми символами (скрин прилагаю).

Это не «какие-то левые символы», а HTML-теги форматирования текста. Теги для создания списка: li и ol.

Зверев Александр,

понятно, что это теги форматирования)). я образно выразилась. Вопрос в том, зачем признаки форматирования переносятся в печатную форму а таком виде). Клиент же не может  с этими символами клиенту отправить договор. 

В веб-интерфейсе системы теги отображаются в нужном формате. При переносе в печатную форму текст нужно адаптировать под их формат. Например, вместо настоящего списка имитировать маркеры вставкой символа «•».

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

Добрый день!
Как можно отформатировать текст в вопросе для пользователя из бизнес процесса.
А также, как можно в вопросе добавить ссылку, например на список статей в базе знаний?

Нравится

6 комментариев

Мария, добрый день!

Возможность форматирования текста доступна только в элементе “Отправка e-mail”. Изменить базовый элемент “Вопрос пользователю” и добавить в него дополнительное поле/контейнер не представляется возможным.
Для решения задачи рекомендуем использовать элемент “Автогенерируемая страница”. Тут Вы можете отобразить вопрос пользователю, варианты ответов, дополнительные поля (например ссылки на статьи из базы знаний).

Спасибо, Олег!

Подскажите, плзз, есть ли база в примерами использования объектов бизнес-процессов.
Например, как использовать автогенерируемую страницу, чтоб получилась ссылка на базу знаний.

Здравствуйте, Мария!

К сожалению, базы примеров нету. Для того, чтобы на автогенерируемой странице получилась ссылка на базу знаний Вам необходимо добавить поле с типом "Справочник", указав справочником справочник "База знаний".
В значение этого поля элементом "Формула" мы подставляем Id статьи в базе знаний.

Да с этим разобралась, спасибо!
Но мне нужна ссылка на весь справочник? можно ли так? Просто переход с раздел База знаний?

Здравствуйте, Мария!

К сожалению, просто открыть реестр записей раздела не получится - возможно открыть только какую-то запись. Для этого Вам необходимо использовать элемент "Страница редактирования".

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

Доброе утро.
У нас стоит Terrasoft XRM 3.4.0.115, Microsoft Outlook 2010 x32 и Windows 7 x32. Создаем шаблон в TS в формате html, в Outlook формат принимаемых и отправляемых писем стоит html, но при отправке письма из TS слетает форматирование. При этом в предварительном просмотре оно есть, а когда приходит на почту получателю нет. Данная проблема возникает только на одной машине. В чем может быть проблема?

Нравится

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

Добрый день!
А каким образом происходит создание сообщения (из раздела E-mail, через меню "Действия")?

Пробовали разными способами. Через Продажи -> Рассылка по кнопочке Добавить и через Инструменты -> Шаблоны сообщений.

Сложно сказать, в чем проблема. Если настройки введены, как Вы описали, то проблемы быть не должно. Напишите на support, запланируем удаленное подключение для решения.

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

Иногда возникает ситуация, что при выполнении рассылки (шаблон в формате html) - конечный пользователь получает письмо с сплошным текстом, без единого форматирования (которое было выполнено в шаблоне сообщения).

Такая ситуация может происходить в версиях 3.3.1 и 3.3.2.

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

Далее, запускаем TSAdmin.exe и находим сервис scr_OutlookUtils.

В данном сервисе нам необходимо добавить метод CreateNewOutlookMessageByCopy:

function CreateNewOutlookMessageByCopy(FileName) {
      var Message;
      if (FileName) {
            TemplateMessage = Outlook.Application.CreateItemFromTemplate(FileName);
            RemoveOutlookMessageProperties(TemplateMessage);
            Message = Outlook.Application.CreateItem(0);
            RemoveOutlookMessageProperties(Message);
            Message.Subject = TemplateMessage.Subject;
          var NewMailItemBodyFormat = GetMailItemBodyFormat(Message);
          var MessageText;

            if ((NewMailItemBodyFormat  == olFormatHTML) ||
                  (NewMailItemBodyFormat  == olFormatRichText)) {
                  MessageText = GetDecodedMessageText(TemplateMessage);
                  if (GetMailItemBodyFormat(TemplateMessage) == olFormatPlain) {
                    MessageText = PreparePlainTextForHTML(MessageText, true);
                  }
                  if (GetOutlookCodePageOut() != -1) {
                    var CodePage = GetMailItemCharsetName(Message);
                    MessageText = System.EncodeText(MessageText, CodePage);
                  }
            } else {
                  MessageText = TemplateMessage.Body;
            }

            CopyAttachments(TemplateMessage, Message, false, Log);
            SetMailItemBody(Message, MessageText);
           
            var Recipient;
            var SourceRecipient;
            for (var i = 1; i = TemplateMessage.Recipients.Count; i++) {
                  SourceRecipient = TemplateMessage.Recipients.Item(i);
                  Recipient = null;
                  if (SourceRecipient.AddressEntry.Type != 'EX') {
                Recipient = Message.Recipients.Add(SourceRecipient.Address +
                             ' ' + SourceRecipient.Name + '>');
                  } else {
                Recipient = Message.Recipients.Add(SourceRecipient.Name);
                Recipient.Resolve();
                  }
                  Recipient.Type = TemplateMessage.Recipients.Item(i).Type;
            }

            TemplateMessage.Close(0);
      } else {
            Message = Outlook.Application.CreateItem(0);
            if (Outlook.CodePageOut) {
                  Message.InternetCodepage = Outlook.CodePageOut;
            } else {
                  Message.InternetCodepage = 20866;
            }
      }
      return Message;
}

В этом же сервисе модифицировать функцию GetOutlookCodePageOut (добавить return Outlook.CodePageOut;):

function GetOutlookCodePageOut() {
      if (!Outlook.OutlookCodePageOutInitialize) {
            var MSOfficeRootKey = 'Software\\Microsoft\\Office\\';
            var OutlookCodePageOptionsKey = '\\Outlook\\Options\\MSHTML\\International';
            var Version = GetOutlookVersion();
            var OutlookSettingKey = MSOfficeRootKey + Version +
                  OutlookCodePageOptionsKey;
            Outlook.AutoDetectCodePageOut = GetRegParamValue(REG_DWORD,
                  HKEY_CURRENT_USER, OutlookSettingKey, 'Autodetect_CodePageOut');
            Outlook.CodePageOut = GetRegParamValue(REG_DWORD,
                  HKEY_CURRENT_USER, OutlookSettingKey, 'Default_CodePageOut')
                  || 20866;
            Outlook.OutlookCodePageOutInitialize = true;
      }
      return Outlook.CodePageOut;
}

А также, модифицировать метод CreateOutlookMessage
(добавить var Message = CreateNewOutlookMessageByCopy(Params.Template ?
Params.Template.FileName : null
):

function CreateOutlookMessage(Params) {
      var Message = CreateNewOutlookMessageByCopy(Params.Template ?
            Params.Template.FileName : null);

      if (Params.Address) {
            if (typeof(Params.Address) == 'string') {
                  Params.Address = [Params.Address];
            } else {
                  Params.Address = RemoveDublicates(Params.Address);
            }
            for (var i = 0; i Params.Address.length; i++) {
                  AddRecipient(Message, Params.Address[i], olTo);
            }
      }
      if (Params.CopyAddress) {
            if (typeof(Params.CopyAddress) == 'string') {
                  Params.CopyAddress = [Params.CopyAddress];
            }
            for (var i = 0; i Params.CopyAddress.length; i++) {
                  AddRecipient(Message, Params.CopyAddress[i], olCC);
            }
      }
}

Для версии 3.3.1, необходимо выполнить еще одно изменение.
В сервисе scr_MailUtils найтифукцию CreateNewMessage(Params) и добавить ByCopy в строчке var Message = CreateNewOutlookMessage(Params.Template ? Params.Template.FileName : null);
:

function CreateNewMessage(Params) {
         if (!GetCanCreateMessage(true)) {
                   return;
         }
         
         if (!InitMailUtils()) {
                   return;
         }
         
         if (!Params) {
                   Params = new Object();
         }
         
         var Message = CreateNewOutlookMessageByCopy(Params.Template ?
                   Params.Template.FileName : null);

Сохраняем сервис и проверяем рассылку!

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Нравится

Поделиться

10 комментариев

Добрый день.
Такая ситуация так же может происходить и в версии 3.3.0 :) Но в ней я не нашел ни скрипта scr_OutlookUtils ни функций GetOutlookCodePageOut, CreateOutlookMessage.
Не подскажите, что можно сделать в данном случае?

Павел, дело в том, что данный функционал был реализован в ядре, а не в сервисах, именно поэтому Вы и не смогли найти данных скриптов :wink:

Если шаблон письма формируется некорректно, прошу обновить исполняемые файлы до более поздних.
На данный момент, это 3.3.0.83.
Данные файлы Вы можете запросить у Службы технической поддержки support@terrasoft.ru

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Дело в том, что мы уже используем версию 3.3.0.83 :sad:

Добрый день!

Прошу предоставить скриншот шаблона, который Вы формируете и скриншот уже полученного письма.

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Скриншот и полученное письмо во вложении

Причем было замечено, что письма из TS уходят без форматирования только на одной машине, на других все ок. Windows 7 x32, MS Outlook 2010 x32

Павел, а Вы проверяли настройки самого Outlook?
Возможно формат принимаемых и отправляемых писем стоит - текст, а не в html?

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

mail

Формат отправляемых писем уже установлен в html. Возможно, есть еще какие-нибудь настройки?

Нужно проверить, что бы и шаблон был создан в формате html.

сделал данные настройки но при этом картинки приходят вложениями(( не подскажите что можно сделать? и какую информацию нужно показать?

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

Всем доброго времени суток!

Хочу поделиться новой возможностью, которая реализована в сборках версии 3.4.1, начиная с 3.4.1.24. Это - более гибкое управление форматированием дробных чисел.

Как многим известно, в поле датасета типа "Дробное число" есть возможность использовать/не использовать разделитель тысячных разрядов. За это отвечает свойство "Использовать разделитель тысяч" ("Use Thousand Separator"). При этом длина дробной части всегда была равна значению в поле "Точность", и в случае "нехватки" знаков заполнялась нулями.

Начиная с вышеуказанной версии, появилась возможность убрать эти нули и отображать только значащие цифры дробной части:

Использовать фиксированную дробную часть

По умолчанию данный признак установлен в значение "true". В этом случае дробное число отображается, как и раньше, - с незначащими нулями. Если же убрать этот признак - отображаться будут только значащие цифры.

Таким образом, используя различные комбинации свойств "Использовать разделитель тысяч" и "Использовать фиксированную дробную часть", можно получить 4 различных способа отображения дробных чисел.

Аналогичные возможности появилась также и у вычисляемых полей типа "Целое" и "Дробное". Отображение форматируется как в реестре, так и в поле карточки редактирования.

И напоследок: функциональность перенесена также и на версию 3.4.0, начиная с 3.4.0.113.

Нравится

Поделиться

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