Pola i typy pól w Salesforce

Tworzymy obiekt Nieruchomość i dodajemy pola wszystkich typów. Przy każdym typie: jak go skonfigurować, kiedy użyć i jak zachowa się później we Flow.

Lekcja 7 z 8Moduł 2: Pola w praktyce26 min czytania

Zanim zbudujesz pierwszy Flow, musisz rozumieć pola: to one przechowują dane, które Flow odczytuje, sprawdza i zmienia. W tej lekcji tworzymy obiekt Nieruchomość i dodajemy do niego pola wszystkich typów, krok po kroku, ze zrzutami ekranu.

Wolisz od razu klikać? Ten sam obiekt zbudujesz w skróconej formie, z listami kontrolnymi, w warsztacie w następnej lekcji. Ta lekcja wyjaśnia każdy typ pola i jego pułapki we Flow, więc warto do niej wracać.

Cel lekcji

Po tej lekcji samodzielnie utworzysz obiekt i dodasz do niego pole dowolnego typu, a przy każdym typie będziesz wiedzieć, jak zachowa się później we Flow.

Flow to automatyzacja, która działa na danych w polach: sprawdza wartość ("czy cena jest większa niż 500 000 zł?"), ustawia wartość ("oznacz jako sprzedana") albo liczy ("dodaj 14 dni do daty"). Jeśli pole ma zły typ, Flow nie zadziała albo zadziała błędnie. Dlatego najpierw pola, potem Flow.

Co zrobisz w tej lekcji:

  1. Utworzysz obiekt Nieruchomość - to będzie Twój poligon na cały kurs.

  2. Poznasz kreator nowego pola i jego cztery ekrany.

  3. Dodasz pola wszystkich typów dostępnych w Salesforce, pogrupowane w sześć rodzin.

  4. Utworzysz drugi obiekt, Oferta, żeby zobaczyć, jak działają relacje między obiektami.

Czas: ok. 90 minut. Wymagania: dostęp do orga Developer Edition lub Trailhead Playground z uprawnieniami administratora.

Wszystkie nazwy przycisków i ekranów podajemy po angielsku, tak jak wyświetla je Salesforce, a obok polskie wyjaśnienie.

Słowniczek

Pięć pojęć, bez których dalsza część lekcji nie ma sensu. Najprościej porównać je do arkusza kalkulacyjnego.

PojęcieCo to jestOdpowiednik w arkuszuPrzykład
Obiekt (Object)Rodzaj danych, które przechowujeszCały arkuszNieruchomość
Rekord (Record)Jeden konkretny egzemplarzJeden wierszMieszkanie przy ul. Lipowej 5
Pole (Field)Jedna cecha, którą zapisujesz o każdym rekordzieKolumnaCena, Liczba pokoi
Etykieta (Field Label)Nazwa, którą widzi użytkownikNagłówek kolumnyLiczba pokoi
Nazwa API (API Name)Nazwa techniczna, której używa system i FlowAdres kolumny, np. CLiczba_pokoi__c

Na co zwrócić uwagę:

  • Końcówka __c oznacza element własny (custom), czyli utworzony przez Ciebie. Standardowe pola Salesforce, np. Name, jej nie mają.

  • Etykietę można zmieniać bez konsekwencji, nazwy API - nie. Flow, formuły i integracje odwołują się do nazwy API. Zmiana jej po zbudowaniu automatyzacji to najczęstsza przyczyna "nagle przestało działać".

  • Nazwę API twórz po angielsku lub bez polskich znaków. Salesforce i tak zamieni ą, ę, spacje na podkreślenia albo odrzuci nazwę, a po angielsku łatwiej szukać pomocy w dokumentacji.

  • Typ pola wybierasz raz. Zmiana typu później jest często niemożliwa albo kasuje dane. To najważniejsza decyzja przy tworzeniu pola.

Krok 1: tworzymy obiekt Nieruchomość

Pola zawsze należą do jakiegoś obiektu, więc najpierw tworzymy obiekt, a dopiero potem jego pola. Całość zajmuje ok. 5 minut.

1.1. Otwórz Object Manager

Kliknij ikonę koła zębatego w prawym górnym rogu, wybierz Setup, a potem zakładkę Object Manager. Kliknij Create (1) i wybierz Custom Object (2).

Menu Create w Object Manager

Na co zwrócić uwagę: Custom Object from Spreadsheet tworzy obiekt z pliku Excel razem z danymi. Kusi, ale na start go omiń. Salesforce sam zgaduje typy pól z arkusza i często zgaduje źle, a typ pola trudno później zmienić.

1.2. Nazwy obiektu

Formularz nowego obiektu - nazwy

NrPoleCo wpisujemyPo co
1LabelNieruchomośćNazwa w liczbie pojedynczej, widoczna dla użytkowników
2Plural LabelNieruchomościNazwa w liczbie mnogiej, np. na zakładce i w listach
3Object NamePropertyNazwa techniczna. Salesforce doda do niej __c
4Record NameNazwa nieruchomościEtykieta głównego pola, które identyfikuje rekord

Na co zwrócić uwagę:

  • Salesforce sam uzupełnia Object Name na podstawie etykiety i robi to źle przy polskich znakach. Z "Nieruchomość" zrobił "Nieruchomo", bo uciął wszystko od litery ś. Zawsze sprawdzaj to pole i wpisuj nazwę ręcznie, najlepiej po angielsku.

  • Pola Starts with vowel sound nie zaznaczaj. Dotyczy tylko angielskiej gramatyki (a/an).

  • Description wypełniaj zawsze. Za pół roku nikt nie będzie pamiętał, po co powstał obiekt.

1.3. Pole nazwy i opcje obiektu

Formularz nowego obiektu - typ nazwy i opcje

  • Data Type pola nazwy (1): zostawiamy Text. Druga opcja to Auto Number, czyli numer nadawany automatycznie, np. NR-0001. Tekst jest lepszy, gdy ludzie szukają rekordów po nazwie, np. "Lipowa 5/12".

  • Optional Features (2): zaznaczamy Allow Reports, Allow Activities i Track Field History. Bez Allow Reports nie zbudujesz raportu na tym obiekcie. Track Field History przyda się do śledzenia, kto i kiedy zmienił np. cenę. Te opcje można włączyć też później, ale łatwo o nich zapomnieć.

1.4. Status i zapis

Formularz nowego obiektu - status i zapis

  1. Deployment Status: Deployed. Obiekt w statusie In Development widzą tylko administratorzy.

  2. Allow Search - rekordy będzie można znaleźć wyszukiwarką u góry ekranu.

  3. Add Notes and Attachments i Launch New Custom Tab Wizard - te dwie opcje są dostępne tylko przy tworzeniu obiektu. Druga od razu tworzy zakładkę, na której użytkownicy zobaczą rekordy.

  4. Kliknij Save.

1.5. Efekt

Szczegóły obiektu Nieruchomość

Obiekt ma nazwę API Property__c (1). Tej nazwy użyjesz we Flow, gdy będziesz pobierać albo aktualizować rekordy nieruchomości.

Na co zwrócić uwagę: nowy obiekt jest domyślnie niewidoczny dla użytkowników bez uprawnień administratora. Informuje o tym żółty komunikat na górze formularza. Dostęp dla innych nadaje się przez Permission Set. Podstawy uprawnień znajdziesz w lekcji Setup i użytkownicy.

Krok 2: kreator nowego pola

Każde pole tworzysz tym samym kreatorem w czterech krokach. Przechodzimy go raz w całości na przykładzie pola tekstowego Ulica i numer. Przy kolejnych typach pokażemy już tylko krok 2, bo tylko on się różni.

2.1. Lista pól obiektu

W obiekcie Nieruchomość otwórz Fields & Relationships i kliknij New (1).

Lista pól nowego obiektu

Na co zwrócić uwagę: obiekt już ma cztery pola (2), choć nie dodano jeszcze żadnego własnego. To pola standardowe, które Salesforce dodaje do każdego obiektu:

  • Nazwa nieruchomości (Name) - pole nazwy z kroku 1.

  • Owner - właściciel rekordu, czyli użytkownik, który za niego odpowiada.

  • Created By i Last Modified By - kto utworzył rekord i kto go ostatnio zmienił. W tle zapisują się też daty tych zdarzeń.

We Flow często używa się właśnie tych pól, np. "wyślij powiadomienie do właściciela rekordu".

2.2. Krok 1 kreatora: wybór typu pola

To najważniejsza decyzja w całym kreatorze. Lista typów jest długa, więc pokazujemy ją w czterech częściach.

Typy pól - część 1: pola specjalne i relacje

Na górze są typy specjalne: Auto Number, Formula i Roll-Up Summary. Roll-Up Summary jest wyszarzony (1). To nie błąd: ten typ działa tylko na obiekcie, który ma powiązane rekordy w relacji Master-Detail. Odblokujemy go w kroku o relacjach.

Typy pól - część 2: relacje, checkbox, waluta, daty

Typy pól - część 3: liczby, listy wyboru, teksty

Typy pól - część 4: czas i URL

Zaznacz Text (1) i kliknij Next.

Wybór typu Text

2.3. Krok 2 kreatora: szczegóły pola

Szczegóły pola Ulica i numer

NrPoleCo wpisujemyNa co zwrócić uwagę
1Field LabelUlica i numerEtykieta widoczna dla użytkownika. Można ją zmieniać bez konsekwencji.
2Length120Maksymalna liczba znaków, najwyżej 255. Za krótkie pole utnie dane przy imporcie.
3Field NameStreetNazwa API. Salesforce doda __c, więc pełna nazwa to Street__c. Wpisz ją ręcznie, tak jak nazwę obiektu.
4Help TextWpisz ulicę z numerem, np. ul. Lipowa 5/12.Podpowiedź, którą użytkownik zobaczy po najechaniu na ikonę "i" przy polu.
5RequiredniezaznaczonePole wymagane blokuje zapis rekordu bez wartości, także zapis wykonywany przez Flow i importy.
6Next-Przejście do kroku 3.

Na co zwrócić uwagę przy polu Required: to typowa pułapka we Flow. Jeśli pole jest wymagane, a Flow tworzy rekord bez tej wartości, Flow zakończy się błędem. Zaznaczaj Required tylko wtedy, gdy rekord naprawdę nie ma sensu bez tej informacji.

2.4. Krok 3 kreatora: kto widzi pole

Uprawnienia do pola dla profili

Tu decydujesz, które profile użytkowników widzą pole (1) i czy mogą je tylko czytać (2). Domyślnie wszystkie profile mają pole widoczne i edytowalne. Na potrzeby kursu zostawiamy ustawienia domyślne.

Na co zwrócić uwagę: jeśli użytkownik nie widzi pola, to Flow uruchomiony w jego imieniu (np. ekran w Screen Flow) też go nie zobaczy. "Flow nie widzi pola" to bardzo często właśnie brak uprawnień z tego kroku.

2.5. Krok 4 kreatora: układ strony

Dodanie pola do układu strony

Zaznaczony układ strony (1) oznacza, że pole pojawi się na formularzu rekordu. Kliknij Save & New (2), żeby od razu dodać kolejne pole, albo Save (3), żeby zakończyć.

Na co zwrócić uwagę: pole, którego nie ma na układzie strony, nadal istnieje i Flow może je zmieniać. Użytkownik po prostu go nie zobaczy na formularzu.

Rodzina 1: pola tekstowe i kontaktowe

Osiem typów, które przechowują tekst. We Flow wszystkie trafiają do zmiennej typu Text, ale różnią się długością, wyglądem i tym, co Salesforce z nimi robi.

TypPole w kursieNazwa APILimitKiedy użyć
TextUlica i numerStreet__cdo 255 znakówKrótki tekst w jednej linii
Text AreaKrótki opisShort_Description__c255 znakówKilka linii, np. uwagi
Text Area (Long)Opis ofertyListing_Description__cdo 131 072 znakówDługi opis bez formatowania
Text Area (Rich)Opis marketingowyMarketing_Description__cdo 131 072 znakówTekst z pogrubieniami, listami i zdjęciami
Text (Encrypted)Numer księgi wieczystejLand_Register_Number__cdo 175 znakówDane wrażliwe, maskowane na ekranie
EmailE-mail agentaAgent_Email__c80 znakówAdres e-mail, Salesforce sprawdza format
PhoneTelefon agentaAgent_Phone__c40 znakówNumer telefonu, klikalny w aplikacji mobilnej
URLWirtualny spacerVirtual_Tour_URL__c255 znakówLink otwierany w nowej karcie

Text Area

Szczegóły pola Krótki opis

Pole ma stały limit 255 znaków, więc kreator nie pyta o długość. Wpisujesz tylko etykietę (1) i nazwę API (2).

Text Area (Long)

Szczegóły pola Opis oferty

  • Length (1) - domyślnie 32 768 znaków, maksymalnie 131 072.

  • Visible Lines (2) - ile linii ma pole na formularzu. Nie ogranicza długości tekstu, zmienia tylko wygląd.

Na co zwrócić uwagę: przy tym typie nie ma opcji Required. Kreator jej nie pokazuje. Długich pól tekstowych nie da się też użyć jako warunku filtra w elemencie Get Records we Flow.

Text Area (Rich)

Szczegóły pola Opis marketingowy

Na co zwrócić uwagę:

  • Licznik znaków (1) pokazuje, ile z limitu na obiekt już zużyto. Wszystkie długie pola tekstowe jednego obiektu dzielą wspólny limit 1 638 400 znaków. Dlatego ustawiamy rozsądną długość (2), np. 10 000, zamiast zostawiać maksimum.

  • Flow odczyta z tego pola kod HTML, a nie czysty tekst. Jeśli Flow ma wstawić opis do e-maila albo porównać go z czymś, dostanie tekst ze znacznikami typu <b>.

Text (Encrypted)

Szczegóły pola Numer księgi wieczystej

  • Length (1) - 20 znaków wystarczy na numer księgi wieczystej.

  • Mask Type (2) - jak ukryć wartość. Wybieramy Last Four Characters Clear, czyli widoczne tylko 4 ostatnie znaki.

  • Mask Character (3) - znak zastępujący ukryte cyfry, tu gwiazdka.

  • Example (4) - podgląd efektu.

Na co zwrócić uwagę: pełną wartość widzą tylko użytkownicy z uprawnieniem View Encrypted Data. Zaszyfrowanego pola nie da się użyć w filtrach, sortowaniu ani formułach. To stare, klasyczne szyfrowanie. Firmy z wyższymi wymaganiami używają płatnego Shield Platform Encryption.

Email

Szczegóły pola E-mail agenta

Salesforce odrzuci wartość, która nie wygląda jak adres e-mail. Pole ma opcję Unique (1), która blokuje duplikaty. Tu jej nie zaznaczamy, bo jeden agent prowadzi wiele nieruchomości.

Phone

Szczegóły pola Telefon agenta

Na co zwrócić uwagę: Salesforce nie sprawdza, czy wpisano prawdziwy numer. Formatuje tylko numery amerykańskie (10 cyfr). Polski numer zapisze tak, jak go wpisano, więc warto ustalić w zespole jeden format, np. +48 600 100 200.

URL

Szczegóły pola Wirtualny spacer

Wartość wyświetla się jako link. Jeśli użytkownik wpisze adres bez https://, Salesforce doda http:// sam.

Rodzina 2: liczby i pieniądze

Cztery typy liczbowe. We Flow Number, Currency i Percent trafiają do zmiennych typu Number albo Currency. Auto Number, mimo nazwy, jest dla Flow tekstem.

TypPole w kursieNazwa APIUstawieniaKiedy użyć
NumberPowierzchnia (m2)Area_m2__c6 cyfr, 2 miejsca po przecinkuIlości, wymiary, liczniki
CurrencyCenaPrice__c10 cyfr, 2 miejsca po przecinkuKwoty pieniędzy
PercentProwizjaCommission_Rate__c3 cyfry, 2 miejsca po przecinkuStawki i udziały procentowe
Auto NumberNumer ofertyListing_Number__cformat NR-{YYYY}-{0000}Numer nadawany automatycznie

Number

Szczegóły pola Powierzchnia

  • Length (1) - liczba cyfr przed przecinkiem.

  • Decimal Places (2) - liczba cyfr po przecinku. Suma obu wartości nie może przekroczyć 18.

  • Required (3) - zaznaczamy. Powierzchnię użyjemy w formule "Cena za m2", a pusta powierzchnia zepsułaby wynik.

Na co zwrócić uwagę: Number usuwa zera z przodu. Kod pocztowy 05-120 albo numer 0012 zapisany jako liczba zamieni się w 5120 lub 12. Wszystko, na czym nie liczysz, zapisuj jako Text.

Currency

Szczegóły pola Cena

Ustawienia jak w Number: długość (1), miejsca po przecinku (2) i Required (3). Różnica jest w wyświetlaniu: Salesforce doda symbol waluty organizacji.

Na co zwrócić uwagę: symbol waluty zależy od ustawień organizacji, a nie od pola. Jeśli org ma włączonych kilka walut, każdy rekord dostaje własne pole waluty i Flow musi to uwzględniać przy porównaniach.

Percent

Szczegóły pola Prowizja

Długość 3 (1) i 2 miejsca po przecinku (2) pozwalają zapisać np. 2,50%.

Na co zwrócić uwagę: to ważna pułapka we Flow. Użytkownik wpisuje 2,5, na ekranie widzi 2,5%, ale w formułach wartość zachowuje się jak 0,025. Liczenie prowizji we Flow jako Cena * Prowizja daje więc poprawny wynik tylko w formule. W elemencie Assignment trzeba dzielić przez 100. Zawsze sprawdź wynik na jednym testowym rekordzie.

Auto Number

Szczegóły pola Numer oferty

  • Display Format (1) - wzór numeru. {0000} to licznik z czterema cyframi, {YYYY} to rok utworzenia rekordu.

  • Starting Number (2) - od jakiej liczby zaczyna licznik.

  • Generate Auto Number for existing records (3) - nadaje numery rekordom, które już istnieją.

Na co zwrócić uwagę:

  • Licznik nie zeruje się z nowym rokiem. Po NR-2026-0157 przyjdzie NR-2027-0158, a nie NR-2027-0001.

  • Pola nie da się edytować, ani ręcznie, ani we Flow. Salesforce nadaje numer przy zapisie rekordu.

  • Licznik ma luki. Numer zużyty przez rekord, który potem usunięto, nie wraca do puli. Nie używaj Auto Number tam, gdzie prawo wymaga ciągłej numeracji, np. na fakturach.

Rodzina 3: daty i czas

Trzy typy, które najczęściej uruchamiają automatyzacje czasowe, np. "3 dni przed prezentacją wyślij przypomnienie". We Flow mają osobne typy zmiennych: Date, Date/Time i Time.

TypPole w kursieNazwa APICo przechowujePrzykład
DateDostępna odAvailable_From__cSam dzień01.10.2026
Date/TimeTermin prezentacjiNext_Viewing__cDzień i godzinę ze strefą czasową01.10.2026 17:30
TimeGodzina dni otwartychOpen_House_Time__cSamą godzinę, bez daty i strefy10:00

Date i wartość domyślna

Szczegóły pola Dostępna od

W polu Default Value (1) wpisaliśmy formułę TODAY(). Nowy rekord dostanie więc dzisiejszą datę, a użytkownik może ją zmienić.

Na co zwrócić uwagę: wartość domyślna ustawia się tylko przy tworzeniu rekordu i tylko wtedy, gdy nikt nie poda własnej wartości. Dotyczy to formularza, Flow i importów. Rekordy, które istniały przed utworzeniem pola, zostają puste i trzeba je uzupełnić osobno.

Date/Time

Szczegóły pola Termin prezentacji

Kreator wygląda jak przy Date, wystarczy etykieta (1) i nazwa API.

Na co zwrócić uwagę: Salesforce zapisuje Date/Time w czasie UTC i przelicza na strefę czasową użytkownika tylko na ekranie. We Flow i w e-mailach godzina może się więc różnić o 1-2 godziny od tej na formularzu. To jeden z najczęstszych błędów w przypomnieniach.

Time

Szczegóły pola Godzina dni otwartych

Time przechowuje samą godzinę, np. 10:00, bez daty i bez strefy czasowej. Dobre na godziny otwarcia albo stałe terminy, które powtarzają się codziennie.

Na co zwrócić uwagę: z polem Time nie da się zaplanować Flow "na konkretny dzień", bo pole nie zna daty. Do terminów w kalendarzu używaj Date/Time.

Rodzina 4: pola wyboru

Te pola najczęściej są warunkiem startu Flow, np. "uruchom, gdy Status zmieni się na Sprzedana". Dlatego ich wartości trzeba zaprojektować szczególnie starannie.

TypPole w kursieNazwa APIWartościTyp we Flow
CheckboxUmeblowaneIs_Furnished__cprawda / fałszBoolean
PicklistStatusStatus__cNowa, Dostępna, Zarezerwowana, SprzedanaText (Picklist)
Picklist (Multi-Select)UdogodnieniaAmenities__cBalkon, Winda, Miejsce parkingowe, Ogród, PiwnicaText (Multi-Select Picklist)

Checkbox

Szczegóły pola Umeblowane

Jedyne ustawienie to Default Value (1): zaznaczone albo nie. Checkbox nigdy nie jest pusty, zawsze ma wartość prawda albo fałsz, więc nie ma też opcji Required.

Na co zwrócić uwagę: nazwę API checkboxa warto zaczynać od Is_ albo Has_, np. Is_Furnished__c. We Flow warunek Is_Furnished__c = True czyta się wtedy jak zdanie.

Picklist

Szczegóły pola Status

  1. Enter values - wpisujemy własne wartości. Druga opcja, global value set, to lista wspólna dla wielu pól i obiektów.

  2. Lista wartości - każda w osobnej linii, w kolejności, w jakiej mają się wyświetlać.

  3. Use first value as default value - nowy rekord dostanie status "Nowa".

  4. Restrict picklist - nikt, także Flow i import, nie zapisze wartości spoza listy.

Na co zwrócić uwagę:

  • Flow porównuje wartości picklisty jako tekst, co do znaku. Warunek Status = "Sprzedana " ze spacją na końcu albo "sprzedana" małą literą nigdy się nie spełni.

  • Zmiana nazwy wartości psuje automatyzacje. Jeśli za rok ktoś zmieni "Sprzedana" na "Sprzedane", Flow z warunkiem na "Sprzedana" przestanie działać bez żadnego błędu. Każda wartość ma też osobną nazwę API, którą lepiej zostawić bez zmian.

  • Restrict picklist zostaw włączone. Bez tego Flow może zapisać literówkę jako nową wartość i raporty się rozjadą.

Picklist (Multi-Select)

Szczegóły pola Udogodnienia

Lista wartości (1) wygląda jak w zwykłej pickliście. Dochodzi Visible Lines (2), czyli wysokość okienka z listą na formularzu.

Na co zwrócić uwagę: to typ, którego we Flow najlepiej unikać. Salesforce zapisuje wybrane wartości jako jeden tekst rozdzielony średnikami, np. Balkon;Winda;Ogród. Warunek Udogodnienia = "Balkon" nie zadziała, gdy wybrano też Windę. Trzeba używać operatora Contains albo funkcji INCLUDES() w formule. Jeśli planujesz automatyzacje na tych wartościach, rozważ kilka checkboxów zamiast jednego multi-selecta.

Rodzina 5: relacje między obiektami

Pole relacji łączy rekord z innym rekordem, np. nieruchomość z jej sprzedającym. W polu zapisuje się Id powiązanego rekordu, czyli 18-znakowy identyfikator, a nie jego nazwa. We Flow relacje pozwalają sięgać do pól powiązanego rekordu, np. {!$Record.Seller__r.Email}.

TypPole w kursieCzy powiązanie jest wymaganeCo się dzieje po usunięciu "rodzica"Dostępność
Lookup RelationshipSprzedający (Seller__c) → ContactNie, do wyboruDo wyboru: czyści pole, blokuje usunięcie albo usuwa rekordKażdy obiekt
Master-Detail RelationshipNieruchomość (Property__c) na obiekcie OfertaTak, zawszeUsuwa wszystkie powiązane rekordyTylko obiekty własne jako "dziecko"
External Lookup Relationship-Nie-Tylko z obiektami zewnętrznymi (Salesforce Connect)
Hierarchical Relationship-Nie-Tylko na obiekcie User

Lookup: Sprzedający

Najpierw wybierasz obiekt, z którym łączysz pole (1). Wybieramy Contact, bo sprzedający jest kontaktem.

Wybór obiektu dla relacji Lookup

Na kolejnym ekranie Salesforce proponuje nazwy sam. Child Relationship Name (1) zamienił na Nieruchomo_ci, bo znowu nie poradził sobie z polską literą.

Domyślne nazwy zaproponowane przez Salesforce

Poprawione ustawienia:

Szczegóły pola Sprzedający

  1. Field Label - Sprzedający.

  2. Field Name - Seller, czyli pełna nazwa Seller__c.

  3. Child Relationship Name - Properties. To nazwa relacji "od drugiej strony", używana przy pobieraniu wszystkich nieruchomości danego kontaktu.

  4. Co zrobić po usunięciu kontaktu - zostawiamy domyślne czyszczenie pola. Opcja "Delete this record also" mogłaby przy usunięciu jednego kontaktu skasować wiele nieruchomości.

Kreator relacji ma 6 kroków zamiast 4. Ostatni dodaje listę powiązanych rekordów po stronie kontaktu:

Lista powiązanych rekordów na kontakcie

Related List Label (1) to tytuł listy "Nieruchomości" na stronie kontaktu. Zaznaczone układy (2) to formularze kontaktu, na których lista się pojawi.

Master-Detail: obiekt Oferta

Master-Detail potrzebuje drugiego obiektu, który będzie "dzieckiem" nieruchomości. Tworzymy obiekt Oferta (Offer__c) tak samo jak w kroku 1, z jedną różnicą: pole nazwy ma typ Auto Number.

Obiekt Oferta z nazwą typu Auto Number

  1. Data Type: Auto Number - oferty nie mają naturalnej nazwy, więc numerujemy je automatycznie.

  2. Display Format: OF-{00000} - numery OF-00001, OF-00002 itd.

  3. Starting Number: 1.

Na obiekcie Oferta tworzymy nowe pole i wybieramy Master-Detail Relationship (1). Zauważ, że Roll-Up Summary (2) jest tu wciąż wyszarzony. Odblokuje się dopiero po stronie "rodzica", czyli na Nieruchomości.

Wybór typu Master-Detail na obiekcie Oferta

Jako obiekt nadrzędny wybieramy Nieruchomość (1):

Wybór obiektu nadrzędnego

Szczegóły pola Nieruchomość na obiekcie Oferta

  1. Field Name: Property - pełna nazwa Property__c. Salesforce zostawił to pole puste, bo etykieta zaczynała się od polskich liter.

  2. Child Relationship Name: Offers.

  3. Sharing Setting - jaki dostęp do nieruchomości musi mieć użytkownik, żeby dodawać i edytować jej oferty. Zostawiamy Read/Write.

Na co zwrócić uwagę: w Master-Detail nie ma opcji Required, bo powiązanie jest zawsze wymagane. Nie da się zapisać oferty bez nieruchomości, także we Flow.

Po zapisaniu obiekt Oferta ma pole relacji (1) i… nie ma pola Owner. W relacji Master-Detail właścicielem oferty jest automatycznie właściciel nieruchomości.

Pola obiektu Oferta

Na obiekcie Oferta dodaliśmy też pole Kwota oferty (Amount__c, typ Currency). Przyda się w następnej rodzinie do pola Roll-Up Summary.

External Lookup i Hierarchy

Pusta lista obiektów dla External Lookup

Po wybraniu External Lookup Relationship lista obiektów (1) jest pusta. Ten typ łączy rekord z danymi spoza Salesforce, np. z systemu ERP, i wymaga skonfigurowanego Salesforce Connect. W org Developer Edition bez integracji nie ma z czym go połączyć.

Hierarchical Relationship w ogóle nie pojawia się na liście typów dla Nieruchomości. Działa tylko na obiekcie User i służy do wskazania przełożonego, np. pole Manager. Z tego pola korzystają np. procesy akceptacji "do przełożonego".

Na co zwrócić uwagę przy wszystkich relacjach: we Flow pole relacji zawiera Id, a nie nazwę. Jeśli Flow ma ustawić sprzedającego, musi najpierw znaleźć kontakt (element Get Records) i przypisać jego Id. Wpisanie imienia i nazwiska nie zadziała.

Rodzina 6: pola wyliczane i lokalizacja

Formula i Roll-Up Summary nie przyjmują wartości od użytkownika. Salesforce liczy je sam, więc są tylko do odczytu, także dla Flow. Geolocation to osobny przypadek: dwa pola liczbowe w jednym.

TypPole w kursieNazwa APICo liczy
FormulaCena za m2Price_per_m2__cCena / Powierzchnia
Roll-Up SummaryNajwyższa ofertaHighest_Offer__cMAX z Kwoty oferty wszystkich ofert
GeolocationLokalizacjaLocation__cSzerokość i długość geograficzna

Formula: Cena za m2

Formuła ma 5 kroków kreatora. W kroku 2 podajesz etykietę i nazwę (2) oraz typ wyniku (1). Cena za metr to kwota, więc wybieramy Currency.

Wybór typu wyniku formuły

W kroku 3 wpisujesz formułę. Pola wstawiasz z listy Insert Field (1), żeby uniknąć literówek w nazwach API. Formuła (2):

IF( Area_m2__c > 0, Price__c / Area_m2__c, NULL )

Edytor formuły

Czytamy ją tak: jeśli powierzchnia jest większa od zera, podziel cenę przez powierzchnię. W przeciwnym razie zostaw pole puste. Warunek chroni przed dzieleniem przez zero, które wyświetliłoby błąd na rekordzie.

Kliknij Check Syntax (1). Zielony komunikat oznacza, że formuła jest poprawna.

Sprawdzenie składni formuły

Na co zwrócić uwagę:

  • Na zrzutach edytor formuł jest rozszerzony przez wtyczkę ORGanizer (napis pod polem edycji i znaczek w lewym dolnym rogu). U Ciebie edytor może wyglądać skromniej, ale działa tak samo.

  • Formuła liczy się przy każdym odczycie rekordu, a nie przy zapisie. Dlatego zmiana wartości formuły nie uruchamia Flow typu "po zapisie rekordu". Flow reaguje na zmianę ceny albo powierzchni, a nie na zmianę ceny za m2.

  • Flow może czytać formuły, ale nie może do nich zapisywać.

Roll-Up Summary: Najwyższa oferta

Po utworzeniu relacji Master-Detail Roll-Up Summary na Nieruchomości przestaje być wyszarzony (1).

Roll-Up Summary jest już dostępny

Definicja podsumowania

  1. Summarized Object - Oferty, czyli obiekt "dzieci".

  2. Typ podsumowania - MAX, czyli największa wartość. Do wyboru są też COUNT (liczba rekordów), SUM (suma) i MIN (najmniejsza wartość).

  3. Field to Aggregate - Kwota oferty, czyli pole, z którego bierzemy maksimum.

  4. Filter Criteria - liczymy wszystkie oferty. Można ograniczyć się np. do ofert z określonym statusem.

Na co zwrócić uwagę: Roll-Up Summary działa tylko przy Master-Detail. Przy zwykłym Lookup trzeba liczyć to samo Flow. To jeden z najczęstszych powodów, dla których administratorzy budują pierwszy Flow. W przeciwieństwie do formuły zmiana Roll-Up Summary zapisuje się na rekordzie i może uruchomić Flow na Nieruchomości.

Geolocation: Lokalizacja

Szczegóły pola Lokalizacja

  1. Display Notation: Decimal - współrzędne w formacie 52.229676, a nie w stopniach i minutach. Taki format zwracają mapy Google.

  2. Decimal Places: 6 - dokładność do ok. 10 cm.

Na co zwrócić uwagę: Salesforce tworzy z tego pola dwa pola liczbowe: Location__Latitude__s i Location__Longitude__s. We Flow używasz właśnie ich, osobno. Samo Location__c nie jest dostępne jako jedna wartość.

Ściąga: typ pola a Flow

Po lekcji obiekt Nieruchomość ma 22 pola własne i 4 standardowe. Tak wygląda początek listy w Fields & Relationships:

Pola obiektu Nieruchomość po lekcji

Tabela poniżej zbiera to, co trzeba wiedzieć o każdym typie, zanim użyjesz go we Flow.

Typ polaTyp zmiennej we FlowFlow może zapisać?Najważniejsza pułapka
TextTextTakZa krótkie pole utnie dłuższy tekst i Flow zakończy się błędem
Text AreaTextTakLimit 255 znaków
Text Area (Long)TextTakNie da się go użyć jako filtra w Get Records
Text Area (Rich)TextTakFlow widzi kod HTML, nie czysty tekst
Text (Encrypted)TextTakNie nadaje się do filtrów ani formuł
EmailTextTakNieprawidłowy format przerwie zapis
PhoneTextTakBrak kontroli formatu
URLTextTakBrak kontroli, czy link działa
NumberNumberTakUsuwa zera z przodu
CurrencyCurrencyTakPrzy wielu walutach porównuj kwoty w tej samej walucie
PercentNumberTak2,5% to w formułach 0,025, a w Assignment 2,5
Auto NumberTextNieNumer nadawany dopiero przy zapisie
DateDateTakWartość domyślna tylko dla nowych rekordów
Date/TimeDate/TimeTakZapisywany w UTC, przesunięcie godzin
TimeTimeTakNie zna daty
CheckboxBooleanTakNigdy nie jest pusty
PicklistText (Picklist)TakPorównanie co do znaku, zmiana nazwy wartości psuje warunki
Picklist (Multi-Select)Text (Multi-Select Picklist)TakWartości rozdzielone średnikiem, używaj Contains
LookupText (Id rekordu)TakPrzyjmuje Id, nie nazwę
Master-DetailText (Id rekordu)Tak, przy tworzeniuZawsze wymagane
Formulazależnie od typu wynikuNieZmiana formuły nie uruchamia Flow
Roll-Up SummaryNumber / Currency / DateNieTylko przy Master-Detail
Geolocation2 × NumberTak, osobnoUżywasz __Latitude__s i __Longitude__s

Na co zwrócić uwagę w kolumnie "Flow może zapisać": przy Master-Detail rodzica ustawia się przy tworzeniu rekordu. Zmiana rodzica później jest możliwa tylko wtedy, gdy przy polu zaznaczono Allow reparenting.

Najczęstsze błędy i ćwiczenie

Pięć błędów, które potem psują Flow

  1. Nazwy API z polskich etykiet. Salesforce tnie polskie litery i tworzy nazwy typu Nieruchomo albo Nieruchomo_ci. Zawsze wpisuj nazwę API ręcznie, po angielsku.

  2. Zmiana nazwy API albo wartości picklisty po zbudowaniu automatyzacji. Etykiety zmieniaj śmiało, nazw API i wartości używanych w warunkach - nigdy bez sprawdzenia, gdzie są użyte (przycisk Where is this used? na stronie pola).

  3. Liczby zapisane jako Number, choć nikt na nich nie liczy. Kody pocztowe, numery telefonów i numery dokumentów to Text.

  4. Pole wymagane, którego Flow nie wypełnia. Każde pole z Required musisz uwzględnić w elemencie Create Records.

  5. Multi-select tam, gdzie będą warunki. Jeśli na wartościach mają działać automatyzacje, wybierz picklist albo kilka checkboxów.

Ćwiczenie

Na obiekcie Oferta dodaj samodzielnie trzy pola:

  • Status oferty - Picklist z wartościami: Złożona, Zaakceptowana, Odrzucona. Pierwsza wartość domyślna.

  • Data ważności - Date z wartością domyślną TODAY() + 14.

  • Różnica do ceny - Formula (Currency): o ile oferta jest niższa od ceny nieruchomości. Podpowiedź: cenę nieruchomości pobierzesz przez relację Property__r.Price__c.

Następnie na obiekcie Nieruchomość dodaj Roll-Up Summary Liczba ofert (COUNT).

Sprawdź się

1. Klient chce zapisywać kod pocztowy. Jaki typ pola wybierzesz i dlaczego nie Number?

Pokaż odpowiedź

Text. Number usuwa zera z przodu, więc kod 05-120 zamieniłby się w 5120, a na kodach pocztowych i tak niczego się nie liczy.

2. Dlaczego pole Najwyższa oferta mogło powstać dopiero po utworzeniu obiektu Oferta?

Pokaż odpowiedź

Bo to Roll-Up Summary, a ten typ działa tylko na obiekcie nadrzędnym w relacji Master-Detail. Dopóki Oferta nie miała pola Master-Detail wskazującego na Nieruchomość, typ był wyszarzony.

3. Flow ma wysłać e-mail, gdy Cena za m2 przekroczy 20 000 zł. Dlaczego Flow uruchamiany zmianą pola Cena za m2 nie zadziała i co ustawić zamiast tego?

Pokaż odpowiedź

Formuła liczy się przy odczycie rekordu i niczego nie zapisuje, więc jej zmiana nie uruchamia Flow. Flow trzeba uruchamiać zmianą pól, z których formuła się liczy, czyli Ceny albo Powierzchni, i dopiero w nim sprawdzić wartość Cena za m2.

4. Co zobaczy Flow w polu Udogodnienia, jeśli użytkownik zaznaczył Balkon i Ogród?

Pokaż odpowiedź

Jeden tekst z wartościami rozdzielonymi średnikiem: Balkon;Ogród. Żeby sprawdzić jedną z wartości, użyj operatora Contains albo funkcji INCLUDES().

Następny krok: przećwicz budowę obiektu w skróconej formie w warsztacie. O Flow uczysz się w kursie Salesforce Flow, zaczynając od lekcji Czym jest Salesforce Flow.