В сообщении на форумах разработчиков, на которое вы ссылаетесь, показан следующий javascript, используемый для кнопки:
{!REQUIRESCRIPT("/soap/ajax/15.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/15.0/apex.js")}
var pageUrl = sforce.apex.execute("mynamespace.PageUrl", "getPageUrl", {objectId:"{!Campaign.Id}"});
window.location.href = pageUrl;
т.е. они используют javascript для вызова метода веб-сервиса в классе, который они определили, чтобы получить ссылку на страницу. Это позволит вам получить URL страницы в вершине, где управляемый пакет не будет играть важную роль.
Тем не менее, первый параметр - это полностью определенное имя класса, так что вы, вероятно, можете проверить возвращаемое значение на наличие ошибки (я не знаю возвращаемого значения ошибки, поэтому я предполагаю, что оно null
здесь) :
// try the namespace first
var pageUrl = sforce.apex.execute("mynamespace.myClass", "getPageUrl", {objectId:"{!Campaign.Id}"});
if (pageUrl == null)
{
pageUrl = sforce.apex.execute("myClass", "getPageUrl", {objectId:"{!Campaign.Id}"});
}
window.location.href = pageUrl;
Очевидно, что вам нужно проверить, что происходит при сбое sforce.apex.execute()
, и вам, скорее всего, понадобится дополнительная обработка ошибок.