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


Badges

  • Chatter
    Feed
  • 164
    Best Answers
  • 1
    Likes Received
  • 2
    Likes Given
  • 2
    Questions
  • 657
    Replies
現在Lightningコンポーネントを開発中で、コンポーネントを埋め込むページ内からどのページに埋め込まれているかを判断する方法を探っています。

例えば、下記のようなURLのページ内に配置したコンポーネントから「Contact」や「Lead」部分を取得したいのですがどのようにすればよいのでしょうか?
/lightning/r/Contact/0032v0000*********/view
/lightning/r/Lead/0032v0000*********/view

よろしくお願いします。
 
AppExchangeアプリメーカです

ユーザのログイン履歴で、スマートフォンのSalesforceアプリは
「アプリケーション」で「Salesforce for iOS」と表示されるのですが、
当社アプリは「ブラウザ」と表示されます。
「アプリ名」を表示させる方法はをご教示いただけませんでしょうか。

○Salesforceアプリ
アプリケーション:Salesforce for iOS

○当社アプリ
アプリケーション:ブラウザ

※ブラウザアクセス禁止設定だと利用できないため、アプリ名にしたい
特定のカスタムオブジェクトに添付ファイルが投稿された際に動作するApex Triggerを作成しています。

添付されたのがどのカスタムオブジェクトなのかを判定する方法として、添付ファイルの親カスタムオブジェクトID(ParentId)をハードコードして判定する方法を利用しているのですが、SandboxとはカスタムオブジェクトIDが異なっているため、リリース前に書き換えるという手段をとっています。

Sandboxと本番組織で同一のコードでカスタムオブジェクトを判定する方法はないでしょうか?
Lightningの標準レコードページを使用しています。
コピーのボタン押下により、参照中のレコードデータが入力された状態の新規レコード用ダイアログが出ますが、
例えばレコードのステータスや日付が入るような項目はコピーの対象から外し、空白の状態でコピーがしたいです。
上記のようなことを実現するためにはどうしたら良いでしょうか。
よろしくお願いします
お世話になっております。

以下のトレイルのChallenge(テスト)を実施したところ、1問不正解という結果になりました。

アドミニストレーター認定資格の更新 (Spring '19)・Spring '19 の新機能の学習
https://trailhead.salesforce.com/ja/content/learn/modules/administrator-maintenance-spring19/learn-whats-new-in-spring19

その設問は6問目の「システム管理者がマクロ内で指定できるマクロ実行時からの相対日時はどれですか?」で、Dの「分後」を選択して不正解となりました。
この設問に対応するのは「マクロでの相対日付を使用した正確な日時の設定」だと思うのですが、ここでは以下のように説明されています。

日時を操作する場合、相対日付で次の内容を指定できます。
  • 分後
  • 時間後
  • 日後
  • 週間後

この内容であれば、相対日付として「分後」が使用できるので、Cの「時間後」とDの「分後」は正答だと思うのですが、どういうわけかDの「分後」だと不正解になってしまいます。

なぜ「分後」では不正解になってしまうのでしょうか。
どなたかわかる方がいらっしゃいましたら、お知恵をいただければと思います。
よろしくお願いいたします。
 

 

 

お世話になっております。

Bootstrapでデザインを行っているのですが、ある条件下で一部の表示が異常になることがわかりました。
こちらをVisualforce上で解決する手段はありますでしょうか。

<現象>
apex:selectListの選択肢がずれ、選択肢が消えてしまったり余白ができてしまったりする(下記画像赤枠部分)
(本番環境に一度アップロードしているため、企業や業務が特定できそうな内容は消しております)
User-added image

<発生した条件>
  • ブラウザが「Google Chrome」
  • 対象のVisualforceページを「コンソール上で」表示する
  • ディスプレイを2つ使用し、「メインディスプレイと拡大率の異なるサブディスプレイ上で」表示する
    • メインディスプレイより小さいと選択肢が一部消え、大きいと余白が発生します

<VIsualforceコード>
(本番環境に一度アップロードしているため、選択肢近辺のみを抜粋し、企業や業務が特定できそうな内容は消しております)
<apex:page showHeader="false" sidebar="false" standardStyleSheets="false" controller="CalendarPageController" docType="html-5.0">
	<style>
		th, td{text-align: center; vertical-align: middle; font-size: small;}
        body{font-size: small;}
	</style>
	<script type='text/javascript' src='/soap/ajax/29.0/connection.js'></script>
	<script type='text/javascript' src='/soap/ajax/29.0/apex.js'></script>
	<apex:stylesheet value="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css"/>
	<div style="text-align: center;" id="centeringDiv" onLoad="FixedMidashi.create();">
		<apex:form id="form">
            <div>
                <apex:outputText styleClass="header" style="text-align:center;"><h5 style="color: '#6c757d';">  カレンダー      </h5></apex:outputText>
                <apex:commandLink action="{!replaceTargetToLastMonth}" value="<< {!lastYear}年{!lastMonth}月"/>
                <apex:outputText styleClass="header" style="display: inline; font-size: medium;" value=" {!targetYear}年{!targetMonth}月 "/> 
                <apex:commandLink action="{!replaceTargetToNextMonth}" value="{!nextYear}年{!nextMonth}月 >>"/>
                <apex:messages styleClass="alert alert-danger" style="text-align: left;"/>
            </div>
            <div class="form-group">
                <div class="d-inline-flex">
                    <apex:selectList value="{!selectedWeekString}" size="1" styleClass="form-control">
                        <apex:selectoptions value="{!monthOrWeekSelectList}"/>
                    </apex:selectList>
                </div>
                <div class="d-inline-flex">
                    <apex:selectList value="{!       IdString}" size="1" styleClass="form-control">
                        <apex:selectoptions value="{!       SelectList}"/>
                    </apex:selectList>
                </div>
                <div class="d-inline-flex">
                    <span class="input-group-append">
                        <apex:commandButton value="表示する  ・期間を選択" styleClass="btn btn-info" action="{!selectMonthOrWeek}"/>
                    </span>
                </div>
            </div>
		</apex:form>
	</div>
	<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
</apex:page>

以上、よろしくお願いいたします。
そのほか、必要な情報がありましたら可能な範囲で追記します。
主レコード:A
従レコード:B
があり、このAレコードとBレコードを1つのVisualforce画面で更新できるようにします。

このVFページのコントローラで
update B;
update A;

のようにした時に、Bをupdateした時点でプロセスビルダーが起動しAレコードの項目を一部更新します。
その後Aのupdate処理が行われるのですが、プロセスビルダーで更新した値を上書きしてしまいます。
(順番で考えれば当たり前なのですが。。)

Aのupdate時に値を上書きしないような更新方法はありますでしょうか。
参照関係があるテキストボックスにLIKE検索を行い、
invalid operator on id fieldエラーが発生しました。

IDを持つデータにLIKE検索できないというのは認識したのですが、
どの様に対処したらいいかが不明です。

他ページにての中に
https://developer.salesforce.com/forums/?id=906F00000009BPRIA2
>数式(テキスト型)にWhatId(ID)をコピーすることで検索可能です。
とあったのですが、いまいち何をすればいいのかわかっておりません。

理解不足で大変申し訳ないのです・・・
お時間ありましたら回答頂けると助かります。

 
  • June 05, 2018
  • Like
  • 0
SalesForceとLightningの標準画面に独自CSSを読み込む手順・方法を教えてください。
静的リソースにcustomcssをアップロードしましたが、標準画面のレイアウトに反映することができませんでした。
Salesforce初心者で何もわかりません。
宜しくお願いいたします。
お世話になっております。

本番環境からsandboxを作成しようとすると、
「このsandboxをコピー」というものがありました。
このリンクの意味は何になるでしょうか。

ちなみに、「更新」のリンクは、
最新の本番環境をsandboxにコピーするものかと思いますが、
「このsandboxをコピー」との違いは何になるのでしょうか。

 
  • April 08, 2018
  • Like
  • 0

初めて投稿いたします。
私は開発会社の所属ではありませんが、色々と試したいこと調べたいことがあり、developer editionに登録しました。
いろいろといじっている中、開発をお願いしたいベンダーさんを管理ユーザーに追加したいのですが、developer editionはユーザーが追加できるのでしょうか?

設定>管理>ユーザーの管理>ユーザーで、一人追加し、ユーザーライスエンスをデベロッパーの場合はどれを選んで良いかわからずsalesforceとし、プロファイルをシステム管理者としました。

そうしましたところ、ユーザーを追加してくださいというメッージが表示されました。

developer editionで管理ユーザーや開発ユーザー、使用者のテストのユーザーなどどのように取り扱えすれば良いでしょうか?
よろしくお願いいたします。
 

お世話になっております。

以下、AppExchangeの「郵便番号検索」にて、
https://appexchangejp.salesforce.com/appxListingDetail?listingId=a0N300000016aMeEAI
取引先標準レイアウトの住所を、jsで拡張している実装を見かけ、標準レイアウトの参照・詳細ページを
操作を加えることはできない認識であったので、どのようにしているか興味がありました。

どのように回避して、実装できていると考えられますでしょうか。


 
  • February 12, 2018
  • Like
  • 0
はじめまして、Horiと申します。

現在、AppExcahnge経由で、あるアプリケーションを購入予定です。
購入後は、同アプリケーションのデータを、REST APIを使ってアクセスしようと考えています。

そのアプリケーションを開発したベンダに、REST APIを使ってアクセスできるかを問い合わせたところ、
SalesForce社との間で、REST APIを使ってアクセスする旨の契約をしないと、アクセスできないと回答されました。
開発ベンダの都合ではなく、SalesForce社から契約をするよう求められるはずだと言うのです。

大変、意外な回答でした。
当方は、接続アプリケーションを作成し、OAuthで十分な権限を与えておけば、自作のアプリやSalesForce社提供の
アプリと同様、REST APIでアクセスしても構わないのだと思っていました。

購入予定のアプリは、Force.com上に実装されているとのことで、アプリを購入すれば、カスタムオブジェクトの作成
以外は、Force.comの機能を使えるとのことで、技術的にはREST APIを使ってアクセスするための障害はなさそうなのです。

本当に、SalesForce社と何らかの契約を締結しないと、AppExcahge経由で購入したアプリにREST APIでアクセスしては
いけないのでしょうか? あるいは、契約しないと、技術的制約がかけられていて、アクセスそのものが出来ないのでしょうか?

ご指導をお願い致します。
 
ネットの情報を参考にしながら、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+を含む値の制限する方法をご教示ください。
よろしくお願いいたします。
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

現在Lightningコンポーネントを開発中で、コンポーネントを埋め込むページ内からどのページに埋め込まれているかを判断する方法を探っています。

例えば、下記のようなURLのページ内に配置したコンポーネントから「Contact」や「Lead」部分を取得したいのですがどのようにすればよいのでしょうか?
/lightning/r/Contact/0032v0000*********/view
/lightning/r/Lead/0032v0000*********/view

よろしくお願いします。
 
お世話になっております。
掲題のとおりですが、選択リストで特定の項目を選択すると、同画面内のテキストエリアが表示される(活性化or編集可状態になるでもOK)ようにしたいのですが、どのように実現するのでしょうか。
ご教示ください。

例としては、リストで「その他」を選ぶと、すぐ下に「備考欄(テキストエリア)」が出現するイメージです。

よろしくお願いします。
  • September 02, 2019
  • Like
  • 0
ClassicからLightningへの移行作業を行っています。
同じ現象が起きる方、対応策をご存知の方がいらっしゃいましたらアドバイス頂けると幸いです。

ブラウザ:Chrome最新版
現象:
Classicで利用しているVisualforceページ(「ボタン、リンクおよびアクション」の「参照」に指定したVFページです)で「メモ&添付ファイル」関連リストを表示しています。

Lightningに移行するため、pageタグにlightningStyleSheets="true" を追加し、Lightning表示に切り替えた後「メモ&添付ファイル」関連リストにファイルを添付。

添付後に表示される「タイトル」列のファイル名のリンクをクリックしても画面遷移等せずファイルが参照できません。
また、同じ画面のリンクも動作しません。(取引先参照リストのリンク、作成者・更新者のリンク等)

タイトルに表示されたファイル名のリンクURLをコピーしてブラウザのアドレスに指定するとダウンロードできます。
画面をいったん閉じで、再度開くとタイトルのリンクから問題なくダウンロードできます。

今後「メモ&添付ファイル」は「ファイル」「メモ」に差し替えますが、データ移行期間は「メモ&添付ファイル」を使用し続けるのでできれば解決したいと考えています。
対応策をご存知の方、ご教授いただきたく。どうぞよろしくおねがいいたします。
  • August 21, 2019
  • Like
  • 0
Apex中でCSVファイルを作成し、ドキュメントに保存した後、ドキュメントのIDを新しいPageに渡して、ページのコントローラクラス中で該当ドキュメントのデータをSoqlで取得できませんでした。
※Idの渡しができています。
ソースコードが以下になります。
  1. document = new Document();
  2. document.Name = FileName;
  3. document.FolderId = folder.Id;                    
  4. document.Body = Blob.valueOf('test');
  5. document.Type = 'csv';
  6. document.ContentType='text/csv';
  7. insert document;
  8. PageReference csvpage = page.ConvertPage;
  9. csvpage.getParameters().put('str', document.id);
  10. ページのコントローラクラス:
  11. global class Convert{
  12. public String csvId {get;set;}
  13. public String csvtext {get;set;}
  14. // コンストラクタ
  15. public Convert() {
  16. this.csvId =ApexPages.currentPage().getParameters().get('str');
  17. Document d = [SELECT Id, Body from document where Id =: csvId];
  18. csvtext = d.Body.toString();
  19. }
  20. }
16番のIDはありますが、17番のデータが取得できず、エラーとなってしましました。

原因はご存じでしたら、ご教授をお願いいたします。
AppExchangeアプリメーカです

ユーザのログイン履歴で、スマートフォンのSalesforceアプリは
「アプリケーション」で「Salesforce for iOS」と表示されるのですが、
当社アプリは「ブラウザ」と表示されます。
「アプリ名」を表示させる方法はをご教示いただけませんでしょうか。

○Salesforceアプリ
アプリケーション:Salesforce for iOS

○当社アプリ
アプリケーション:ブラウザ

※ブラウザアクセス禁止設定だと利用できないため、アプリ名にしたい
特定のカスタムオブジェクトに添付ファイルが投稿された際に動作するApex Triggerを作成しています。

添付されたのがどのカスタムオブジェクトなのかを判定する方法として、添付ファイルの親カスタムオブジェクトID(ParentId)をハードコードして判定する方法を利用しているのですが、SandboxとはカスタムオブジェクトIDが異なっているため、リリース前に書き換えるという手段をとっています。

Sandboxと本番組織で同一のコードでカスタムオブジェクトを判定する方法はないでしょうか?
お世話になっております。

商談の下にカスタムオブジェクトAとB(A・B間にリレーションなし)と、商談とはリレーションがないカスタムオブジェクトCとD(Cが親の主従関係、A・Bとはリレーションなし)があります。
これらのオブジェクトに対して、2つの動作があります。

1.Aにレコードを作成すると、商談を元にCを、Bを元にDを作成する(プロセスビルダーからApexクラス呼び出し)。
2.Aにレコードを作成すると、Bの値を更新する(Apexトリガ、After Insert)

当初、1.で作成されたCとDが2.の影響を受けていなかったので、これらは1.→2.の順で動作していました。
今回、処理2.のコードを改修することになり、ガバナ制限的にも問題のあるコードだったので、同様の動作を制限にかからないように書き直しました。
すると、処理内容はほぼ変わらないはずなのですが、1.で作成されたCとDが2.で更新した後の値となっており、2.→1.の順に動作するようになってしまいました。

Apexの動作順序を考えるとトリガ→プロセスビルダーなので2.→1.が正しい気もするのですが、だとすれば今まで1.→2.の順で動作していた理由がわかりません。業務的には1.→2.が理想です。

この逆転してしまった順番を、トリガを元に戻さずに1.→2.に戻すにはどうすればよいでしょうか。
また、当初1.→2.の順に動作する理由も開設いただければと思います。

以上、よろしくお願いいたします。
Developerエディションを使用しシステム管理者プロファイルのユーザーでログインしています。
設定>プロセスの自動化の中に「承認プロセス」が表示されません。
考えられる原因は何でしょうか?
Lightningの標準レコードページを使用しています。
コピーのボタン押下により、参照中のレコードデータが入力された状態の新規レコード用ダイアログが出ますが、
例えばレコードのステータスや日付が入るような項目はコピーの対象から外し、空白の状態でコピーがしたいです。
上記のようなことを実現するためにはどうしたら良いでしょうか。
よろしくお願いします
取引先に、チェックボックス型のカスタム項目を追加しました。
追加した項目の値をSOAP APIからSOQLでselectしたところ、値が取得できません。

同じクエリを開発者コンソールのQueryEditorから実行すると、
値を取得できます。

カスタム項目の追加の方法に不足があるのでしょうか?
よろしくお願いいたします。
お世話になっております。

以下のトレイルのChallenge(テスト)を実施したところ、1問不正解という結果になりました。

アドミニストレーター認定資格の更新 (Spring '19)・Spring '19 の新機能の学習
https://trailhead.salesforce.com/ja/content/learn/modules/administrator-maintenance-spring19/learn-whats-new-in-spring19

その設問は6問目の「システム管理者がマクロ内で指定できるマクロ実行時からの相対日時はどれですか?」で、Dの「分後」を選択して不正解となりました。
この設問に対応するのは「マクロでの相対日付を使用した正確な日時の設定」だと思うのですが、ここでは以下のように説明されています。

日時を操作する場合、相対日付で次の内容を指定できます。
  • 分後
  • 時間後
  • 日後
  • 週間後

この内容であれば、相対日付として「分後」が使用できるので、Cの「時間後」とDの「分後」は正答だと思うのですが、どういうわけかDの「分後」だと不正解になってしまいます。

なぜ「分後」では不正解になってしまうのでしょうか。
どなたかわかる方がいらっしゃいましたら、お知恵をいただければと思います。
よろしくお願いいたします。
 

 

 

visualforceページに同じコンポーネントを複数設置した際の、visualforceページ側からの再描画について、原因の特定が難しい挙動に遭遇しました。

このvisualforceページでは、visualforceページ(vfp)とコントローラー、visualforceページに配置されるコンポーネント(vfc)と、コンポーネントのコントローラ、MVCにおけるモデルのようなApexクラスの5つの要素を扱っています。
visualforceページには以下のように複数のコンポーネントを置いています。
<c:TestVisualForceComponent input="{!array}" index="0"/>
    <c:TestVisualForceComponent input="{!array}" index="1"/>
    <c:TestVisualForceComponent input="{!array}" index="2"/>
    <c:TestVisualForceComponent input="{!array}" index="3"/>
    <c:TestVisualForceComponent input="{!array}" index="4"/>
この引数に渡すarrayが独自のapexクラスの配列で、VisualForceページのコントローラーで宣言されたものです。
このapexクラスの名前をTDとすると、TDはチェックボックスを管理するためのselectedという名前のBoolean値を持っています。
コンポーネント内では、引数として渡された配列とindexから配列をindexで参照し、その要素のselecetdにゲッターとセッターを定義しています。
以下のようにチェックボックスを設置しています。
<apex:attribute name="input" description="TD. this is imported." type="TD[]" required="true"
    assignTo="{!tds}" />
<apex:attribute name="index" description="index. this is imported." type="Integer" required="true"
    assignTo="{!td_index}" />
...
<apex:form id="form">
<apex:actionFunction name="reRender{!index}" reRender="form" />
<apex:inputCheckbox id="inputcheck" value="{!selected}" selected="false"  onchange="reRender{!index}();"/>
reRender{!index}()としているのは、{!index}を用いて名前を他のコンポーネントと重複しないようにしないと挙動が不安定になるためです。

さて、ここでチェックボックスを全てつけるボタンをvisualforceページで実装しようと考えました。
以下のように、まずvisualforceページのapexコントローラーに関数を定義しました。
public void CheckOrUncheckAll() {
        Boolean exist_check = false;
        for (Integer i = 0; i < COUNT; i++ ){
            if(array[i].selected){
                exist_check = true;
                break;
            }
        }
        for (Integer i = 0; i < COUNT; i++ ){
            array[i].selected = ! exist_check;
        }
    }
次に、visualforceページにボタンを設置しました。
<apex:pageBlock id="block">
      <apex:form>
      ....
        <apex:commandButton action="{!CheckOrUncheckAll}" value="全てにチェックを入れるor外す" reRender="block"/>
ここでボタンをクリックすると実際にarrayの各selectedの値は変更されるのですが、チェックボックスには反映されません。
ところが、あるチェックボックスに対して一度でもチェックを行えば、以降そのチェックしたことがあるチェックボックスのみ、ボタンによって正常にチェック状態が変わるようになります。
(例えば、3,4番目を一度チェックした後にボタンを押すと全てのチェックが消え、もう一度ボタンを押すと3,4番目のチェックだけが入る。しかし、内部的には全てのarrayのselectedがtrueになっている。)

この問題が起こる原因について、どなたかご存知ないでしょうか。
よろしくお願いします。
SOQLを使って、100件のNameがわかるAccountの情報を抽出したくて、Select Inを使いました。
しかし、Accountの中に「AAAA bbbbb cccc dddd México, S.A. de C.V.」のようなNameが持つ対象が複数あって、うまく引っ掛かりません。
こういう場合、どう書けばいいでしょうか?

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

組織からカスタムオブジェクトのメタデータを取得して中身を確認してみたところ、
以前は存在しなかったタグ「enableLicensing」が追加となっておりました。
こちらは、何を意味する項目でしょうか?
お世話になります。
コミュニティユーザ向けのサイトを作成中なのですが、サイトへのログイン状態を90日程度継続させたいと考えています。
継続が難しい場合、例えば初回のみログイン操作を実施して、その後は裏で自動ログイン処理を走らせるような仕組み等何かいい方法はないでしょうか。

以下のような動作環境で同じサイトを表示させることを想定しています。
・PCブラウザ
・スマートフォンブラウザ
・スマートフォンアプリ(ハイブリッド)

セキュリティの考え方として難しいのは承知のうえですが、ご教示いただければと思います。
スマホからサイトにアクセスすると、sfdcIFrameOrigin=nullのパラメータが勝手に追加されますが、このパラメータをURL表示させない方法がありますか? 
因みに、サイトの URL のリダイレクトの指定で、 
・リダイレクト元 URL:/PAGE01?sfdcIFrameOrigin=null 
・リダイレクト先 URL:/PAGE01 
を指定すると、スマホで画面遷移ができなくなります
お世話になります。

リード履歴についてお聞きしたいことがあり、投稿させていただきます。

リードを取引先責任者に昇格させた際に、昇格させる前のリード履歴を
取引先責任者履歴として記録させる方法はございますでしょうか。

ご教授いただけたら幸いです。
お世話になっております。

ニュース機能についてお聞きしたいことがあり、投稿させていただきます。
もし、ご存知の方がいらっしゃいましたらご教示いただきたく願います。

取引先(親)に取引先(子)ニュースを表示させたいのですが、標準機能ではできないようです。
開発をして実装したいのですが、VFやApex内でニュースを取得し、表示させる方法はありますでしょうか?

以上、よろしくお願い致します。
特定のカスタムオブジェクトに添付ファイルが投稿された際に動作するApex Triggerを作成しています。

添付されたのがどのカスタムオブジェクトなのかを判定する方法として、添付ファイルの親カスタムオブジェクトID(ParentId)をハードコードして判定する方法を利用しているのですが、SandboxとはカスタムオブジェクトIDが異なっているため、リリース前に書き換えるという手段をとっています。

Sandboxと本番組織で同一のコードでカスタムオブジェクトを判定する方法はないでしょうか?
お世話になっております。


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

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

宜しくお願い致します。