Добрый день!

Коллеги, может кто-то знает, как реализовать следующую задачу: надо по бизнес-процессу отправить письмо, к которому прикрепить файл из детали Файлы и примечания документа.

Спасибо

Нравится

1 комментарий

Добрый!

Ниже метод реализующий отправку E-mail с вложением, файл берется из детали файлы и ссылки раздела.

		public static bool SendMail(string mailto, string caption, string message, Guid FileId, string SchemaName, UserConnection userConn) {
			SchemaName+="File";
			string smtpServer = Terrasoft.Core.Configuration.SysSettings.GetValue(userConn, "SFsmtpServer").ToString();
			string from = Terrasoft.Core.Configuration.SysSettings.GetValue(userConn, "SFFrom").ToString();
			string password = Terrasoft.Core.Configuration.SysSettings.GetValue(userConn, "SFPassword").ToString();
			Stream FileA = null;
			string Fname = "";
			var esq = new EntitySchemaQuery(userConn.EntitySchemaManager, SchemaName);
			esq.AddAllSchemaColumns();
			esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id",FileId));
			var coll = esq.GetEntityCollection(userConn);
			foreach(var ent in coll) {
				FileA = ent.GetStreamValue("Data");
				Fname = ent.GetTypedColumnValue<string>("Name");
				break;
			}
			try {
				MailMessage mail = new MailMessage();
				mail.From = new MailAddress(from);
				mail.To.Add(new MailAddress(mailto));
				mail.Subject = caption;
				mail.Body = message;
				mail.IsBodyHtml = true;
				if (FileA != null)
					mail.Attachments.Add(new Attachment(FileA, Fname));
				SmtpClient client = new SmtpClient();
				client.Host = smtpServer;
				client.Port = 587;
 
				client.EnableSsl = true;
				client.Credentials = new NetworkCredential(from.Split('@')[0], password);
				client.DeliveryMethod = SmtpDeliveryMethod.Network;
 
				client.Send(mail);
				mail.Dispose();
				return true;
			} catch(Exception e) {
				throw new Exception("Mail.Send: " + e.Message);
			}
		}
Показать все комментарии

Коллеги, добрый день.

Столкнулись с проблемой работы таймера в процессе.
Сначала реализовывали все на 7.6, как вышла версия 7.9, перешли на нее. Когда работали на 7.6 таймеры работали отлично. После перехода на 7.9 таймер то срабатывает, то не срабатывает и процесс стопорится на нем (не срабатывает намного чаще). Уже пол месяца боремся с решением этой проблемы при участии тех поддержки, но все никак.
Может кто сталкивался с такой проблемой при переходе на новую версию?

С уважением,
Дмитрий

Нравится

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

Здравствуйте, Дмитрий.

Поскольку указанная проблема носит локальный характер, анализ и решение вопроса проходит в рамках вашего обращения в техническую поддержку. Предположительно проблема в настройках IIS.

Сергей, добрый день.

Спасибо за ответ. Мы уже обращались и пытаемся разобраться с чем это может быть связано. Я хотел узнать может кто сталкивался с похожим, тогда поделившись опытом, смогли бы копать в нужном направлении :)

E нас тоже возникают проблемы с таймерами. Я зациклила процесс через таймер. Он 1 раз срабатывает иногда 2, а потом просто висит на нем и все. Ничего не происходит. Решения пока нет.

Катерина, добрый день!

Трудно определить источник проблемы по описанию. Напишите в support для детального анализа.

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

Есть код для детальки которая фильтруется по одному полю
{
name: 'activity',
schemaName: 'ActivityDetail',
type: Terrasoft.ViewModelSchemaItem.DETAIL,
filterPath: 'Participant',
filterValuePath: 'Id',
caption: resources.localizableStrings.ActivityDetailCaption,
visible: true,
leftWidth: '60%',
rightWidth: '40%'
},

Можно сделать фильтрацию по нескольким полям
Для примера не только по Participant но и для типа (Type)??

Нравится

1 комментарий

Добрый день!
Такая функциональность появилась начиная с версии 7.7.
Для реализации возможности добавлять быстрые фильтры на деталь используется модуль QuickFilterModuleV2, инициализирующий конфигурацию фильтров, использующий внутри себя утилитный модуль CustomFilterViewModelV2.
Для формирования коллекции фильтров используется метод getSimpleFilter().
Базовый функционал более ранних версий не предусматривает такой функциональности, соответственно, нет готовых примеров реализации для более ранних версий системы.

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

Возникла проблема, прошу уточнить метод лечения. Справочник "Годовой оборот", содержащий записи с вилками категорий предприятий по годовому обороту имеет ограничение в 2 147 483 647 базовой валюты.
Поскольку более половины предприятий клиентов у нас имеет годовой оборот выше, чем в 2 миллиарда, ограничение (int_max) выглядит нелепым.
Что можно сделать?
Просьба полумеры не предлагать, навроде считать данные в справочнике тыс. или миллионами руб. Необходим способ, как избавиться от ограничения размера целочисленного значения определенной разрядности.

Нравится

1 комментарий

Добрый день!
Вы можете создать в конфигурации замещающий объект, в качестве родительского объекта указать справочник "Годовой оборот контрагента", добавить свои пользовательские поля в новый объект, для которых указать тип "Деньги". Далее создать страницу редактирования для нового справочника, вывести в карточку новые поля с типом "Деньги", зарегистрировать новый справочник в системе.
В дальнейшем использовать в коде конфигурационных схем новые пользовательские поля.

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

Добрый день!
При попытке в VisualStudio 2012 сделать Attach к процессу "w3wp.exe", в окне Output появляются сообщения вида:

The thread '' (0x2aac) has exited with code 0 (0x0).
The thread '' (0x1c14) has exited with code 0 (0x0).
The thread '' (0x14a0) has exited with code 0 (0x0).

Attach не происходит - пустая точка останова
Пожалуйста помогите разобраться!

Нравится

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

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

Возможно у вас несколько процессов w3wp.exe, попробуйте подключиться к другому.
Второй момент, сайт должен быть запущен под пользователем, под которым выполнен вход в систему.

"Сергей Кy6риш" написал:

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

Возможно у вас несколько процессов w3wp.exe, попробуйте подключиться к другому.

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

С уважением,

Группа компаний Terrasoft

Здравствуйте Сергей!
У меня в списке всего один процесс "w3wp.exe", сделал чтобы он запускается под тем пользователем под которым выполнен вход в систему. Теперь Attach проходит дальше, но всё равно не до конца, всё также появляются сообщения вида

The thread '' (0x24f0) has exited with code 0 (0x0).
The thread '' (0x1b30) has exited with code 0 (0x0).
The thread '' (0x2544) has exited with code 0 (0x0).

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

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

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

Добрый день коллеги! Возникла необходимость немного расширить функционал генерации лидов через "Лендинг страницы". Подскажите пожалуйста, можно ли получить не минимизированную версию js скрипта create-object.js - для того чтобы посмотреть как он работает/возможно внести некоторые изменения на моменте инициализации объекта "landing"
(загружается на страницу-лендинг с https://webtracking-v01.bpmonline.com/JS/create-object.js)

Нравится

1 комментарий

Поправка, не увидел что в мин версии файла длинные названия переменных и функций - так что его можно легко вернуть в нормальный вид. Вопрос отпадает :smile:

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

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

Версия 7.9 sales.

На странице есть кнопка Отмена (см. скриншот). Необходимо добавить событие на эту кнопку. Событие связано с изменениями данных на странице и пересчётами параметров, но дело не в нём.

onDiscardChangesClick: function(){
        this.callParent(arguments);
        console.log("Событие");
}

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

Соответственно, вопрос - как правильно сделать? Какая функция должна быть переопределена, или быть может, есть sandbox-сообщение, на которое можно подписаться и вызывать через него требуемое событие?

Нравится

3 комментария
onDiscardChangesClick: function() {
	if (this.isNew) {
		this.sandbox.publish("BackHistoryState");
		return;
	}
	this.set("IsEntityInitialized", false);
	this.loadEntity(this.getPrimaryColumnValue(), function() {
		this.updateButtonsVisibility(false, {
			force: true
		});
		this.initMultiLookup();
		this.set("IsEntityInitialized", true);
		this.discardDetailChange();
		this.updatePageHeaderCaption();
	}, this);
	if (this.get("ForceUpdate")) {
		this.set("ForceUpdate", false);
	}
},

Кажется мне, что в сферическом вакууме перезагрузка entity выглядит как-то так:

this.loadEntity(recordId, callback, scope)

Ну и поскольку она асинхронна, попробуйте добавить console.log после, допустим, this.updatePageHeaderCaption()

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

Предыдущий комментатор верно подметил. Для замещения, Вам необходимо переписать метод onDiscardChangesClick целиком (вызова this.callParent(arguments) будет недостаточно) и добавить свой код в коллбэк функцию из метода loadEntity.

Также, при необходимости, можете посмотреть в сторону использования js функции setTimeout для отложенного вызова кода.

Илья, Данила - спасибо!

Вроде как задача решена.

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

Добрый день.

В ходе разработке на платформе, у меня возникла задача создания разных "Кейсов" в зависимости от справочного поля, в разделе "Продажи".

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

С уважением,
Александр

Нравится

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

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

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

В начале процесса необходимо проверять тип потребности. Далее в зависимости от типа потребности создавать нужные задачи.

Возможно я не совсем точно выразил задачу, мне нужно изменить не только текущую стадию, а и все последующие.

Тип потребности=="Программное обеспечение" в дизайнере отображены вот эти стадии:
"Квалификация->Презентация->Коммерческое предложение..."
https://yadi.sk/i/U7CRVIfp38ChcL

Тип потребности!="Программное обеспечение" в дизайнере - эти стадии:
"Анализ потребностей->Подготовка предложения->Отправка опытных образцов..."
https://yadi.sk/i/1y-_PWog38ChZf

С уважением,
Александр

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

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

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

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

Исчезает значение локализируемой строки.

Не удается выполнить копирование локализируемой строки ScriptTemplate из BaseGeneratedWebFormPageV2 в мою созданную. При попытке записи значения и сохранения, после сохранение значение этой строки становится пустым.

Кто с таким встречался?

Нравится

1 комментарий

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

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

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

Добрый день!

Не смог найти на форуме информации по изменению размера шрифта для версий 7.x
Есть возможность изменять размер шрифта на карточке и в реестре?

С уважением,
Дмитрий

Нравится

1 комментарий

Добрый день, Дмитрий.

Стили, отвечающие за шрифт, а также часть стилей, отвечающих за размер шрифта, Вы можете найти в схеме BaseFontsCSS. Основная же часть стилей расположена в файле all-combined.css в папке самого приложения.

Простейшим же способом будет добавить в конфигурации схемы содержащие пользовательские стили, а затем добавить их в зависимости к замещающим схемам к которым их необходимо применить (к примеру, BasePageV2 или BaseSectionV2).

Добавление пользовательских css стилей обсуждалось в следующей теме:

http://www.community.terrasoft.ru/forum/topic/16386

Также убедитесь, что добавленные Вами стили имеют приоритет над стандартными:

https://developer.mozilla.org/ru/docs/Web/CSS/Specificity

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