사용자가 어떤 종류의 개체를 볼 수 있는지에 대한 아이디어를 얻기 위해 아래 (C# Partner WSDL 사용)를 사용했습니다.
내 자신 만의 사용을위한 quick'n'dirty 유틸리티 (읽기 - 코드하지 않음);
var service = new SforceService();
var result = service.login("UserName", "Password");
service.Url = result.serverUrl;
service.SessionHeaderValue = new SessionHeader { sessionId = result.sessionId };
var queryResult = service.describeGlobal();
int total = queryResult.sobjects.Count();
int batcheSize = 100;
var batches = Math.Ceiling(total/(double)batcheSize);
using (var output = new StreamWriter(@"C:\test\sfdcAccess.txt", false))
{
for (int batch = 0; batch < batches; batch++)
{
var toQuery =
queryResult.sobjects.Skip(batch * batcheSize).Take(batcheSize).Select(x => x.name).ToArray();
var batchResult = service.describeSObjects(toQuery);
foreach (var x in batchResult)
{
if (!x.queryable)
{
Console.WriteLine("{0} is not queryable", x.name);
continue;
}
var test = service.query(string.Format("SELECT Id FROM {0} limit 100", x.name));
if(test == null || test.records == null)
{
Console.WriteLine("{0}:null records", x.name);
continue;
}
foreach (var record in test.records)
{
output.WriteLine("{0}\t{1}",x.name, record.Id);
}
Console.WriteLine("{0}:\t{1} records(0)", x.name, test.size);
}
}
output.Flush();
}
마틴, 나는 이것이 해결책의 일부일 수 있다고 생각하지만,이 쿼리에는 단일 ID 또는 ID 집합이 필요합니다. 모든 규모가 큰 조직에 존재하는 모든 레코드 ID를 전달하는 것은 잘 확장되지 않습니다. 다른 생각? –