• zero1578
  • NEWBIE
  • 10 Points
  • Member since 2007

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 17
    Questions
  • 24
    Replies
I am wondering if anyone has a method they can share that will take the login name and password and log a user in to their salesforce account and keep their session tied to that user on the website only.  I have created my own but any time someone logs in to my web app every user using the web app is now the "last logged in user", which is obviously a problem.
 
I need a way to have any number of users log in to their salesforce accounts, perform some actions in my web app and create a case as themselves.
 
I have all of that working EXCEPT whoever logs in last is the person that everyone creates their cases as.  Any help is appreciated.
I have created a .net web form that allows a user to log in to salesforce, and at the end of a process create a case as themselves.  I have put this web app on an IIS server, and it works fine, as long as I am the only person using it.
 
 
Heres the problem:
 
User 1 logs in - starts filling out the form
User 2 logs in - starts filling out the form
 
No matter which user submits the data, the case is going to be created as User 2, since they were the last one to log in.  If a third user were to log in before the other two submitted their form, any of the submissions would look as though they were created by the last user to log in.
 
I am not sure what would cause this.  All users are accessing a server on the lan, the server connects out to salesforce. I am saving the sessionId from the loginresult, so I assume thats where the problem is.  I am not great with c# and scope so that could be the issue also :)
 
Code:
private static SforceService binding = new SforceService();

 
 
Code:
public static bool login(string login,string psw)
    {
        try
        {
            LoginResult lr = binding.login(login, psw);
            if (!lr.passwordExpired)
            {
                binding.Url = lr.serverUrl;
                binding.SessionHeaderValue = new SessionHeader();
                binding.SessionHeaderValue.sessionId = lr.sessionId;
                binding.Url = lr.serverUrl;
                QueryOptions bs = new QueryOptions();
                bs.batchSize = 2000;
                bs.batchSizeSpecified = true;
                GetUserInfoResult userInfo = lr.userInfo;
                HttpContext.Current.Session.Add("Name", userInfo.userFullName);
                HttpContext.Current.Session.Add("u", userInfo.userName);
                HttpContext.Current.Session.Add("sid", lr.sessionId);
                HttpContext.Current.Session.Add("server", lr.serverUrl);
                HttpContext.Current.Session.Add("Org", userInfo.organizationName);
                string firstName = userInfo.userFullName.ToString();
                firstName = firstName.Remove(firstName.IndexOf(" "));
                HttpContext.Current.Session.Add("FirstName", firstName);
                return true;


            }
            else
            {
                HttpContext.Current.Session.Add("Error", "Wrong Password, Account Expired, or General Error.");
                return false;
            }
        }
        catch (Exception r)
        {
            HttpContext.Current.Session.Add("Error", r.Message);
            return false;
        }
        

    }

 
 

 

I am working creating something that will allow our users to log in to their salesforce account and create cases from an external web application.  I want to be sure I am having them log in, the login is maintained, and that creating or viewing items in salesforce utilizes that same session.  Does anyone have any working C# code that can manage the login process in this way they could share?
Does anyone have a fast/faster/fastest way to load the values of a specific picklist in a custom s control?
 
I am currently using:
 
Code:
var describeResult = sforce.connection.describeSObject("Case"); 
var fieldMap = []; 
var fields = describeResult.getArray("fields"); 

for(var i =0; i<fields.length; i++) 
{ 
fieldMap[fields[i].name] = fields[i]; 
} 

var fldType = fieldMap["Product_or_Service__c"]; 
var selType = document.getElementById('prodService'); 
for(var j=0;j<fldType.picklistValues.length;j++) 
{ 
if(fldType.picklistValues[j].active) 
{ 
selType.options[j] = new Option(fldType.picklistValues[j].label, fldType.picklistValues[j].value); 
selType.options[j].selected = (fldType.picklistValues[j].defaultValue == true); 
} 
} 

 
which works, but its dog slow.  Anyone have a faster solution?  I always know exactly the name of the field I want the values for if that helps any.
I have created a case assignment logic tool out of a set of s-controls.
 
Essentially we have teams of customer service representatives.
Each team is a public group in salesforce.  Each group consists of various users.
 
My tool determines who you are, what team you belong to and then compiles a list of all the cases in the "queues" you are supposed to be working.  It then passes each of those cases through a bunch of filters and scoring functions to determine which item is the most important to be worked next.
 
Once it determines the most important item, it assigns that item to the user, and they become the owner of that case.
 
The issue I am running into is multiple people using the tool at the same time, or within seconds of each other, are both becoming the owner of the case.
 
User 1 at 10:00:01 uses the tool, and is assigned case 123456
User 2 at 10:00:0X uses the tool and is assigned case 123456
 
I assume that it takes just enough seconds, that if a person is using the tool, another person can end up with the same group of cases and not realize that its been taken away from the set by someone else.
 
This technically shouldnt be happening with the speed that the tool processes the cases, so I think it has something to do with record updating logic that salesforce might have in place outside of my control.  When a record is updated, and someone else requests an update to that same record at or around the exact same time, what happens?   Is there any prevention in place to ensure multiple edits arent overwriting each other? Do you queue up the api calls and they all take place in order, but definitely do take place no matter what?
 
I am going to try to see if I can run a quick query on the  LastModifiedDate field just before assigning the case, and if it doesnt match what I had originally when they started using the tool, have them process the next item in the list, but I wanted to post here to see if someone might be able to offer a better solution that would be more reliable.
I have a picklist, with a lot of values. In salesforce I can configure record types to only 'see' specific values from that picklist.
 
In my code, I can access that field, and get all values and populate a dropdown list.
 
How can I modify this so that only the values for a specific record type are returned?
We use Tasks to append emails into our cases so that they dont clutter the comments section.  Doing this also allows us to use the content for other things, such as sending replies with the original customer email included.
 
Heres the code, and it will need to be customized some but I had to go through and figure out how to handle the HTML/Text-Only switches in the Email page.  I also had to provide the team with a way to send the email and refresh their case showing that it was sent.
 
 
I dont know if this will be useful to anyone, but our team has found it pretty useful so I figured I would share it.  It can probably be optimized a lot, thats not one of my strong points.
 
Code:
<script type="text/javascript" language="javascript" src="/soap/ajax/9.0/connection.js"></script> 
<script type="text/javascript" language="javascript" src="/soap/ajax/9.0/apex.js"></script> 


<script language="JavaScript"> 
//the textarea in the HTML stores the actual "Content" 
//of the body from the Task page to be passed to the email page



//boolean to store a value so when you switch mail content type
//from HTML to Text-Only it doesnt re-write the entire body with
//original content only, erasing your recent additions.

var hasBeenUsed = false; 
function getContents() 
{ 
if(!hasBeenUsed) 
{

//get which text mode you are in, html or text only 
var checkHTML = window.frames['myEmail'].document.getElementById('iframe_p23'); 
var checkTEXT = window.frames['myEmail'].document.getElementById('p7'); 

if(checkHTML) 
{ 
var newDiv = window.frames['myEmail'].document.getElementById('iframe_p23').contentWindow.document.createElement('div'); 

newDiv.innerText = document.getElementById('contentHolder').innerText; 

window.frames['myEmail'].document.getElementById('iframe_p23').contentWindow.document.body.appendChild(newDiv); 
hasBeenUsed = true; 
} 
if(checkTEXT) 
{ 
alert("textmode"); 
window.frames['myEmail'].document.editPage.elements['p7'].innerText = document.getElementById('contentHolder').innerText; 
hasBeenUsed = true; 
} 
} 
} 


function redirect() 
{ 
//create our custom buttons in the outer shell that closes and refreshes the case window
document.getElementById('content').innerHTML +="<center><input type=\"button\" class=\"btnImportant\" id=\"btnClose\" value=\"Close \& Refresh\" onClick=\"doRefresh();\"><input type=\"button\" class=\"btnImportant\" id=\"btnDoAll\" value=\"Send \& Close \& Refresh\" onClick=\"doAll();\"></center>"; 

//get the subject of the task
var mySub = "{!Task.Subject}"; 
//filter out the # signs it causes issues
mySub = mySub.replace(/#/,""); 

//store the case id
var myCase = "{!Task.What}"; 
//store the contact id
var myContact = "{!Task.Who}"; 

//we use additional email addresses so we can send to more than 1 person at once and have it populated from the contact record
var myAddtl = ""; 
var qr = sforce.connection.query("SELECT Addt_l_Email_Addresses__c FROM Contact WHERE Id = '" + myContact + "'"); 
if(qr.size>0) 
{ 
//we found at least one, so store it
var results = qr.getArray("records"); 
myAddtl = results[0].get("Addt_l_Email_Addresses__c"); 
} 



var stringBuilder = ""; 
//start creating the iframe to hold the email page, then if content items are populated, add it to the string
stringBuilder += "<iframe id=\"myEmail\" vspace=\"0\" hspace=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"yes\" width=\"100\%\" height=\"95\%\" name=\"myEmail\" frameborder=\"0\" onLoad=\"parent.getContents()\;\" src=\"/email/author/emailauthor.jsp—retURL=\%2F{!Task.Id}"; 

if(myCase) 
{ 
stringBuilder += "\&p3_lkid=" + myCase + ""; 
} 
if(myContact) 
{ 
stringBuilder += "\&p2_lkid=" + myContact + ""; 
} 
if(myAddtl) 
{ 
stringBuilder += "\&p4=" + myAddtl + ""; 
} 
if(mySub) 
{ 
stringBuilder += "\&p6=" + mySub + ""; 
} 
//finish off the iframe tag
stringBuilder += "\"></iframe>"; 

//put the iframe into the page
document.getElementById('frameHolder').innerHTML = stringBuilder; 
} 



function pauseComp(millis) 
{ 
//it was actually too fast to refresh the case on send, so we freeze you for a sec to prevent confusion
var date = new Date(); 
var curDate = null; 

do { curDate = new Date(); } 
while(curDate-date < millis); 
} 


function doAll() 
{ 
//find out if your iframe is still on the email page, if you are, send if not, warn them and close it.
var myFrameLoc = parent.myEmail.location.href; 
var myMatch = myFrameLoc.search(/emailauthor.jsp/i); 
if(myMatch != -1) 
{ 

window.frames.myEmail.sendEmail(); 
pauseComp(1000); 
opener.location.reload(); 
window.close(); 
} 
else 
{ 
alert("You are not on the Send Email Page! This window will now close."); 
opener.location.reload(); 
window.close(); 
} 
} 


function doRefresh() 
{ 
//click the close and refresh only button does a close and refresh of the parent opening window
opener.location.reload(); 
window.close(); 
} 

</script> 
</head> 
<body onLoad = "redirect();"> 
<div id="frameHolder"></div> 
<div id="content"></div> 
<form id="myHolder" name="myHolder"> 
<textarea id="contentHolder" name="contentHolder" style="visibility:hidden;display:none;" value="">{!Task.Description}</textarea></form> 
</body> 
</html>

 
I am trying to optimize some of our s-controls, and one of the worst ones so far is a custom object that relates to cases, which then ties the OwnerId to the Name of the User/Queue.  This is being run against a large number of cases and it takes about 10 minutes to run today.  Is there a way to query the Names of the owners from the Case Id and access the result directly?  I know there are relationship queries and I might be able to access the values I need through that but I have not played with that yet and I havent seen helpful documentation on it.  If anyone has a link to the document that covers relationships or knows a more efficient way than grabbing the Ids and looping through the different objects to get what I need it would be great to hear about it.
I am trying to update Parent Case through an S-Control.  The field does not appear to be visible in the "Case" object, and I have looked through other objects in Apex Explorer and cant find it.  Has anyone found a way to populate this field through code? If so, what is the fields name and what object is it stored in?
 
Thanks.
It looks like the MRU hover functions are pretty simple to use, but I cannot seem to get them working in my S-Controls.
 
The Library.js and Ajaxdesktop.js (if i remember right) files have all the functions.  I created my S-Control, created all the onblur,mouseover,mouseout functions using the same syntax used in the MRU List in the Case section.
 
I then added the script:
 
<script type="text/javascript">MRUHoverDetail.loaderURL = "/ui/common/MRUHoverLoader?hoverIds=" + myId + "&retURL=%2F" + thisId + ""; window.sfdcPage.appendToOnBeforeUnloadQueue(function(){MRUHoverDetail.loaderURL = null }, 'Prevent MRU bulk loader request from firing');</script>
 
where myId is the ID of the object I want displayed in the hover, and thisId is the case we are currently viewing.
I should be able to just specify MRUHoverDetail.getHover('Id') but I am thinking there might be a hidden iFrame or a Div that I am not seeing that is associated with these hovers.  Has anyone been able to get them working on custom objects?  Are there any Devs that know what is required to have a link present the mini page layout hover on mouseover?  Thanks for reading.
I am trying to build a few S-Controls that can perform operations on cases.  I pull the Case OwnerId and and I can then query against the User object to get all the names.  The problem I am running into is when an OwnerId points to a Group (queue) it fails and ends up stopping the loop, setting all additional Owners to 'undefined'.
 
Is there a javascript function that can determine if the Id being passed in is a User or a Group Id and then pull the Name accordingly?
 
I dont really want to have to build an array of queries to check both for each value, and I dont really understand the logic for querying relationship fields in Salesforce yet, so that may be a possible solution if anyone knows how to query the Name field from the Case objects OwnerId field.
 
Any suggestions? :)
I have created an S Control which sits in the Fields list in a Case object.
 
The S Control is a link with an onclick event that runs javascript (also in the S Control).
 
The Javascript takes fields from the current case and creates a special case with specific information, a specific record type, and assigns the case accordingly.  The javascript also has some validation built in to prevent users from using this incorrectly.
 
Testing this, everything works 100% as expected while logged in as a System Administrator.
 
Logging in as a standard user, even though I have verified they have permission to view the record type, and all fields of the new record type, when the case is being created in the Javascript function the case number is 'undefined'.
 
Is there some place special I have to enable users to run S Controls?  I cant imagine that all the fields they can edit normally if they were to click the Edit button are disabled through script access.
 
I am using Try / Catch blocks, and there is no error coming back when using the normal account, just 'undefined' for the case number, and the creation fails.
 
I know the Try/Catch block is working properly because when I had invalid field names it caught those and enabled me to fix them. 
 
Does anyone have ideas on what this problem might be?
I am trying to create a new button that runs an S Control that will take the current "Case", grab the information from specified fields, and create a new case.  I have tried several methods.  Surprisingly every time I search for information I come up with a new completely unrelated possible solution.
 
I have tried at least 4 different ways, and I continue to get page javascript errors "Object Expected", same error every time, line number does change.
 
Code:
<html>
<head>
<script language="javascript" src="/soap/ajax/8.0/connection.js" type="text/javascript"></script>
<script type="text/javascript">
function createClone()
{

var case = new sforce.SObject("Case");

case.RecordTypeId = "012300000000000000";
case.ContactId = "{!Case.ContactId}";
case.Applicant_Name__c = "{!Case.Applicant_Name__c}";
case.Request_ID__c = "{!Case.Request_ID__c}";
case.Product_or_Service__c = "{!Case.Product_or_Service__c}";
case.Subject = "{!Case.Subject}";
case.Origin = "{!Case.Origin}";
case.AccountId = "{!Case.AccountId}";
case.CS_Case_Number__c = "{!Case.CS_Case_Number__c}";
case.Description = "{!Case.Description}";


var result = sforce.connection.create([case]);

  if (result[0].getBoolean("success")) 
{
    log("new case created with id " + result[0].id);
}
 else 
{
   log("failed to create case " + result[0]);
 }



}
</script>
</head>
<body onload="createClone()">
<P>&nbsp;</p>
</body></html>

 
I took out the other methods I had attempted so hopefully this is readable.  I also tried creating a DynaBean("Case") and setting the values, case.set("Item",value); and then calling sforceClient.Create([case])[0]; but was met with the same result, Object Expected.  Im going to try to see if it is null values or something somewhere.  Is there a way to check that in the code I listed above?
We have very high volume Case usage.  We have an issue with duplicates.  I am looking to create a way to check case subject lines on 'New Case' attempts.  If the subject line has a match, we prompt with the Case.CaseNumber of the match that was found.
 
Has anyone implemented a similar override or a new button that allows new case creation but will check for existing items? 
Can anyone post a generic sample on how to change a single field in a Case object?
 
For example, change the 'Status' field from one value to another?  Thank you
Is it possible to create a custom link tied to an SControl that will reassign the current case to a specified (in code) (OwnerId) user?
 
I would possibly like to update the current case status as well.  Does anyone have an example of this?  I am decent with the API in .NET but trying to get this to work is proving more difficult than I would have thought.  Thanks in advance.
I am looking to try and create a dependant picklist management tool, but I have read several times that older versions of the API do not support the ability to manage fields.  Is this still the case?  Is there no way to:
 
1) Get the list of all the picklist fields (done)
2) Print out the values of the controlling field and the child field based on parent field values (done)
 
3) Generate a list of values to be updated in the parent and/or child controls (done)
 
*4) Update SF custom field with the values from my app
 
I am not finding any information that is helpful for #4.  Is it impossible to manage fields through code or is it just not exposed to developers yet?  Maybe I am missing where it explains this functionality, but if someone can point me in the right direction I would appreciate it.
 
We have a lot of dependant picklists to set up and while we love that the feature actually exists, the users are overwhelmed with how long it takes to manage the fields.
I have created a .net web form that allows a user to log in to salesforce, and at the end of a process create a case as themselves.  I have put this web app on an IIS server, and it works fine, as long as I am the only person using it.
 
 
Heres the problem:
 
User 1 logs in - starts filling out the form
User 2 logs in - starts filling out the form
 
No matter which user submits the data, the case is going to be created as User 2, since they were the last one to log in.  If a third user were to log in before the other two submitted their form, any of the submissions would look as though they were created by the last user to log in.
 
I am not sure what would cause this.  All users are accessing a server on the lan, the server connects out to salesforce. I am saving the sessionId from the loginresult, so I assume thats where the problem is.  I am not great with c# and scope so that could be the issue also :)
 
Code:
private static SforceService binding = new SforceService();

 
 
Code:
public static bool login(string login,string psw)
    {
        try
        {
            LoginResult lr = binding.login(login, psw);
            if (!lr.passwordExpired)
            {
                binding.Url = lr.serverUrl;
                binding.SessionHeaderValue = new SessionHeader();
                binding.SessionHeaderValue.sessionId = lr.sessionId;
                binding.Url = lr.serverUrl;
                QueryOptions bs = new QueryOptions();
                bs.batchSize = 2000;
                bs.batchSizeSpecified = true;
                GetUserInfoResult userInfo = lr.userInfo;
                HttpContext.Current.Session.Add("Name", userInfo.userFullName);
                HttpContext.Current.Session.Add("u", userInfo.userName);
                HttpContext.Current.Session.Add("sid", lr.sessionId);
                HttpContext.Current.Session.Add("server", lr.serverUrl);
                HttpContext.Current.Session.Add("Org", userInfo.organizationName);
                string firstName = userInfo.userFullName.ToString();
                firstName = firstName.Remove(firstName.IndexOf(" "));
                HttpContext.Current.Session.Add("FirstName", firstName);
                return true;


            }
            else
            {
                HttpContext.Current.Session.Add("Error", "Wrong Password, Account Expired, or General Error.");
                return false;
            }
        }
        catch (Exception r)
        {
            HttpContext.Current.Session.Add("Error", r.Message);
            return false;
        }
        

    }

 
 

 

I want to authenticate the user from my application and want to redirect to the home page of salesforce. com if he is valid user.
I want to know How to do this? 
 
  • March 19, 2008
  • Like
  • 0
I have created a case assignment logic tool out of a set of s-controls.
 
Essentially we have teams of customer service representatives.
Each team is a public group in salesforce.  Each group consists of various users.
 
My tool determines who you are, what team you belong to and then compiles a list of all the cases in the "queues" you are supposed to be working.  It then passes each of those cases through a bunch of filters and scoring functions to determine which item is the most important to be worked next.
 
Once it determines the most important item, it assigns that item to the user, and they become the owner of that case.
 
The issue I am running into is multiple people using the tool at the same time, or within seconds of each other, are both becoming the owner of the case.
 
User 1 at 10:00:01 uses the tool, and is assigned case 123456
User 2 at 10:00:0X uses the tool and is assigned case 123456
 
I assume that it takes just enough seconds, that if a person is using the tool, another person can end up with the same group of cases and not realize that its been taken away from the set by someone else.
 
This technically shouldnt be happening with the speed that the tool processes the cases, so I think it has something to do with record updating logic that salesforce might have in place outside of my control.  When a record is updated, and someone else requests an update to that same record at or around the exact same time, what happens?   Is there any prevention in place to ensure multiple edits arent overwriting each other? Do you queue up the api calls and they all take place in order, but definitely do take place no matter what?
 
I am going to try to see if I can run a quick query on the  LastModifiedDate field just before assigning the case, and if it doesnt match what I had originally when they started using the tool, have them process the next item in the list, but I wanted to post here to see if someone might be able to offer a better solution that would be more reliable.
I have a picklist, with a lot of values. In salesforce I can configure record types to only 'see' specific values from that picklist.
 
In my code, I can access that field, and get all values and populate a dropdown list.
 
How can I modify this so that only the values for a specific record type are returned?
Ok, trying to integrate with the WSDL from a C# web app in VS2005. After fixing some simple mistakes in the example code such as "qr.recrods" etc, I'm still having issues. In the login method there is this line:

sfdc.GetUserInfoResult userInfo = lr.userInfo;

However, GetUserInfoResult is not a member of that object.
The closest I see in intellisense is getUserInfo but that does not work. Is there anotehr example that works? I apologize but I'm completely new to SalesForce and just trying to estimate a project to integrate some simple web forms on a client site to automatically push the data to their salesforce database. I've worked with WebServices before just not this API.

I am creating a new case with the API in ASP.NET with VB.NET, got this to work.  I would like to set the recordType to one of three types I have setup in SFDC.  But with my Case object the recordType can only be set to a sforce.recordType, Error    1    Value of type 'String' cannot be converted to 'sforce.RecordType'.    How do you set the record type of a new case with the API?

Message Edited by scottskiblack on 05-01-2007 02:35 PM

Hi all,
 
Sorry about the previous post, it was a mistake. I am pretty new to salesforce and have a quick question about the "SessionHeaderValue".
 
Q. How can I make a SessionHeaderValue permenent for all API calls? Please have a look at the code below...
 
 
--------------------------------------------------------------

public SforceService binding = new SforceService();

void function1()

{

//execute the login placing the results
//in a LoginResult object
sforce.LoginResult loginResult = binding.login(userName,password);

//set the session id header for subsequent calls
binding.SessionHeaderValue = new sforce.SessionHeader();
binding.SessionHeaderValue.sessionId = loginResult.sessionId;

//reset the endpoint url to that returned from login
binding.Url = loginResult.serverUrl;

}

 

void function2()

{

if I want to do an API call here, it will through an NullRef Exception. Its because the SessionHeaderValue is empty or something to do with the Session Header. But I have already logged in to the system. For every API call do I have to write the SessionHeader ?

}

I am trying to update Parent Case through an S-Control.  The field does not appear to be visible in the "Case" object, and I have looked through other objects in Apex Explorer and cant find it.  Has anyone found a way to populate this field through code? If so, what is the fields name and what object is it stored in?
 
Thanks.
I have an S-control (in this case, it enacts a SkypeOut phone call for the lead...) that I would like to trigger a field update on user click.

I have a custom field named Times_Called that I need to increment by +1 each time the s-control button is pressed, thereby tracking the number of times the lead has been called.

Also, a little fancier, but each time the s-control button is pressed, I need it to be disabled for 8 hours afterwards (to give the user only "fresh" leads..)


If anyone can shed any light on either of these topics, it would be greatly appreciated!


I am trying to build a few S-Controls that can perform operations on cases.  I pull the Case OwnerId and and I can then query against the User object to get all the names.  The problem I am running into is when an OwnerId points to a Group (queue) it fails and ends up stopping the loop, setting all additional Owners to 'undefined'.
 
Is there a javascript function that can determine if the Id being passed in is a User or a Group Id and then pull the Name accordingly?
 
I dont really want to have to build an array of queries to check both for each value, and I dont really understand the logic for querying relationship fields in Salesforce yet, so that may be a possible solution if anyone knows how to query the Name field from the Case objects OwnerId field.
 
Any suggestions? :)
I have created an S Control which sits in the Fields list in a Case object.
 
The S Control is a link with an onclick event that runs javascript (also in the S Control).
 
The Javascript takes fields from the current case and creates a special case with specific information, a specific record type, and assigns the case accordingly.  The javascript also has some validation built in to prevent users from using this incorrectly.
 
Testing this, everything works 100% as expected while logged in as a System Administrator.
 
Logging in as a standard user, even though I have verified they have permission to view the record type, and all fields of the new record type, when the case is being created in the Javascript function the case number is 'undefined'.
 
Is there some place special I have to enable users to run S Controls?  I cant imagine that all the fields they can edit normally if they were to click the Edit button are disabled through script access.
 
I am using Try / Catch blocks, and there is no error coming back when using the normal account, just 'undefined' for the case number, and the creation fails.
 
I know the Try/Catch block is working properly because when I had invalid field names it caught those and enabled me to fix them. 
 
Does anyone have ideas on what this problem might be?
I am looking to try and create a dependant picklist management tool, but I have read several times that older versions of the API do not support the ability to manage fields.  Is this still the case?  Is there no way to:
 
1) Get the list of all the picklist fields (done)
2) Print out the values of the controlling field and the child field based on parent field values (done)
 
3) Generate a list of values to be updated in the parent and/or child controls (done)
 
*4) Update SF custom field with the values from my app
 
I am not finding any information that is helpful for #4.  Is it impossible to manage fields through code or is it just not exposed to developers yet?  Maybe I am missing where it explains this functionality, but if someone can point me in the right direction I would appreciate it.
 
We have a lot of dependant picklists to set up and while we love that the feature actually exists, the users are overwhelmed with how long it takes to manage the fields.