• Taiki Yoshikawa
  • NEWBIE
  • 75 Points
  • Member since 2012
  • Force.com Developer
  • Salesforce DUG Tokyo


Badges

  • Chatter
    Feed
  • 150
    Best Answers
  • 1
    Likes Received
  • 1
    Likes Given
  • 2
    Questions
  • 584
    Replies
ネットの情報を参考にしながら、visualforceで日本語pdf出力で改行できない問題を改行コード<wbr />を入れて解決するクラスを作ってみたのですが、sandboxでは動くのですが、本番リリースでうまくいきません。IDに関連するeventの情報を取ってきて、時系列にpdf上に表示するvisualforcepageを別に用意しています。初心者なもので、何を修正したらカバー率が上がるかわからず、アドバイス頂けると助かります。

visualforce class  ShowAllSObjectActivityKaig
public class ShowAllSObjectActivityKaig {
Id sObjectname= ApexPages.currentPage().getParameters().get('Id');

public list<Event> tasklist{get;set;}
public list<Event> namae{get;set;}
public  ShowAllSobjectActivityKaig(){
if(sObjectname !=null )

namae= [select id,ActivityDateTime,StartDateTime,Field6__c,Field5__c,Field1__c,Subject,Type,Field2__c,Who.Name,What.Name,Description,LastModifiedDate,Owner.Name FROM Event WHERE WhatID=:sObjectname OR whoId=:sObjectname order by startdatetime asc
LIMIT 1];

tasklist= [select id,ActivityDateTime,StartDateTime,Field6__c,Field5__c,Field1__c,Subject,Type,Field2__c,Who.Name,What.Name,Description,LastModifiedDate,Owner.Name FROM Event WHERE WhatID=:sObjectname OR whoId=:sObjectname order by startdatetime asc
];


//一文字ずつクラスを参照し、返す
//参加者
for(Event a : tasklist){
a.Field1__c = kaigyo(a.Field1__C,1);
}
//内容
 for(Event a : tasklist){
 a.Description = kaigyo(a.Description,1);
 }
}

public PageReference cancel() {
PageReference ldPage = new PageReference('/'+sObjectname);
ldPage.setRedirect(true);
return ldPage;
}
//指定位置にwbrコードを入れる
public String kaigyo(String value, Integer posLength )
    { 
    if(value == null || value.length() <= posLength) return value; 
    String rtnValue = value.substring(0, posLength ) + '<wbr/>'; 
    for(Integer i = posLength; i < value.length(); i++)
        {
        if(Math.mod(i, posLength ) == 0)
            { 
            if(value.length() > i + posLength)
                { 
                rtnValue += value.substring(i, i + posLength ) + '<wbr/>';
                }
                else
                { 
                rtnValue += value.substring(i,value.length());
                }
               //  kaigyoCount[col]++; 
             }
        }
        return rtnValue;
    }
}
visualforce page 
 
<apex:page controller="ShowAllSObjectActivityKaig" standardStylesheets="false"

 showHeader="false"
 sidebar="false"
 applyHtmlTag="false"
 renderAs="pdf">
<head>
 <style>
  @page {
    size: 8.27in 11.69in;
    padding: 0;
  }
  body {
    font-family: Arial Unicode MS;
    font-size: 10pt;
    text-align: left;

  }
  
table.type01 {
    width: 650px;
    table-layout:fixed;
    word-wrap: break-word;
    border-collapse: collapse;
    text-align: left;
    line-height: 1.2;
    margin-left:15px;
}
table.type01 th {
    width: 150px;
    padding: 2px;
    font-weight: bold;
    vertical-align: top;
    border: 1px solid #333;
}
table.type01 td {
    width: 500px;
    padding: 2px;
    vertical-align: top;
    border: 1px solid #333;
}





  
</style>
  
    
 </head>
<h2>
<center>相談支援記録</center></h2>
<table class="type01" >
<tbody>
<tr>
<th>

<br></br>
</th>
<td><apex:repeat value="{!namae}" var="item">
(<apex:outputText value="{!item.Who.Name}"/>)
[<apex:outputText value="{!item.What.Name}"/>]
</apex:repeat> 
</td>
</tr>
<apex:repeat value="{!tasklist}" var="oSobject">
<tr>                 
<th><apex:outputText value="{!oSobject.Field6__c}" />
    <br>
    <apex:outputText value="{0,date,HH:mm}">
    <apex:param value="{!oSobject.startdatetime}"/></apex:outputText>
    </br>
    <br><apex:outputText value="(種){!oSobject.Subject}" /></br>
    <br><apex:outputText value="(所){!oSobject.Field2__c}" /></br>
    <br><apex:outputText value="(参){!oSobject.Field1__c}" escape="false" /></br>
</th>

<td><apex:outputText value="{!oSobject.Description}" escape="false" /></td></tr>     
                  
</apex:repeat>                    
</tbody>
</table>  
</apex:page>



 
お世話になります。

chatterに関して質問です。
Salesforce Platformライセンスユーザのchatter投稿をコミュニティユーザのchatterで見る、
コミュニティユーザのchatter投稿をSalesforce Platformライセンスユーザのchatterで見る
ということをしたいのですが、実現することは可能でしょうか?
また、実現方法はどのようになるのでしょうか?

ご教示をお願い致します。
  • November 20, 2017
  • Like
  • 0
プロセスビルダーまたはVisualWorkフローを利用してChatterを自動投稿する機能について、
Chatterの投稿者を指定することができるでしょうか。
例えば、作業者はユーザAですが、Chatterの投稿者はユーザB(システム用アカウント)で行いたいです。
可能な設定あればご教示ください。

作業漏れの自動案内を行うChatterを投稿したいため、レコード更新したユーザAでなく、システム用のアカウントから投稿したメッセージとして表示したいと考えています。
ご教示ください。
よろしくお願いします。
APEXトリガで、レコードの更新または削除を実行したユーザのプロファイルを取得して、条件に指定することは可能でしょうか。
例えば、下記の形で条件指定をする時、実行ユーザのプロファイル情報を指定することが可能か知りたいです。
IF(実行ユーザのプロファイル=営業用プロファイル OR マネージャ用プロファイル , 動作A , 動作B)

APEXで実行ユーザのプロファイル情報を取得して条件に指定する方法ありましたら、ご教示ください。
よろしくお願いします。
レコードの項目値でレコードの削除を制限する方法あるでしょうか。
関連リストの左端にある削除をクリックした時に、項目値が特定の値(ex.商談のフェーズ=受注)であれば、削除できないようにしたいです。

本来は関連リストの編集・削除のリンクを非表示にしたいのですが、
ヘルプに問い合わせたところ、ユーザーのアクセス権限が影響し、削除を利用するユーザーは非表示にできないと回答があったため、
対策を検討しています。

ご教示いただけますと幸いです。
よろしくお願いいたします。
お世話になっております。

以下画像に表示されているAPI要求数について、
内訳を確認することは出来ますでしょうか。

例:XXXクラスのYYYメソッドから1000回要求されている
  AAAクラスのBBBメソッドから896回要求されている...など

User-added image



以上です。
  • September 26, 2017
  • Like
  • 0
指数表記(0.00E+11)を入力規則で制限することは可能でしょうか。
ロングテキスト項目をデータローダで更新する場合、CSVが指数表記になっている状態で取り込むことを防ぎたいです。

例えば、「0.00E+11」という指数表記で、数値以外はエラーを表示する入力規則を作成しましたが、
「E」や「+」だけだと文字と判断してエラーになりますが、
「0.00E+11」だと数値と判断され、エラーが表示されませんでした。

入力規則で、指数表記の制限または、E+を含む値の制限する方法をご教示ください。
よろしくお願いいたします。
バッチ処理を実行すると、【Apex heap size too large】とエラーが発生します。
そこで、SOQL文を見直したのですがエラーは変わりませんでした。
※Account(取引先)は約2,300件ほど。

見直し前)
 'SELECT ' + util.getAllItem('Account') + ' FROM Account
 ※util.getAllItemと言う関数は、全てのAccount項目を取得する関数との事です。(最下部貼り付けております。)
 ※アカウント項目は全部で187項目。

見直し後)
 'SELECT ' + util.getAllItem('Account') + ' FROM Account WHERE (uniNumber__c >= \'0000000001\' AND uniNumber__c <= \'0000001000\')';

見直し前と後では、取得するレコード数には大きく差がある(1,000件以上)と思うのですが、
なぜか【Apex heap size too large】が引き続き発生している状況です。

上記見直し後のSOQL文も、最初に全Account(取引先)データを取得してしまうのでしょうか?

何かご存知の方がいらっしゃいましたら、少しでもご教授頂けますと幸いです。
どうぞよろしくお願いいたします。

■util.getAllItem■
Utilクラス
    public String getAllItem(String obj){
        Map<String, Schema.SObjectType> m = Schema.getGlobalDescribe() ;
        Schema.SObjectType s = m.get(obj) ;
        Schema.DescribeSObjectResult r = s.getDescribe() ;
        Map<String, Schema.SObjectField> fields = r.fields.getMap() ;
        string soql = '';
        for (String fieldName : fields.keyset()) {
            if (soql != '') {
                soql += ', ';
            }
            soql += fieldName;
        }

        return soql;
    }
接続アプリケーションを含むパッケージに関して,2点質問があります。

1. 接続アプリケーションを含むパッケージをアップロードし,別の環境にインストールした際,OAuthのclient_id,client_secretの値は環境間で同一となりますか。
2. 接続アプリケーションに追加したカスタム属性は,それを包含するパッケージに含まれますか。

ご回答の程,よろしくお願いいたします。
連携サービスの情報からToDoを生成する接続アプリケーションを作成しているのですが,
ToDoオブジェクトにロングテキストエリア型のカスタム項目を作成することは可能ですか。

作成できないのであれば,256文字以上の情報をToDoオブジェクトに持たせる方法について,何らかのアイディアを頂けると幸いです.
ユーザオブジェクト(親)
└購入履歴オブジェクト(子(ユーザオブジェクトと1対多の関係)
└アンケートオブジェクト(子(物理的には1:多ですが、論理的にはユーザオブジェクトと1:1の関係))

上記のような構成の際、

購入履歴オブジェクトから、アンケートオブジェクトへはsoqlで辿れないかと思います。

この場合、以下のような感じで2本のSOQL実行してマージすることを考えましたが、
懸念事項ありますでしょうか。
また、より良い解決方法ありますでしょうか。

1.購入履歴とユーザオブジェクトを取得
2.アンケートとユーザオブジェクトを取得
3.for loop中でユーザIDで、購入履歴とアンケートオブジェクトをマージ
 
初投稿です。ご覧いただきありがとうございます。
社内で勉強中なのですが、先輩方でも打開できなかったので、お知恵をお貸しいただけると幸いです。

VisualforceとApexを使用し、社内のソフトウェア・備品とそれに関連付けられたPCを表示するシステムを作っています。
Visualforce(viewSoftwareFixture.vfp)からApex(getPC.apxc)に備品名(SoftwareFixturAdmin__c.Name)を、ページ遷移なしで動的に渡す方法を知りたいです。
今回の学習範囲的に、Javascriptなどもできれば使わずに済むのであればうれしいです。
どなたかよろしくお願いします。

関連するカスタムオブジェクトとリレーション(備品セットは中間オブジェクト)
関連するカスタムオブジェクト

出力イメージ(特定の備品を静的に指定しているため、同じ備品の情報が出力されています)
出力イメージ

コード
・Visualforceページ viewSoftwareFixture.vfp
<apex:page standardController="SoftwareFixtureAdmin__c" extensions="getFixture,getPC">
    <apex:pageBlock >
    <apex:repeat value="{!fixtures}" var="fix" id="repeatFix">
        <apex:pageBlockSection title="{!fix.Name}" columns="1">
            <apex:pageBlockSection columns="3">
            <apex:outputField value="{!fix.ProductID__c}" rendered="{!fix.ProductID__c!=NULL}"/>
            <apex:outputField value="{!fix.ProductKey__c}" rendered="{!fix.ProductKey__c!=NULL}"/>
            <apex:outputField value="{!fix.UserID__c}" rendered="{!fix.UserID__c!=NULL}"/>
            <apex:outputField value="{!fix.LicenseLimit__c}" rendered="{!fix.LicenseLimit__c!=NULL}"/>
            <apex:outputField value="{!fix.Having__c}"/>
            <apex:outputField value="{!fix.Using__c}"/>
            <apex:outputField value="{!fix.CanUse__c}"/>
	        </apex:pageBlockSection>
		    <apex:repeat value="{!PCs}" var="pc" id="repeatPC">
		        <apex:pageBlockSection title="{!pc.Name}" columns="3">
		            <apex:outputField value="{!pc.User__c}"/>
		            <apex:outputField value="{!pc.Place__c}"/>
		            <apex:outputField value="{!pc.RentalDay__c}"/>
		        </apex:pageBlockSection>
		        </apex:repeat>
            </apex:pageBlockSection>
        </apex:repeat>
    </apex:pageBlock>
</apex:page>
・Apexクラス getFixture.apxc
public class getFixture {
    public List<SoftwareFixtureAdmin__c> fixtures{
        get;
        set;
    }
    
    public getFixture(ApexPages.StandardController controller){
        this.fixtures = [SELECT Name, ProductID__c, ProductKey__c, UserID__c, LicenseLimit__c, Having__c, Using__c, CanUse__c FROM SoftwareFixtureAdmin__c];
    }
}
・Apexクラス getPC.apxc
public class getPC {
    public List<PCAdmin__c> PCs{
        get;
        set;
    }
    
    public getPC(ApexPages.StandardController controller){
 		SoftwareFixtureAdmin__c fixId = [SELECT s.Id FROM SoftwareFixtureAdmin__c AS s WHERE Name =: Name]; //出力イメージはWHERE句を"WHERE Name = 'Microsoft Office 2013'と指定して出力
        this.PCs = [SELECT p.Name, p.User__c, p.Place__c, p.RentalDay__c FROM PCAdmin__c AS p WHERE p.Id IN(SELECT f.PC__c FROM FixtureSet__c AS f WHERE f.SoftwareFixtureAdmin__c =: fixId.Id) ORDER BY p.Name];
    }

    public String Name {
        get;
        set;
    }
}
下記の機能でSalesforceから一括更新を行う場合、データローダのバッジサイズのように1回の処理件数を少なくすることは可能でしょうか。
1.リストビューで一括更新を行う場合
2.JavaScriptで作成した一括更新ボタンを使用する場合
※下記URLを参考に作成しました。
https://goo.gl/Fj0tlw

既存のAPEXによるガバナ制限に影響があるため、可能であれば1と2の機能側で1回の処理件数を少なくしたいです。
ご教示ください。よろしくお願いいたします。
お世話になっております。

Lightning componentを使ってカスタムオブジェクトのレコードの[関連]→メモ&添付ファイルにアップロードされた画像ファイルの
レコードを参照したいと思い、Attachmentオブジェクトを取得してみたのですが、レコード件数が0件で取得できませんでした。
ContentDocument,ContentVersion等でファイルのレコードを取得することは確認できています。
添付ファイルの情報はどうすれば参照できるのでしょうか?どなたかご存知の方がいらっしゃいましたらご教授ください。

*.apxc
@AuraEnabled
    public static List<Attachment> testDataList()
    {
        return [SELECT Id FROM Attachment];
    }


*helper.js
getDataList:function(component){

        var action = component.get("c.testDataList");
        action.setCallback(this, function(response) {
            var state = response.getState();            
            if (component.isValid() && state === "SUCCESS") {
                var dataList= response.getReturnValue();
		        console.log('length = ' + dataList.length)
                for(var i = 0; i < dataList.length; i++)
                {
                    console.log(dataList[i].Id)
                } 
            }
        });
        $A.enqueueAction(action);
    },


 
  • April 19, 2017
  • Like
  • 0
下記URLを参考に選択した関連リストを更新するカスタムボタンを作成しました。(JavaScriptを使用しています。)
https://goo.gl/Fj0tlw

ご質問ですが、選択した関連リストのレコード項目はどのようにすれば、値として引っ張れるでしょうか?
このボタンに選択したレコードのカスタム項目1(参照項目:参照先ユーザ)のnullチェックをif文の分岐に使用したいです。

追加したい条件式は下記です。
IF(ISBLANK(カスタム項目1(参照項目:参照先ユーザ)),ユーザ名の登録を実行,アラートを表示して更新しない)

作成したボタンは下記です。
{!REQUIRESCRIPT('/soap/ajax/30.0/connection.js')} 

var records = {!GETRECORDIDS($ObjectType.カスタムオブジェクトA)}; 

if("{!User.ProfileId}"==="対象プロファイルのレコードID"){
  if (records.length === 0) { 
      alert('1つ以上選択してください');
  } else { 
      var objs = [];
      for (var i = 0; i < records.length; i++) {
          var obj = new sforce.SObject('カスタムオブジェクトA');
          obj.id = records[i];
          objs.push(obj);
          obj.カスタム項目1(参照項目:参照先ユーザー) = "ボタンを押したユーザーのレコードID";
      }
      var results = sforce.connection.update(objs);
      window.location.reload(); 
  }
} else {
  alert('あなたはこの機能を利用できません。');
}

よろしくお願いします。
 
お世話になっております。

PDFを作成し、メモ&添付ファイルに保存し、メモ&添付ファイルに保存したPDFを表示するページを作成しました。
しかし、テストクラスが上手くいかず、悩んでおります。
下記のコードですと、エラー「TestMethod として定義されたメソッドは、getContent コールをサポートしていません。」と出てしまいます。
自分でも調べてみたのですが、いまいち分からず、どのようなテストメソッドを書くと良いのかご教授いただけますと幸いです。
どうぞ宜しくお願い致します。

AccountPdf.page(PDFページ)
<apex:page standardController="Account" extensions="AccountPdf" renderAs="pdf">
    <body>{!acc.Name}</body>
</apex:page>
AccountPdf.cls(PDFページのコントローラ)
public with sharing class AccountPdf{

    public Account acc { get; set; }
    
    // コンストラクタ
    public AccountPdf(ApexPages.StandardController controller) {

        // パラメータを取得
        ID accd = ApexPages.currentPage().getParameters().get('Id');

        // パラメータ'Id'から取引先を取得
        acc = [SELECT Id, Name
                    FROM Account
                    WHERE Id = :accd
                    LIMIT 1
                ];
        
    }

}

AccountPdfAppended.page(カスタムボタンで/apex/AccountPdfAppended?id=【取引先ID】の様に最初に呼び込むページ)
<apex:page standardController="Account" extensions="AccountPdfAppended">
    <script>
        window.sfdcPage.appendToOnloadQueue(function() { reloadAndClose(); });
        function reloadAndClose() {
            doAction();
        }
    </script>
    <apex:form >
        <apex:actionfunction name="doAction" action="{!doAction}" />
    </apex:form>
    PDFを作成しています...<BR/>
</apex:page>
AccountPdfAppended.cls
public with sharing class AccountPdfAppended{

    private Account acc{get;set;} 

    // コンストラクタ
    public AccountPdfAppended(ApexPages.StandardController controller) {

        // パラメータを取得
        ID accId = ApexPages.currentPage().getParameters().get('Id');

        // パラメータ'Id'から商談を取得
        acc = [SELECT Id, Name
                    FROM Account
                    WHERE Id = :accId
                    LIMIT 1
                ];

    }

    // 戻り呼び出し
    public Pagereference doAction() {

        // PDF作成
        PageReference pageRefPdf = Page.AccountPdf;
        pageRefPdf.getParameters().put('Id', acc.Id);

        // メモ&添付ファイルに保存
        Attachment attachment = new Attachment();
        attachment.Name = 'AccountPDF(' + String.valueOf(Date.today()) +  ').pdf';
        attachment.Body = pageRefPdf.getContent();
        attachment.ParentId = acc.Id;
        insert attachment;
        
        // PDF表示
        PageReference pageRef = new Pagereference('/servlet/servlet.FileDownload?file=' + attachment.Id);
        return pageRef;

    }
    
}

TestAccountPdfAppended.cls(テストクラス)
@isTest
public class TestAccountPdfAppended {

    static testMethod void testSuccess01() {

        // レコード作成
        Account acc = new Account(Name='testName');
        insert acc;
        
        Apexpages.currentPage().getParameters().put('Id', acc.Id);
        AccountPdfAppended c = new AccountPdfAppended(new ApexPages.StandardController(acc));

        c.doAction(); // ←エラー

    }

}
プロセスビルダーで下記のような分岐をしたいのですが、可能でしょうか?
・分岐1の条件=レコードタイプA

分岐1→True→アクションなし→停止

分岐2→True→アクションあり→次を評価

・・・
レコードタイプA以外について、動作するプロセスを作成するため、
最初にレコードタイプAを取り除きたいのですが、アクションを設定しないと有効化ができません。
設定可能かもしくは代替案などあれば、ご教示ください。
よろしくお願いします。
 
お世話になります!

コミュニティで

 https://aaa.cs6.force.com/bbb

のようなURLのサイトをつくったとき、

以下のURLへアクセスすると、

https://aaa.cs6.force.com/

SFエラーページが表示されてしまいます。

Siteの設定で、エラーページの編集して有効になるのは、/bbb以下のページになる為と思いますが、

/ でもエラーページをカスタムするにはどのようにしたらよいでしょうか。




 
User-added image親オブジェクト:SpotReport__c
子オブジェクト:Aircon__c
 
 
添付画像のカスタム項目のAPI:Air__c
 
 
添付した画像のように親オブジェクトからの関連リストの新規で作成するように
親のNameが入った状態のものを子のVisualdorce上に配置したいのですが、
<apex:inputField value =“{!Aircon__c.Air_c}”/>
 
 
上記で実施した結果、親のNameが入った状態になりませんでした。
 
 
親オブジェクトの関連リスト上にはカスタムボタンを配置し、子のVisualdorceに遷移するようになっています。
 
 
 
 
 
 
何か良い方法がありますでしょうか?

Apexクラスで配置できると教えていただいたのですが、Apexクラスをまだあまり使ったことがないのでヒント的なことでも教えていただけるとありがたいです。

よろしくお願いいたします。
申し訳ありませんがよろしくお願いします。
カスタムオブジェクトを削除したとき、
それを使用していたレポートを開こうとするとエラーになるかと思います。

カスタムオブジェクトを削除する前に、
そのカスタムオブジェクトを使用しているレポートを特定するレポートをつくることはできるのでしょうか。

 
Visualforceページの開発でdocType="html-5.0"を宣言した際の必須チェックについて困っています。
リストの行を追加するボタンをクリックしたときは必須チェックをスキップするようにしたいです。

通常は『immediate="true"』を宣言しておけば必須チェックをスキップできます。
<apex:commandButton value=" Add Contacts " action="{!addContacts}" immediate="true" />

ですが、docType="html-5.0"を宣言したときは『immediate="true"』を宣言してもフォームの必須チェックが実行されてしまいます。
User-added image

『html-formnovalidate="formnovalidate"』を宣言することで回避できたのですが、このときreRenderを宣言すると『immediate="true"』の宣言が無効になってしまいました。reRenderを宣言しながら必須チェックをスキップしたいです。どなたか解決方法をご存知の方がいらっしゃいましたら教えてください。


補足
『html-formnovalidate="formnovalidate"』を宣言すると必須チェックをスキップできる。
<apex:commandButton value=" Add Contacts " action="{!addContacts}" immediate="true" html-formnovalidate="formnovalidate" />
User-added image

この状態でreRenderを宣言すると『immediate="true"』の宣言が効かなくなる。
<apex:commandButton value=" Add Contacts " action="{!addContacts}" reRender="form" immediate="true" html-formnovalidate="formnovalidate" />
User-added image

動作確認に使ったコードです。
HtmlFormnovalidateDemo.page
<apex:page standardController="Account" extensions="HtmlFormnovalidateDemoController" docType="html-5.0" sidebar="false">
    <apex:form id="form">
        <apex:pageMessages id="msg" />
        <apex:pageBlock id="block">
            <apex:pageBlockButtons id="buttons" location="bottom">
                <apex:commandButton value=" Save " action="{!Save}" reRender="form" />
                <apex:commandButton value=" Cancel " action="{!Cancel}" reRender="form" immediate="true" html-formnovalidate="formnovalidate" />
                <apex:commandButton value=" Add Contacts " action="{!addContacts}" immediate="true" html-formnovalidate="formnovalidate" reRender="form" />
            </apex:pageBlockButtons>
            <apex:pageBlockSection id="section">
                <apex:inputField value="{!Account.Name}" required="true" html-placeholder="取引先名を入力" />
                <apex:inputField value="{!Account.AccountNumber}" />
            </apex:pageBlockSection>
            <apex:pageBlockTable value="{!contacts}" var="item">
                <apex:column headerValue="{!$ObjectType.Contact.Fields.LastName.Label}">
                    <apex:inputField value="{!item.LastName}" required="true" />
                </apex:column>
                <apex:column headerValue="{!$ObjectType.Contact.Fields.FirstName.Label}">
                    <apex:inputField value="{!item.FirstName}" />
                </apex:column>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>
HtmlFormnovalidateDemoController.cls
public with sharing class HtmlFormnovalidateDemoController {
    
    public List<Contact> contacts {get; set;}
    
    public HtmlFormnovalidateDemoController(ApexPages.StandardController stdController) {
        this.contacts = new List<Contact>();
    }
    
    public void addContacts() {
        this.contacts.add(new Contact());
    }
}

よろしくおねがいします。

Salseforce Android Mobileアプリの開発ってどうやって始めればいいのかなと思っていたら、

Eclipseで開発する方法についての動画がYouTubeに公開されていました。

 

英語ですが、実際に画面を動かして説明してくれているのでわかりやすかったです。

 

Android Mobile SDK Project

http://youtu.be/VQC6E7ToFdY

 

 

2012年5月にMobile SDK Webinarの動画も公開されていました。

これを見て勉強してみたいと思います。

 

Mobile SDK Webinar

http://www.youtube.com/watch?v=VflsLd3if2M

Salseforce Android Mobileアプリの開発ってどうやって始めればいいのかなと思っていたら、

Eclipseで開発する方法についての動画がYouTubeに公開されていました。

 

英語ですが、実際に画面を動かして説明してくれているのでわかりやすかったです。

 

Android Mobile SDK Project

http://youtu.be/VQC6E7ToFdY

 

 

2012年5月にMobile SDK Webinarの動画も公開されていました。

これを見て勉強してみたいと思います。

 

Mobile SDK Webinar

http://www.youtube.com/watch?v=VflsLd3if2M

現在、海外のSalesforce組織と、Salesforce to Salesforceによる連携を考えています。

Salesforce to Salesforceによる[商談商品]の共有条件として、
両組織の商談通貨が同じでなければならないのですが、
マルチ通貨を利用して解決可能でしょうか?

ご存じの方いらっしゃいましたら、よろしくお願いいたします。

↓[商談商品]の共有条件
https://help.salesforce.com/articleView?id=business_network_assign_related_tasks.htm&type=5
ネットの情報を参考にしながら、visualforceで日本語pdf出力で改行できない問題を改行コード<wbr />を入れて解決するクラスを作ってみたのですが、sandboxでは動くのですが、本番リリースでうまくいきません。IDに関連するeventの情報を取ってきて、時系列にpdf上に表示するvisualforcepageを別に用意しています。初心者なもので、何を修正したらカバー率が上がるかわからず、アドバイス頂けると助かります。

visualforce class  ShowAllSObjectActivityKaig
public class ShowAllSObjectActivityKaig {
Id sObjectname= ApexPages.currentPage().getParameters().get('Id');

public list<Event> tasklist{get;set;}
public list<Event> namae{get;set;}
public  ShowAllSobjectActivityKaig(){
if(sObjectname !=null )

namae= [select id,ActivityDateTime,StartDateTime,Field6__c,Field5__c,Field1__c,Subject,Type,Field2__c,Who.Name,What.Name,Description,LastModifiedDate,Owner.Name FROM Event WHERE WhatID=:sObjectname OR whoId=:sObjectname order by startdatetime asc
LIMIT 1];

tasklist= [select id,ActivityDateTime,StartDateTime,Field6__c,Field5__c,Field1__c,Subject,Type,Field2__c,Who.Name,What.Name,Description,LastModifiedDate,Owner.Name FROM Event WHERE WhatID=:sObjectname OR whoId=:sObjectname order by startdatetime asc
];


//一文字ずつクラスを参照し、返す
//参加者
for(Event a : tasklist){
a.Field1__c = kaigyo(a.Field1__C,1);
}
//内容
 for(Event a : tasklist){
 a.Description = kaigyo(a.Description,1);
 }
}

public PageReference cancel() {
PageReference ldPage = new PageReference('/'+sObjectname);
ldPage.setRedirect(true);
return ldPage;
}
//指定位置にwbrコードを入れる
public String kaigyo(String value, Integer posLength )
    { 
    if(value == null || value.length() <= posLength) return value; 
    String rtnValue = value.substring(0, posLength ) + '<wbr/>'; 
    for(Integer i = posLength; i < value.length(); i++)
        {
        if(Math.mod(i, posLength ) == 0)
            { 
            if(value.length() > i + posLength)
                { 
                rtnValue += value.substring(i, i + posLength ) + '<wbr/>';
                }
                else
                { 
                rtnValue += value.substring(i,value.length());
                }
               //  kaigyoCount[col]++; 
             }
        }
        return rtnValue;
    }
}
visualforce page 
 
<apex:page controller="ShowAllSObjectActivityKaig" standardStylesheets="false"

 showHeader="false"
 sidebar="false"
 applyHtmlTag="false"
 renderAs="pdf">
<head>
 <style>
  @page {
    size: 8.27in 11.69in;
    padding: 0;
  }
  body {
    font-family: Arial Unicode MS;
    font-size: 10pt;
    text-align: left;

  }
  
table.type01 {
    width: 650px;
    table-layout:fixed;
    word-wrap: break-word;
    border-collapse: collapse;
    text-align: left;
    line-height: 1.2;
    margin-left:15px;
}
table.type01 th {
    width: 150px;
    padding: 2px;
    font-weight: bold;
    vertical-align: top;
    border: 1px solid #333;
}
table.type01 td {
    width: 500px;
    padding: 2px;
    vertical-align: top;
    border: 1px solid #333;
}





  
</style>
  
    
 </head>
<h2>
<center>相談支援記録</center></h2>
<table class="type01" >
<tbody>
<tr>
<th>

<br></br>
</th>
<td><apex:repeat value="{!namae}" var="item">
(<apex:outputText value="{!item.Who.Name}"/>)
[<apex:outputText value="{!item.What.Name}"/>]
</apex:repeat> 
</td>
</tr>
<apex:repeat value="{!tasklist}" var="oSobject">
<tr>                 
<th><apex:outputText value="{!oSobject.Field6__c}" />
    <br>
    <apex:outputText value="{0,date,HH:mm}">
    <apex:param value="{!oSobject.startdatetime}"/></apex:outputText>
    </br>
    <br><apex:outputText value="(種){!oSobject.Subject}" /></br>
    <br><apex:outputText value="(所){!oSobject.Field2__c}" /></br>
    <br><apex:outputText value="(参){!oSobject.Field1__c}" escape="false" /></br>
</th>

<td><apex:outputText value="{!oSobject.Description}" escape="false" /></td></tr>     
                  
</apex:repeat>                    
</tbody>
</table>  
</apex:page>



 
chatterに投稿する業務プロセスを自動化にしたいです。今考えている方法は二つがあります。
一つ目は、SOQLを使って、collaborationgroupfeedにテキストを挿入する方法です。(資料からみると、直接に挿入できないと判断し、あきらめました)。
二つ目は、pythonとseleniumでテキストデータを書き込む方法です。今は、chatterのHTMLが複雑で見えないようにされているみたいです。テキスト入力のelementが検索できなく、テキストを書き込むことができません。
いい方法がありましたら、教えてください。
ありがとうございます。
お世話になります。

chatterに関して質問です。
Salesforce Platformライセンスユーザのchatter投稿をコミュニティユーザのchatterで見る、
コミュニティユーザのchatter投稿をSalesforce Platformライセンスユーザのchatterで見る
ということをしたいのですが、実現することは可能でしょうか?
また、実現方法はどのようになるのでしょうか?

ご教示をお願い致します。
  • November 20, 2017
  • Like
  • 0
プロセスビルダーまたはVisualWorkフローを利用してChatterを自動投稿する機能について、
Chatterの投稿者を指定することができるでしょうか。
例えば、作業者はユーザAですが、Chatterの投稿者はユーザB(システム用アカウント)で行いたいです。
可能な設定あればご教示ください。

作業漏れの自動案内を行うChatterを投稿したいため、レコード更新したユーザAでなく、システム用のアカウントから投稿したメッセージとして表示したいと考えています。
ご教示ください。
よろしくお願いします。
AppexchangeからReportsConnectを本番環境にインストールしたいのですが、以下のエラーが出てしまいます。

--------------------------------------------------------------------------------------------------------------------------------------------------
パッケージが見つかりません
要求されたパッケージが存在しないか、または削除されています。この問題の修正について、パッケージの公開者までご連絡ください。これが最近アップロードされたパッケージである場合は、もう一度やり直してください。
--------------------------------------------------------------------------------------------------------------------------------------------------

SandBox環境にはインストールできています。
ベンダーに問合せましたが、有効な回答は得られませんでした。
何かご存じの方いらっしゃいますでしょうか?
パッケージでインストールされたオブジェクトに対してトリガーを入れました。
すでに、そのパッケージでトリガーが仕込まれているようなのですが、
さらに、トリガーを作った場合、パッケージのトリガーが動いたあと、
自分のトリガが動く形になるでよいでしょうか。

実際に動かしたところ、after update にsystem.debugをいれてみたところ、
ログに2回出力されていたので、もしかしたら、パッケージからの更新が終わった後に1回
自分の更新が終わった後に1回なのかなと思いました。

ご教授頂ければ幸いです。
 
お世話になります。
trailhead で [私のドメイン] を使用したログインプロセスのカスタマイズ に挑戦しています。
https://trailhead.salesforce.com/ja/trails/security/modules/identity_login/units/identity_login_my_domain

「私のドメイン」設定後にメールが届くとあるのですが、
1日待っても、他のハンズオン組織で実行しても一向に届きません。
(もちろん迷惑メールにも入っていませんでした)

何か考えられることはありますでしょうか?
よろしくお願いいたします。
下記URLを元に関連リストで特定値を割り当てレコードを一括更新するボタンを作成しました。
https://developer.salesforce.com/forums/?id=906F0000000D7JPIA0

このときボタンクリック時に、入力規則でエラーがある場合ポップアップなどで、どのレコードで何の入力規則エラーがあるか気づくようにメッセージを表示したいのですが、可能でしょうか。

ご教示ください。
よろしくお願いします。
下記URLのUnicodeの特殊文字を入力を禁止したいのですが、方法ありますでしょうか。
http://charset.7jp.net/tokusyumoji.html
目的は下記2点です。
■データローダからCSV出力時に、文字化けを防ぎたい。
■データローダの設定、『Write all CSVs with UTF-8 encording』ではUTF-8が外部の連携システムで利用できないため、レコードのデータ自体で文字コードを管理したい。

現状、下記入力規則を試しましたが、禁止したい文字と許可されている文字が混合した状態はエラーが表示されず、実装に至っていません。
REGEX( 項目名 , "^[℃℅℉]+$" )
【エラーの表示結果】
あいうえお→エラー表示しない
あいうえお℃→エラー表示しない
℃→エラー表示
℃℅→エラー表示

また、CONTAINS関数で設定はできたのですが、
禁止対象の文字が多く、全ての文字分の管理が難しい状態です。

何か方法などありましたら、ご教示ください。
よろしくお願いします。
レコードの項目が特定の値の時、編集画面を開かないようにすることが可能でしょうか。
例えば、商談のフェーズ=商談完了なら、商談の編集画面を開いたとき、
エラーのポップアップを表示して、編集画面に移動させない(ex.レコードの参照画面に戻る)ようにしたいです。
ご教示ください。よろしくお願いします。
APEXトリガからポップアップを表示することは可能でしょうか。
APEXトリガで条件に一致する時にポップアップを表示して、ユーザーにエラーであることを伝え処理を終了するようにしたいです。
可能な方法ありましたら、​ご教示くださいよろしくお願いします。
APEXトリガで、レコードの更新または削除を実行したユーザのプロファイルを取得して、条件に指定することは可能でしょうか。
例えば、下記の形で条件指定をする時、実行ユーザのプロファイル情報を指定することが可能か知りたいです。
IF(実行ユーザのプロファイル=営業用プロファイル OR マネージャ用プロファイル , 動作A , 動作B)

APEXで実行ユーザのプロファイル情報を取得して条件に指定する方法ありましたら、ご教示ください。
よろしくお願いします。
現在、visualforce のrenderas="PDF"プロパティにて、画面をPDFとして出力したいと考えております。
また、表示したいデータには、クライアントPCで作成した外字が含まれます。

PDFとして表示した際、外字を含むデータは外字部分が消えてしまいます。
PDFにクライアントPCで作成した外字を含むことは可能でしょうか?
また、可能であればその方法を教えていただけないでしょうか?
Following code:
<apex:page controller="MyCustomObject__c">
    <apex:pageBlock>
        <apex:pageBlockSection>
            <apex:outputField value="{!MyCustomObject__c.RecordTypeId}"/>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>
I got:
User-added image
<apex:outputField> put "Record Type" as label of RecordTypeId field.

And I want to reproduce this by Apex Describe Information or REST API, because I want to build page dynamically.

Account.MyCustomObject__c.RecordTypeId.getDescribe().getLabel() returns 'Record Type ID'.
SObject Describe endpoint ( /services/data/v41.0/sobjects/MyCustomObject__c/describe ) responds "Record Type".
How can I get "Record Type" (Not "Record Type ID") ?
レコードの項目値でレコードの削除を制限する方法あるでしょうか。
関連リストの左端にある削除をクリックした時に、項目値が特定の値(ex.商談のフェーズ=受注)であれば、削除できないようにしたいです。

本来は関連リストの編集・削除のリンクを非表示にしたいのですが、
ヘルプに問い合わせたところ、ユーザーのアクセス権限が影響し、削除を利用するユーザーは非表示にできないと回答があったため、
対策を検討しています。

ご教示いただけますと幸いです。
よろしくお願いいたします。
お世話になっております。


カスタマーポータルユーザの新規作成時にパスワード通知メールを送信しないようにしたいと考えております。

パスワード通知メールを送信しない方法、
またその可否についてご存知でしたらご教授頂けると幸いです。

宜しくお願い致します。