ExecuteCustomSQL
SQL
Технические вопросы
7.x

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

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

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

Нравится

0 комментариев
Показать все комментарии
Лид
настройка форм внешних ресурсов
Технические вопросы
7.x

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

Нравится

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 примеров подобной реализации нет

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

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

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

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

Показать все комментарии
мусор в базе данных
Технические вопросы
7.x

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

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

Нравится

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

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

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

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

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

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

SysModule

Показать все комментарии
7.6
Технические вопросы
7.x

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

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

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

Версия 7.6.0.1265

Нравится

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

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

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

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

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

Показать все комментарии
Технические вопросы
5.x

Добрый день

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

Нравится

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.
А готовые примеры разнообразных проверок можно невозбранно найти в исходных кодах схем конфигурации, которые Вы можете выгрузить в виде файлов и выполнять по ним поиск.

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

Показать все комментарии
7.7
Технические вопросы
7.x

Подскажите, пожалуйста, каким образом можно добавить клиентским кодом на страницу элементы сторонних сайтов, напр. видео 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.

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

Показать все комментарии
Технические вопросы
5.x

Добрый день

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

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

Нравится

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 и посмотреть, пускает ли фильтр то, что нужно и если нет, то почему.

Показать все комментарии
Технические вопросы
5.x

Добрый день.

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

Нравится

1 комментарий
Технические вопросы
5.x

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

Нравится

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();

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

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

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