Доброго времени суток.
Как правильно написать команду SQL типа (Type), воспринимает ее как (Select, where, as и т.д.) в обычное поле в которое можно записывать. Поле Type имеется у таблицы в БД, оно системное, возможности переименовать ее нет.
Например:

SELECT DISTINCT
[Product].[Id] as [ProductID],
[Product].[Type] as [TypeID],

P.S.:Двойные и одинарные скобки не помогают.

Нравится

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

Как настроить регистрацию лидов с внешних ресурсов? есть ли какая документация или может кто описать поподробней как это делается.

Нравится

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

Добрый день, какой у Вас продукт?

Здравствуйте Дмитрий, bpmonline sales 7.8

Включите в настройках пространства секцию "Веб-формы" (Лендинги, точное название на русском не знаю). Добавьте новую форму. У нее есть поле со скриптом. Его содержание нужно скопировать на вашу страницу с формой и заменить "css-selector" на Id input'ов (проще всего type="text") вашей формы. Пример:

Допустим, у вас есть форма:

<form>
<label>Компания</label><input type=text id="CompanyName">
<label>Контакт</label><input type=text id="ContactName">
<label>Телефон</label><input type=text id="CompanyPhone">
<input type="submit">
</form>

Для того, чтобы ее данные попали в систему нужно после нее вставить скрипт, приведенный на карточке нового лендинга и в нем заменить css-placeholder на ваши:

<script>
 
var config = {
    fields: {
        "Name": "#ContactName", 
        "MobilePhone": "#CompanyPhone", 
        "Company": "#CompanyName", 
    },
    landingId: "469b233f-4648-4ed4-824c-9616eabe9c28",
    serviceUrl: "http://bpm78ed.asproduction.cz/0/ServiceModel/GeneratedWebFormService.svc/SaveWebFormLeadData",
    redirectUrl: ""
};
 
function createLead() {
    landing.createLeadFromLanding(config)
}
</script>

После этого в ваш исходный тег формы

<form>

добавить обработку submit onSubmit="createLead(); return false", т.е. он будет в нашем примере выглядеть так:

<from onSubmit="createLead(); return false">

ну и на странице с формой в HTML желательно в секцию добавить следующее:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://webtracking-v01.bpmonline.com/JS/track-cookies.js"></script>
<script src="https://webtracking-v01.bpmonline.com/JS/create-lead.js"></script>

все :smile:

Еще момент - в настройках формы в bpmonline нужно указать точный URL страницы с формой и страницы с сообщением о успешной отправке данных.

Извините что туплю недавно начал работать с bpm, непонятен момент "Включите в настройках пространства секцию "Веб-формы" (Лендинги, точное название на русском не знаю). Добавьте новую форму. У нее есть поле со скриптом." - Это следует на сайте добавить?
В настройках есть раздел "Настройки раздела Лендинги" в нем три пункта :
1.URL сервиса приёма данных со страниц лендингов - здесь нужно указать адрес URL страницы с формой?.
2.URL api создания лидов - в нем указан адрес скрипта.
3.Шаблон автогенерируемого скрипта на странице лендинга - в нем указан шаблон который Вы отправили.
Если есть возможность можно со скринами.

Все сделал как в документации в console выходит 400 bad request.
Если кто то сталкивался этой проблемой отпишитесь.

400 bad request - запрос не проходит. Видимо, что-то не так. Например - landingId: "469b233f-4648-4ed4-824c-9616eabe9c28", должен соответствовать вашему, urlы должны соответствовать тем, которые в описании формы bpmonline прописаны, вместо http://bpm78ed.asproduction.cz/0/ServiceModel/GeneratedWebFormService.s… должен быть ваш адрес (там где система стоит) и т.д.

Проверил, все выставлено правильно. Проблема не исчезла.

ну еще как вариант неверные названия полей. Или если используете справочники - нет в названии поля Id. Вставьте сюда (или на почту мне пошлите) скрипт целиком - надо посмотреть.

Та же самая ситуация, кстати. На тестовую bpm (on-demand) без проблем посылается, на локальную (on-site) - 400 возвращает..

Владимир, добрый день!

Решение данного вопроса будет предоставлено в рамках обращения 0397137, которое было создано Вами.

По результатам анализа мы опубликуем здесь решение.

Добрый день!

Как стало известно после анализа проблемы, ошибка заключалась в том, что в продукте Sales в таблице Lead нет колонки BpmSessionId (отсутствует пакет Event Tracker), о чем не было указано в документации.

Решением будет:
В коде Лэндинга на посадочной странице заменить строку

https://webtracking-v01.bpmonline.com/JS/create-lead.js

на

http://ajax-lib.bpmonline.com/marketing/7.6.0/create-lead.js

Это ссылка на предыдущий код создания Лида, в котором не использовался BpmSessionId для создания Лида.

Эта ошибка исправлена в последней релизной версии.

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

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

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

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

Нравится

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

В принципе подобное сделано в детали Заказ - Продукты в заказе (в версии 7.8 enterprise точно). Там при добавлении продукта открывается Подбор продуктов. В нем как раз есть группы

я бы фильтровал по тегам :) Это и есть статические группы старые

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

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

Да, только список не типов, а групп раздела по которому происходит выбор из справочника (динамические, статические группы из таблицы [название схемы объекта раздела]Folder).

Версия 7.6.0.1265 SalesTeam.

какое-то у меня нехорошее ощущение, что это крайне проблематично сделать. в salesteam примеров подобной реализации нет. Единственно, что можно посмотреть - как сделана сама секция (любая) и по аналогии.... Если не прав, коллеги поправят.

"Дмитрий Степанов" написал:в salesteam примеров подобной реализации нет

А перетащить куски из энтерпрайса почему нет? Там всего одна клиентская форма и модулей два-три от силы, отвечающие за каталог

не, ну если так да. Если у коллеги он есть :)

"Дмитрий Степанов" написал:не, ну если так да. Если у коллеги он есть :)

Это да :)
В полновесном демо он-деманд не помню, выпилили уже управление конфигурацией или нет

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

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

Как удалить эти следы удаленных сущностей и деталей?
Есть ли пример скрипта?

Нравится

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

Если объекты деталей и разделов удалены, Вам остается найти записи деталей по имени. Поиск нужной строчки что нужно будет удалить можно выполнить приблизительно так:

SELECT * FROM SysDetail WHERE Caption LIKE '%Имя детали%'

Получив нужную Вам строчку по имени, запоминаете её Id, и удаляете:

DELETE FROM SysDetail WHERE Id = 'айди что узнали выше'

Разделы найти и удалить можно аналогичным способом, только таблица другая:

SysModule

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

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

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

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

Версия 7.6.0.1265

Нравится

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

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

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

Также за эти кнопки отвечают следующие элементы:
DataGridActiveRowOpenAction
DataGridActiveRowCopyAction
DataGridActiveRowDeleteAction

Вы можете задать их видимость в схеме созданного Вами раздела.

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

Добрый день

Подскажите, как на С# написать условие:
если текстовое поле не заполнено, то...

Нравится

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

Работает:

if (Page.ChangeRequestEdit.Value != null) //&&(Page.IncidentEdit.Value == null))
{
Page.BaseMessagePanel.AddMessage(Warning, "Выберите номер Обращения, связанного с указанным ЗИ", MessageType.Warning);
return false;

}
else
{
return true;
}

А вот так не работает (опубликовывает без ошибок, но карточка без проблем закрывается):

if ((Page.ChangeRequestEdit.Value != null)&&(Page.IncidentEdit.Value == null))
{
Page.BaseMessagePanel.AddMessage(Warning, "Выберите номер Обращения, связанного с указанным ЗИ", MessageType.Warning);
return false;

}
else
{
return true;
}

Подскажите, в чем ошибка? Мне нужно проверить условие если поле Запрос на изменение заполнен, а поле Инцидент не заполнен, то выводится сообщение об ошибке...

Нет, не правильное условие. У меня поле - это поле справочника, а не текстовое. Подскажите, как на С# написать условие: если поле справочника не заполнено?

Там может быть не только null, но и Guid.Empty.
То есть, для каждого поля проверять так:

if (Page.AccountEdit.Value == null || new Guid(Page.AccountEdit.Value.ToString()) == Guid.Empty) {

Или так:

if (Page.CityEdit.Value == null || Page.CityEdit.Value.Equals(Guid.Empty)) {

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

спасибо, разобралась.

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

Подскажите, пожалуйста, каким образом можно добавить клиентским кодом на страницу элементы сторонних сайтов, напр. видео YouTube, либо контейнер iframe?

Нравится

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

Здравствуйте,
В системе есть пример уже, это встраивание видео на главной странице.
Суть написания сводится к использованию контейнера, и написанию в нем произвольного html кода, вплоть до iframe.
Еще пример:

define("CasePage", ["CasePageResources", "terrasoft", "LookupUtilities"],
	function(resources, Terrasoft, LookupUtilities) {
	return {
		entitySchemaName: "Case",
		details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
		attributes: {
		},
		diff: /**SCHEMA_DIFF*/[
			{
				"operation": "insert",
				"parentName": "SolutionTab_gridLayout",
				"name": "UsrTest",
				"propertyName": "items",
				"values": {
					"itemType": Terrasoft.ViewItemType.CONTAINER,
					"layout": { "colSpan": 24, "rowSpan": 1, "column": 0, "row": 4 },
					"id": "UsrTest",
					"selectors": {"wrapEl": "#UsrTest"},
					"html": '<iframe name="bpmonline-video" id="bpmonline-video" width="560" height="315"' +
					'src="https://www.youtube.com/embed/XGSy3_Czz8k" frameborder="0" allowfullscreen></iframe>'
				}
			},
		]/**SCHEMA_DIFF*/,
		methods: {
			onEntityInitialized: function() {
				this.callParent(arguments);
				// just for debug:
				document.scope = this;
			}
		},
		rules: {}
	};
});

Только с iframe стоит учитывать, что встраивать можно только те страницы, которые себя в явном виде позволяют встраивать, к примеру, youtube видео, а также протокол передачи должен совпадать, если ваш сайт работает через https, то и страница фрейма должна работать через https.

Большое спасибо!

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

Добрый день

Подскажите, как сделать следующее:

Если поле ЗИ.Активность заполнено, то можно было бы выбрать номер того Обращения , который подвязан к этому Запросу на Изменение (ЗИ).

Нравится

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

Откомпилировалось без ошибок, но по-прежнему при определенном номере ЗИ выдает полный список номеров Обращений.

Page.IncidentEdit.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) {
if (!Page.ChangeRequestEdit.Value.Equals(Guid.Empty)) {
var filters = e.Filters;
filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "ChangeRequest.Id"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {(Guid)Page.ChangeRequestEdit.Value}}});

}
};

- это нужно в ChildInitAfterParentScript, правильно?

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

на лукап я захожу, но не фильтрует...

так тоже опубликовывает, но не фильтрует:
Page.IncidentEdit.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) {
if (!Page.ChangeRequestEdit.Value.Equals(Guid.Empty)) {
var filters = e.Filters;
filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "[ServiceRequestInChangeRequest:Incident].ChangeRequest.Id"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {(Guid)Page.ChangeRequestEdit.Value}}});

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

Если поле Активность.ЗИ заполнено, в поле Активность.Инцидент нужно поставить фильтр, чтобы при нажатии на лупу выводило список всех номеров Инцидентов, у которых поле Инцидент.ЗИ равен Активность.ЗИ.

Есть связь м/д объектами Запрос на изменение и Инцидент и запрос на обслуживание: ChangeRequestInServiceRequest.

Пишу в ChildInitAfterParentScript на странице карточки задачи:
Page.IncidentEdit.PrepareLookupFilter += delegate (object sender, LookupEditEventArgs e) {
var changerequestId = (Guid)Page.ChangeRequestEdit.Value;
if (changerequestId !=Guid.Empty) {
Collection> filters = e.Filters;
filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "[ChangeRequestInServiceRequest:ServiceRequest].ChangeRequest.Id"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {(Guid)Page.ChangeRequestEdit.Value}}});

Опубликовывает без ошибок, но не фильтрует поле Активность.Инцидент - выдает полный список всех имеющихся. Не пойму, что не так, подскажите, пожалуйста.

Татьяна, попробуйте запустить профайлер и посмотрите, что за запросы идут.
Неужели так сложно сделать наложение фильтра?
См. также обсуждение тут и другие обсуждения по фильтрам.

не соображу, какое именно наложение фильтра сделать нужно.

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

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

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

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

Добрый день.

Подскажите, как сделать следующее:
При сохранении Активности с типом Задача, если ЗИ.Активность заполнено, то карточка ЗИ не сохранялась, а выдавала сообщение о необходимости заполнения поля Обращение.Активность.

Нравится

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

Добрый день
Подскажите, пожалуйста, как создать кнопку "Переслать" в реестре активностей, которая стояла бы на одному ряду с кнопками Добавить, Копировать,Изменить,Удалить ?

Нравится

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

И чтобы при нажатии на эту кнопку появлялась новая е-мейл-активность

И чтобы при нажатии на эту кнопку появлялась новая е-мейл-активность

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

Добрый день.
Создала кнопку "Переслать" непосредственно на странице карточки e-mail, обработчик:

все опубликовалось без ошибок. Но при нажатии на кнопку "Переслать" новое окно е-мейл активности не создается. Подскажите, почему?

попробовала написать скрипт по-другому, опубликовывает без ошибок, но карточке е-мейл активности не открывается. В чем моя ошибка?

var defValuesId = Guid.NewGuid();
var defValues = new Dictionary ();
defValues.Add("Contact", Page.ContactEdit.Value.ToString());
defValues.Add("Account", Page.AccountEdit.Value.ToString());
defValues.Add("CopyRecepient", Page.CopyRecepientEdit.Value.ToString());
defValues.Add("Recepient", Page.SenderEdit.Value.ToString());
defValues.Add("Body", Page.BodyEdit.Value.ToString());

var ActivityId = Guid.NewGuid();

UserConnection.SessionData[defValuesId.ToString()] = defValues;
var parameters =
new Dictionary {
{"createWithUId", ActivityId.ToString()},
{"entitySchemaUId", "C449D832-A4CC-4B01-B9D5-8A12C42A9F89"},
{"defValuesId", defValuesId.ToString()}
};
OpenTaskEditPage.OpenerInstanceId = InstanceUId;
OpenTaskEditPage.UseCurrentActivePage = true;

OpenTaskEditPage.PageUId = new Guid("dcdda065-321b-4560-aacb-05f6cc72cd80");
OpenTaskEditPage.PageParameters = parameters ;
return true;

Возможно, дело в формате объекта defValues.
Обычно он такого типа:

var defValues = new Dictionary <string, object>();
defValues["SysAdminUnitType"] = SysAdminUnitTypeId;

Записывается не строка, а значение типа Guid.

Если же дело не в этом, попробуйте провести отладку и посмотреть, как отрабатывает OpenPageUserTask.

я за основу брала : http://www.community.terrasoft.ru/forum/topic/9208
мне же не нужно создавать инцидент, генерировать номер для активности не нужно. Достаточно ли будет сигнала нажатия на кнопку "Переслать" и скрипта по открытию окна е-мейл активности?

пишу в этом скрипте:
var defValuesId = Guid.NewGuid();
var defValues = new Dictionary ();

defValues.Add("Contact", Page.ContactEdit.Value.ToString());
defValues.Add("Account", Page.AccountEdit.Value.ToString());
defValues.Add("CopyRecepient", Page.CopyRecepientEdit.Value.ToString());
defValues.Add("Recepient", Page.SenderEdit.Value.ToString());
defValues.Add("Body", Page.BodyEdit.Value.ToString());

var ActivityId = Guid.NewGuid();

UserConnection.SessionData[defValuesId.ToString()] = defValues;
var parameters =
new Dictionary {
{"createWithUId", ActivityId.ToString()},
{"entitySchemaUId", "c449d832-a4cc-4b01-b9d5-8a12c42a9f89"},
{"defValuesId", defValuesId.ToString()}
};
OpenTaskEditPage.OpenerInstanceId = InstanceUId;
OpenTaskEditPage.UseCurrentActivePage = true;

OpenTaskEditPage.PageUId = new Guid("dcdda065-321b-4560-aacb-05f6cc72cd80");
OpenTaskEditPage.PageParameters = parameters ;

return true;

Опубликовывает без ошибок, но рез-та нет: при нажатии на кнопку "переслать" ничего не происходит.

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

"TatianaM" написал:

попробовала написать скрипт по-другому, опубликовывает без ошибок, но карточке е-мейл активности не открывается. В чем моя ошибка?

var defValuesId = Guid.NewGuid();

var defValues = new Dictionary ();

defValues.Add("Contact", Page.ContactEdit.Value.ToString());

defValues.Add("Account", Page.AccountEdit.Value.ToString());

defValues.Add("CopyRecepient", Page.CopyRecepientEdit.Value.ToString());

defValues.Add("Recepient", Page.SenderEdit.Value.ToString());

defValues.Add("Body", Page.BodyEdit.Value.ToString());

var ActivityId = Guid.NewGuid();

UserConnection.SessionData[defValuesId.ToString()] = defValues;

var parameters =

new Dictionary {

{"createWithUId", ActivityId.ToString()},

{"entitySchemaUId", "C449D832-A4CC-4B01-B9D5-8A12C42A9F89"},

{"defValuesId", defValuesId.ToString()}

};

OpenTaskEditPage.OpenerInstanceId = InstanceUId;

OpenTaskEditPage.UseCurrentActivePage = true;

OpenTaskEditPage.PageUId = new Guid("dcdda065-321b-4560-aacb-05f6cc72cd80");

OpenTaskEditPage.PageParameters = parameters ;

return true;

Ваш объект называется OpenTaskEditPage1 а в скрипте OpenTaskEditPage

невнимательность... огромное спасибо.

подскажите, а после создания новой активности, можно ли сделать так, чтобы автоматически "старая" активность закрывалась?

Да, можно.

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

а в каком месте? и какого поля значение?

Это зависит от того, что Вы хотите запрограммировать.

"TatianaM" написал:

подскажите, а после создания новой активности, можно ли сделать так, чтобы автоматически "старая" активность закрывалась?

Попробуйте после скрипта открытия 2й страницы добавить вторую ветку процесса(с помощью элемента "И")
и послать завершающий сигнал( с передачей в родительский процесс) нажатие кнопки Cancel (точно не помню как называется, вроде, CancelButtonClick) или OK

А, так требуется карточку активности закрыть? Думал, что речь о состоянии «Закрыта». Если карточку, то действительно нужно в старой активности после открытия карточки новой вызвать код, как на кнопке закрытия:

(Page.AspPage as Terrasoft.UI.WebControls.Page).Close();

Или же смотрите рекомендации автора предыдущего сообщения.

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

Если не получится разобраться, можете заказать такую доработку.

"Зверев Александр" написал:Или же смотрите рекомендации автора предыдущего сообщения.

Сделала по рекомендации, но при нажатии на ОК в новой активности появляется ошибка, и окно активности не закрывается:

Предупреждение
The INSERT statement conflicted with the FOREIGN KEY constraint "FKInijGB83hrW19KtJno3hZK8". The conflict occurred in database "bptest", table "dbo.ChangeRequest", column 'Id'.
The statement has been terminated.

Такое сообщение говорит о том, что Вы неправильно заполнили в сохраняемой записи поле «Запрос на изменение». Смотрите рекомендации другого автора предыдущего сообщения:

"Мария Ватулина" написал:

Если не получится разобраться, можете заказать такую доработку.

"Зверев Александр" написал:Такое сообщение говорит о том, что Вы неправильно заполнили в сохраняемой записи поле «Запрос на изменение»

сама разобралась...

пишу:
defValues.Add("Incident",Page.IncidentEdit.Value.ToString());

но если поле Incident в "старой" е-мейл активности не заполнено, то при нажатии на ОК система выдает ошибку о том, что неправильно заполнили в сохраняемой записи поле "Инцидент".

Тогда делаю проверку на заполнение:
if (Page.IncidentEdit.Value != null)
{defValues.Add("Incident",Page.IncidentEdit.Value.ToString());}
else
{ defValues.Add("Incident","");} - то опубликовывает без ошибок, но не срабатывает при проверке, опять выдает ошибку о неправильно заполненном в сохраняемой записи поле "Инцидент".

Это потому, что Вы непонятно зачем работаете с полем «Инцидент» как с текстовым. А оно справочное. Если в копируемой записи поле не заполнено, то вообще нет смысла из него копировать.

нет, мне нужно его копировать, потому что поле "инцидент" может быть как заполнено, так и не заполнено.
пишу проверку так:

if (new Guid (Page.IncidentEdit.Value.ToString()) != Guid.Empty)
{defValues.Add("Incident",Page.IncidentEdit.Value.ToString());}
else {defValues.Add("Incident","");}

опубликовывает без ошибок, но при открытии новой е-мейл активности система выдает:
Exception Message: Нераспознанный формат идентификатора GUID.

Если оно не заполнено, то что Вы оттуда собираетесь копировать? Просто не заполняйте.

понятно, получилось так:

if (new Guid (Page.IncidentEdit.Value.ToString()) != Guid.Empty)
{defValues.Add("Incident",Page.IncidentEdit.Value.ToString());}

"Зверев Александр" написал:Если карточку, то действительно нужно в старой активности после открытия карточки новой вызвать код, как на кнопке закрытия:
(Page.AspPage as Terrasoft.UI.WebControls.Page).Close();

а как написать, что нужно именно старую активность закрывать?

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

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