CalendarSyntechFreedom UI component · guide
Creatio Freedom UI · Calendar

A configurable calendar for Creatio

Six views, drag & drop, status colors, owners and multi-day tasks — with a live emulation of every feature below. Switch the guide language in the top right.

6 views 3 languages (EN / UK / RU) Drag · Drop · Resize Component syn-calendarsyntech
01

Overview

CalendarSyntech renders records from any Creatio schema as calendar events. You map columns (date, time, title, color, status, owner) once in Settings, then work with the data directly on the board.

Any schema

Point it at a schema and map its columns — no code.

Edit in place

Drag, resize and create records straight on the calendar.

Real-time

Optional auto-refresh keeps the board in sync.

Configurable

Colors, statuses, grouping and owner photos, all from a lookup.

02

Toolbar & navigation

The top bar holds period navigation, the view switcher and quick actions. The active view is highlighted with the accent tint and ring.

Toolbar
August 2026

◀ ▶ · Today

Move between periods; Today jumps back to the current date.

View switcher

Switch between the six views; admins can hide any of them.

Refresh

Reload records on demand; auto-refresh is optional.

Settings

The gear opens the configuration modal (admin).

03

The six views

Every view is emulated below with real sample data. Weekends are tinted, the current day is marked with an accent circle, and event bars carry their status color.

Month

A 7×5 grid. Each day shows up to three events; extra ones collapse into a “+N more” pill. Multi-day tasks run as a continuous bar across the days they cover.

Month

Week

Seven day-columns over an hour grid. Timed events sit in the grid; long tasks move to the all-day lane on top so they never cover them.

Week
All day
Sprint
09
10
11

Day

A single day at full height with a wider hour scale — best for a packed schedule. Multi-day tasks appear as bars above the grid.

Day
Mon 24
09
09:00 Call
10
10:30 Demo
11

Year

Twelve mini-months at a glance. Days with events carry an accent dot; today is a filled circle. Click a day to drill in.

Year

Agenda

A chronological list grouped by day into cards, with a per-day event count. Ideal for a quick read-through of what’s next.

Agenda
Mon, 24 Aug2 events
08:3009:30
Team standup
Owner: A. Petrenko
16:0017:00
Product demo
Owner: M. Ivanova

Resource timeline

Rows are resources (people, rooms, equipment) grouped by a lookup column; columns are hours or days. Pick the range with the day-count switcher — the active range is filled with the accent.

Resources
Resources: days shown
Resources
APA. Petrenko
Call
Review
MIM. Ivanova
Demo
04

Event cards

An event mirrors one record. Its color comes from a status lookup; it can show the owner’s photo and any additional columns you map.

Event anatomy
AP
09:00 – 10:30
Client meeting
Stage: Negotiation€ 12,000
1Status color. Fill comes from the status lookup’s color column.
2Time. Start–end, drawn to scale on the grid.
3Owner photo. Avatar pulled from the owner lookup.
4Additional fields. Any mapped columns; a hover tooltip shows them all.
Free Booked Completed

The legend below the toolbar lists every status and its color; it can be hidden per configuration.

05

Interactions

In edit mode you work directly on the board. A drag shows a floating “ghost” of the card that follows the cursor, while the target slot is highlighted.

Drag & drop
Call · 09:00

Drag & drop

Move an event to a new time or day; it saves on drop.

Resize

Drag the top/bottom edge to change duration (or left/right in the timeline).

Create

Click an empty slot — or drag across a range — to add a record.

Open

Click a card to open the full record page.

Read-only mode turns off drag, resize and creation, leaving the board for viewing only.
06

Multi-day tasks

Records that span several days (an end date after the start) render as horizontal bars in the all-day lane above the grid, packed into rows so they never hide the small per-hour events. A ‹ / › cue shows when a task continues past the visible range.

All-day lane · week
All day
Sprint: release prep
Business trip
09
10
07

Today & filtering

The current day is always emphasized — an accent circle on the date and a soft tint on its cell or column. Statuses double as filters.

Today marker

Accent circle on the number, gentle tint on the day.

Status filter

Toggle statuses to show only the events you need.

Status filter
Free Booked Completed
08

Settings

The gear opens a modal with tabbed configuration. Everything is stored as JSON keyed by the component name, so you can copy it between environments.

Settings

Data source

Schema plus the date, time, title and description columns.

Status

Status column and the lookup that supplies values and colors.

Grouping

The lookup column that becomes the rows of the resource timeline.

Shifts

Owner column plus the schema/column holding the photo.

Display

Default view, which views are enabled, and the status panel.

Behavior

Read-only, refresh interval, days-ahead and resource range.

// stored as JSON in SynCalendarSettings
{
  "schemaName": "Activity",
  "dateColumn": "StartDate",
  "startTimeColumn": "StartDate",
  "endTimeColumn": "DueDate",
  "titleColumn": "Title",
  "statusColumn": "Status",
  "statusLookupSchema": "ActivityStatus",
  "statusValueColumn": "Id",
  "statusDisplayColumn": "Name",
  "groupByColumn": "Owner",
  "groupByLookupSchema": "Contact",
  "viewMode": "week",
  "firstDayOfWeek": 1,
  "dayStartHour": 8,
  "dayEndHour": 19,
  "refreshInterval": 60,
  "daysAhead": 30,
  "resourceTimelineDays": 7,
  "enabledViewModes": ["day", "week", "month", "year", "agenda", "resource-timeline"]
}
09

Every setting

A calendar is configured in three places: the setup area in the Freedom UI Designer (stored in the page), the gear on the calendar toolbar (stored as JSON in SynCalendarSettings under the element code) and the platform itself (system settings, the user profile, the licence). Every parameter of all three is below.

In the Freedom UI Designer — the “Calendar settings” panel

FieldJSON keyDefaultWhat it changes
Component namelabelCalendarThe title drawn above the calendar; it also labels the element in the designer.
ObjectobjectName— not set —The entity the calendar reads. It is a fallback only: it applies when the saved settings have no schemaName. The list is built from SysSchema; without access to it the field becomes a text box.
Record columnrecordColumnemptyThe column of the object that points at the page's record (for example Account). With Record Id it narrows the calendar to the records related to the open record.
Record IdrecordId$IdThe page attribute that holds the current record id. Keep the default on a record page; on a list page it stays unused.
Folder / filterfolderId$CalFilterThe page attribute with the selected folders. For a dynamic (search) folder the calendar reads its stored conditions from SearchData; a static folder filters through the membership table.
Apply pre-configured filterexternalFilters … externalFilters5emptyUp to five filters placed on the page (quick filters, the folder tree, pre-configured filters). The chosen list is kept in externalFilterSources; when the user changes such a filter the calendar reloads with it applied.
Element codeconfigthe element nameThe key under which this calendar's configuration is stored in SynCalendarSettings. Two calendars with the same code share one configuration — give every calendar its own.

Settings → Data source

FieldJSON keyDefaultWhat it changes
Schema nameschemaName— not set —The object the calendar reads. Choosing it loads that object's columns into every column list below.
Date columndateColumn— not set —The date an event is placed on. Without it the calendar has nothing to draw.
Start time columnstartTimeColumnsame as the date columnThe start time of an event. Left empty, the date column supplies it.
End time columnendTimeColumn— not set —The end time. It sets the height of an event in the day and week grids and makes a task that spans days a bar in the all-day lane.
Global filterglobalFilterConditions[]Conditions that are combined (AND) with every other filter — the page filters and the folder included. Twelve operators are available, from = and ∋ to ∅; ∅ and ≠∅ need no value. A reference column offers its records as values. Incomplete conditions are dropped when the configuration is saved.

Settings → Display

FieldJSON keyDefaultWhat it changes
Title columntitleColumn— not set —The text on the event. Without it an event shows only its time.
Color columncolorColumn— not set —A per-record colour (hex). It wins over the status colour, so one record can be highlighted without changing its status.
Description columndescriptionColumn— not set —The second line of an event and of an agenda card. HTML is stripped.
Additional columnsadditionalColumns[]Extra columns shown in the event tooltip, the day dialog and the agenda card. Pick them as chips, or type them comma-separated when the column list could not be loaded.
Owner columnownerColumn— not set —The lookup column with the person responsible. It gives the event its avatar and the resource timeline its rows when grouping is not set separately.
Owner photo schemaownerPhotoSchemafilled in automaticallyThe object that holds the photo (for example Contact or SysAdminUnit). Together with the next field it is read as the path <schema>.<column> on the row.
Owner photo columnownerPhotoColumnfilled in automaticallyThe column with the photo itself. With no photo the calendar draws the initials of the owner.

Settings → Status

FieldJSON keyDefaultWhat it changes
Status columnstatusColumn— not set —The column that carries the status. Without it every event is drawn in the default colour.
Status lookup schemastatusLookupSchemathree built-in statusesThe lookup the statuses come from (for example ActivityStatus). Without it the calendar falls back to Free, Booked and Completed.
Status value columnstatusValueColumnfilled in automaticallyThe column whose value is matched against the record's status (usually Id).
Status display columnstatusDisplayColumnfilled in automaticallyThe column shown in the legend and on the status chip (usually Name).
Status color columnstatusColorColumn— not set —The column with the status colour as hex. It also accepts a path, StatusSchema.Column or EntitySchema.Owner.Column. Without it the calendar assigns each status a colour of its own from the built-in palette.
Status filterstatusFilterall statusesWhich statuses are loaded at all. Clearing a status here removes its events from every view, not only from the legend.

Settings → Grouping

FieldJSON keyDefaultWhat it changes
Group by columngroupByColumn— not set —The lookup column whose values become the rows of the resource timeline.
Group by lookup schemagroupByLookupSchemafilled in automaticallyThe object behind that column. It supplies the row names and, for a clickable name, the record to open.
Clickable resource nameresourceNameClickableoffTurns the row label of the resource timeline into a link that opens the grouped record.

Settings → Shifts

FieldJSON keyDefaultWhat it changes
Show out-of-shift indicatorshiftVisibilityEnabledoffMarks events that fall outside the resource's working hours and adds the out-of-shift entry to the legend. The four fields below must be filled for it to work.
Shift schemashiftSchema— not set —The object with one row per working interval of a resource.
Resource columnshiftResourceColumn— not set —The lookup column of that object pointing at the resource. It must resolve to the same record as the grouping column, otherwise no shift is found.
Day of week columnshiftDayOfWeekColumn— not set —The day of the week as a number. Both 0–6 from Sunday and 1–7 from Monday are accepted and normalised. Left empty, the day is derived from the shift start date.
Shift start columnshiftStartColumn— not set —The start of the interval (a time or a date-time column).
Shift end columnshiftEndColumn— not set —The end of the interval. An event outside start–end on its weekday is marked out of shift.

Settings → Behavior

FieldJSON keyDefaultWhat it changes
Default viewviewModeweekThe view the calendar opens in: day, week, month, year, agenda or resource-timeline.
First day of weekfirstDayOfWeekautomaticA fixed first day (0 = Sunday … 6 = Saturday) for the week and month views, for everyone who sees this calendar. Left automatic, the user's own profile decides — see the box below.
Day starts atdayStartHour0 (00:00)The first hour drawn in the day and week grids (0–23). The resource timeline always keeps its 24 hours.
Day ends atdayEndHour24 (24:00)The hour the grid ends at (1–24, exclusive). The pair is written only when it is not the whole day, and an end that is not later than the start is ignored — the grid falls back to 00:00–24:00.
Refresh intervalrefreshInterval0 — offAuto-refresh in seconds. The calendar also reloads on demand and on the CalendarRefresh message channel, so a short interval is rarely needed.
Days aheaddaysAhead30How many days of data are loaded around the shown period. Records arrive in pages of 150.
Read onlyreadOnlyoffForbids dragging, resizing and creating events on the board. Opening a record stays allowed, and the user's own rights still apply on top.
Accept external filtersexternalFilterEnabledoffA stored marker that the calendar expects a filter from the page. Filters connected in the designer are applied in any case, so the box changes nothing on its own.
Resources: days shownresourceTimelineDays1How much of the timeline is shown: 1, 2, 3 or 4 days, a week, two weeks or month. The same switch sits above the timeline itself. From a week up the legacy key resourceTimelineWeekMode is written as well, for older bundles.
Hide status panelhideStatusPaneloffHides the legend with the status colours and counters under the toolbar.
Enabled view modesenabledViewModesall sixWhich view buttons the user gets. An empty list means all of them; clearing them all stores a sentinel that leaves only the default view.

Outside the component — platform level

FieldJSON keyDefaultWhat it changes
Configuration storeSynCalendarSettingsobjectOne row per calendar: SynCode is the element code, SynSettings the JSON. Every user of the calendar needs read access to it; the configuration is loaded from it each time the calendar opens.
Web serviceSynCalendarServiceSaveSettings, GetSchemaColumns, GetRecordsCountSaves the configuration, lists an object's columns for the settings panel and counts the records a filter matches. The gear is shown without any role check, so if only administrators may change a configuration, test with a regular user what the service allows.
Licence operationSynCalendarLicenselicenceOnly an explicit "no licence" answer replaces the board with the "License required" placeholder. The check fails open: when the licence service stays silent the calendar works, so a missing placeholder does not prove the licence is assigned.
System settingSynCalendarDebugModeboolean, offWhen on, the calendar writes [Calendar] diagnostics to the browser console: data loads, filters, the licence result and where the first day of the week came from. Real errors are logged in any case.
System settingDefaultFirstDayOfTheWeekplatformThe all-users default for the first day of the week. It is third in the chain below — after the component setting and the user's own profile.
User profileSysAdminUnit.WeekFirstDayCreatio 8.2+Each user's own first day of the week, chosen in their profile and stored in the WeekFirstDay lookup. The client reads it through the virtual SysUserProfile entity, which always returns the row of the logged-in user. The field appears in the profile only when the EnableWeekFirstDayConfiguration feature is on.

Where the first day of the week comes from

  1. The component setting First day of week, when a day is chosen there — it applies to everyone who sees this calendar.
  2. Otherwise the user's own choice in their Creatio profile (Creatio 8.2 and later): it is stored in SysAdminUnit.WeekFirstDay and read through the virtual SysUserProfile entity, so two people can see the same calendar starting on different days.
  3. Otherwise the system setting DefaultFirstDayOfTheWeek — the default for all users.
  4. Otherwise the day implied by the user's culture — the platform applies this and the step above itself, on the server.
  5. And if nothing is set at all, Monday.

EnableWeekFirstDayConfiguration is the Creatio feature that puts the field in the user profile; while it is off, the chain starts at the system setting. SynCalendarDebugMode makes the calendar write to the browser console which step of the chain won.

У дизайнері Freedom UI — панель «Calendar settings»

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Назва компонентаlabelCalendarЗаголовок над календарем; ним же підписано елемент у дизайнері.
Об'єктobjectName— не задано —Сутність, яку читає календар. Це запасне значення: діє, лише коли в збережених налаштуваннях немає schemaName. Список будується з SysSchema; без доступу до нього поле стає текстовим.
Колонка записуrecordColumnпорожньоКолонка об'єкта, що вказує на запис сторінки (наприклад, Account). Разом із Record Id звужує календар до записів, пов'язаних із відкритим записом.
Record IdrecordId$IdАтрибут сторінки з ідентифікатором поточного запису. На сторінці запису лишайте типове значення; на сторінці списку воно не використовується.
Папка / фільтрfolderId$CalFilterАтрибут сторінки з вибраними папками. Для динамічної папки календар читає її умови з SearchData; статична папка фільтрує через таблицю входження.
Застосувати налаштований фільтрexternalFilters … externalFilters5порожньоДо п’яти фільтрів, розміщених на сторінці (швидкі фільтри, дерево папок, налаштовані фільтри). Вибраний список зберігається в externalFilterSources; коли користувач змінює такий фільтр, календар перезавантажується з ним.
Код елементаconfigназва елементаКлюч, під яким конфігурація цього календаря зберігається в SynCalendarSettings. Два календарі з однаковим кодом мають спільну конфігурацію — давайте кожному свій.

Налаштування → Джерело даних

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Назва схемиschemaName— не задано —Об'єкт, який читає календар. Після вибору його колонки підставляються в усі списки колонок нижче.
Колонка датиdateColumn— не задано —Дата, на яку ставиться подія. Без неї календарю нема чого малювати.
Колонка часу початкуstartTimeColumnта сама, що колонка датиЧас початку події. Якщо не задано, його дає колонка дати.
Колонка часу закінченняendTimeColumn— не задано —Час закінчення. Він задає висоту події в сітках дня й тижня і перетворює багатоденну задачу на смугу в рядку «весь день».
Глобальний фільтрglobalFilterConditions[]Умови, що поєднуються (AND) з будь-яким іншим фільтром — зокрема з фільтрами сторінки та папкою. Доступні дванадцять операторів, від = і ∋ до ∅; ∅ і ≠∅ значення не потребують. Довідкова колонка пропонує свої записи як значення. Неповні умови під час збереження відкидаються.

Налаштування → Відображення

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Колонка заголовкуtitleColumn— не задано —Текст на події. Без нього подія показує лише час.
Колонка кольоруcolorColumn— не задано —Колір окремого запису (hex). Він переважає колір статусу, тож один запис можна виділити, не змінюючи статус.
Колонка описуdescriptionColumn— не задано —Другий рядок події та картки в агенді. HTML очищується.
Додаткові колонкиadditionalColumns[]Додаткові колонки у підказці події, діалозі дня та картці агенди. Обирайте їх чипами або введіть через кому, якщо список колонок не завантажився.
Колонка відповідальногоownerColumn— не задано —Довідкова колонка з відповідальним. Вона дає події аватар, а шкалі ресурсів — рядки, якщо групування не задано окремо.
Схема фотоownerPhotoSchemaзаповнюється автоматичноОб'єкт, що зберігає фото (наприклад, Contact або SysAdminUnit). Разом із наступним полем читається як шлях <схема>.<колонка> у рядку.
Колонка фотоownerPhotoColumnзаповнюється автоматичноКолонка із самим фото. Без фото календар малює ініціали відповідального.

Налаштування → Статус

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Колонка статусуstatusColumn— не задано —Колонка зі статусом. Без неї всі події малюються типовим кольором.
Схема довідника статусівstatusLookupSchemaтри вбудовані статусиДовідник, з якого беруться статуси (наприклад, ActivityStatus). Без нього календар використовує «Вільно», «Заброньовано» та «Завершено».
Колонка значення статусуstatusValueColumnзаповнюється автоматичноКолонка, значення якої зіставляється зі статусом запису (зазвичай Id).
Колонка відображення статусуstatusDisplayColumnзаповнюється автоматичноКолонка, яку видно в легенді та на чипі статусу (зазвичай Name).
Колонка кольору статусуstatusColorColumn— не задано —Колонка з кольором статусу у hex. Приймає також шлях StatusSchema.Column або EntitySchema.Owner.Column. Без неї календар сам призначає кожному статусу колір із вбудованої палітри.
Фільтр статусівstatusFilterусі статусиЯкі статуси взагалі завантажуються. Знятий тут статус зникає з усіх подань, а не лише з легенди.

Налаштування → Групування

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Колонка групуванняgroupByColumn— не задано —Довідкова колонка, значення якої стають рядками шкали ресурсів.
Схема довідника групgroupByLookupSchemaзаповнюється автоматичноОб'єкт, на який посилається ця колонка. Він дає назви рядків, а для клікабельної назви — запис, який відкривається.
Клікабельна назва ресурсуresourceNameClickableвимкненоРобить підпис рядка шкали ресурсів посиланням, що відкриває згрупований запис.

Налаштування → Зміни

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Показувати індикатор поза графікомshiftVisibilityEnabledвимкненоПозначає події, що випадають за межі робочого часу ресурсу, і додає позначку в легенду. Щоб це працювало, треба заповнити чотири поля нижче.
Схема змінshiftSchema— не задано —Об'єкт, у якому один рядок — один робочий інтервал ресурсу.
Колонка ресурсуshiftResourceColumn— не задано —Довідкова колонка цього об'єкта, що вказує на ресурс. Вона має вести до того самого запису, що й колонка групування, інакше зміну не буде знайдено.
Колонка дня тижняshiftDayOfWeekColumn— не задано —День тижня числом. Приймаються обидві нумерації — 0–6 від неділі та 1–7 від понеділка — і нормалізуються. Якщо не задано, день береться з дати початку зміни.
Колонка початку зміниshiftStartColumn— не задано —Початок інтервалу (колонка часу або дати-часу).
Колонка кінця зміниshiftEndColumn— не задано —Кінець інтервалу. Подія поза межами «початок–кінець» свого дня тижня позначається як поза графіком.

Налаштування → Поведінка

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Вигляд за замовчуваннямviewModeweekПодання, у якому відкривається календар: day, week, month, year, agenda або resource-timeline.
Перший день тижняfirstDayOfWeekавтоматичноФіксований перший день (0 = неділя … 6 = субота) для подань тижня й місяця, однаковий для всіх, хто бачить цей календар. Якщо лишити «автоматично», вирішує профіль користувача — див. блок нижче.
День починається зdayStartHour0 (00:00)Перша година, яку малюють сітки дня й тижня (0–23). Шкала ресурсів завжди лишає свої 24 години.
День закінчується оdayEndHour24 (24:00)Година, на якій сітка закінчується (1–24, не включно). Пара зберігається, лише якщо це не цілий день; кінець, не пізніший за початок, ігнорується — сітка повертається до 00:00–24:00.
Інтервал оновленняrefreshInterval0 — вимкненоАвтооновлення в секундах. Календар також перечитує дані на вимогу та за каналом повідомлень CalendarRefresh, тож короткий інтервал потрібен рідко.
Днів впередdaysAhead30Скільки днів даних завантажується навколо показаного періоду. Записи надходять сторінками по 150.
Тільки читанняreadOnlyвимкненоЗабороняє перетягування, зміну тривалості та створення подій на дошці. Відкривати запис і далі можна, а права користувача діють додатково.
Приймати зовнішні фільтриexternalFilterEnabledвимкненоЗбережена позначка, що календар очікує фільтр зі сторінки. Фільтри, підключені в дизайнері, застосовуються в будь-якому разі, тож сам прапорець нічого не змінює.
Ресурси: показувати днівresourceTimelineDays1Скільки показує шкала: 1, 2, 3 чи 4 дні, тиждень, два тижні або month. Той самий перемикач є над самою шкалою. Від тижня й більше додатково зберігається застарілий ключ resourceTimelineWeekMode — для старих збірок.
Приховати панель статусівhideStatusPanelвимкненоПриховує легенду з кольорами статусів і лічильниками під панеллю інструментів.
Доступні режими відображенняenabledViewModesусі шістьЯкі кнопки подань бачить користувач. Порожній список означає «усі»; якщо зняти всі, зберігається ознака, що лишає тільки подання за замовчуванням.

Поза компонентом — рівень платформи

ПолеКлюч JSONЗа замовчуваннямНа що впливає
Сховище конфігураціїSynCalendarSettingsоб'єктОдин рядок — один календар: SynCode — код елемента, SynSettings — JSON. Кожному користувачеві календаря потрібен доступ на читання: конфігурація читається звідси щоразу під час відкриття.
Веб-сервісSynCalendarServiceSaveSettings, GetSchemaColumns, GetRecordsCountЗберігає конфігурацію, віддає перелік колонок об’єкта для панелі налаштувань і рахує записи під фільтр. Шестірню видно без перевірки ролі, тож якщо змінювати конфігурацію мають лише адміністратори, перевірте під звичайним користувачем, що дозволяє сервіс.
Ліцензійна операціяSynCalendarLicenseліцензіяЛише явна відповідь «ліцензії немає» замінює дошку заглушкою «Потрібна ліцензія». Перевірка fail-open: якщо служба ліцензій мовчить, календар працює, тож відсутність заглушки не доводить, що ліцензію видано.
Системне налаштуванняSynCalendarDebugModeлогічне, вимкненоУвімкнене — календар пише в консоль браузера діагностику з міткою [Calendar]: завантаження даних, фільтри, результат перевірки ліцензії та звідки взято перший день тижня. Справжні помилки пишуться завжди.
Системне налаштуванняDefaultFirstDayOfTheWeekплатформаТипове значення першого дня тижня для всіх користувачів. У ланцюжку нижче воно третє — після налаштування компонента й особистого значення в профілі.
Профіль користувачаSysAdminUnit.WeekFirstDayCreatio 8.2+Особистий перший день тижня кожного користувача, вибраний у профілі та збережений у довіднику WeekFirstDay. Клієнт читає його через віртуальну сутність SysUserProfile, яка завжди повертає рядок користувача, що увійшов. Поле з’являється у профілі, лише коли ввімкнено функціональність EnableWeekFirstDayConfiguration.

Звідки береться перший день тижня

  1. Налаштування компонента «Перший день тижня», якщо там обрано день — воно діє для всіх, хто бачить цей календар.
  2. Інакше — особистий вибір користувача у профілі Creatio (від Creatio 8.2): він зберігається в SysAdminUnit.WeekFirstDay і читається через віртуальну сутність SysUserProfile, тож двоє людей можуть бачити той самий календар із різних днів.
  3. Інакше — системне налаштування DefaultFirstDayOfTheWeek, типове для всіх користувачів.
  4. Інакше — день, що випливає з культури користувача: цей крок і попередній платформа застосовує сама, на сервері.
  5. А якщо не задано нічого — понеділок.

EnableWeekFirstDayConfiguration — функціональність Creatio, яка додає поле у профіль користувача; поки її вимкнено, ланцюжок починається із системного налаштування. SynCalendarDebugMode змушує календар писати в консоль браузера, який крок ланцюжка спрацював.

В дизайнере Freedom UI — панель «Calendar settings»

ПолеКлюч JSONПо умолчаниюНа что влияет
Название компонентаlabelCalendarЗаголовок над календарём; им же подписан элемент в дизайнере.
ОбъектobjectName— не задано —Сущность, которую читает календарь. Это запасное значение: действует, только когда в сохранённых настройках нет schemaName. Список строится из SysSchema; без доступа к нему поле становится текстовым.
Колонка записиrecordColumnпустоКолонка объекта, указывающая на запись страницы (например, Account). Вместе с Record Id сужает календарь до записей, связанных с открытой записью.
Record IdrecordId$IdАтрибут страницы с идентификатором текущей записи. На странице записи оставьте значение по умолчанию; на странице списка оно не используется.
Папка / фильтрfolderId$CalFilterАтрибут страницы с выбранными папками. Для динамической папки календарь читает её условия из SearchData; статическая папка фильтрует через таблицу вхождения.
Применить настроенный фильтрexternalFilters … externalFilters5пустоДо пяти фильтров, размещённых на странице (быстрые фильтры, дерево папок, настроенные фильтры). Выбранный список хранится в externalFilterSources; когда пользователь меняет такой фильтр, календарь перезагружается с ним.
Код элементаconfigимя элементаКлюч, под которым конфигурация этого календаря хранится в SynCalendarSettings. Два календаря с одинаковым кодом имеют общую конфигурацию — давайте каждому свой.

Настройки → Источник данных

ПолеКлюч JSONПо умолчаниюНа что влияет
Название схемыschemaName— не задано —Объект, который читает календарь. После выбора его колонки подставляются во все списки колонок ниже.
Колонка датыdateColumn— не задано —Дата, на которую ставится событие. Без неё календарю нечего рисовать.
Колонка времени началаstartTimeColumnта же, что колонка датыВремя начала события. Если не задано, его даёт колонка даты.
Колонка времени окончанияendTimeColumn— не задано —Время окончания. Оно задаёт высоту события в сетках дня и недели и превращает многодневную задачу в полосу в строке «весь день».
Глобальный фильтрglobalFilterConditions[]Условия, объединяемые (AND) с любым другим фильтром — в том числе с фильтрами страницы и папкой. Доступны двенадцать операторов, от = и ∋ до ∅; ∅ и ≠∅ значения не требуют. Справочная колонка предлагает свои записи как значения. Неполные условия при сохранении отбрасываются.

Настройки → Отображение

ПолеКлюч JSONПо умолчаниюНа что влияет
Колонка заголовкаtitleColumn— не задано —Текст на событии. Без него событие показывает только время.
Колонка цветаcolorColumn— не задано —Цвет отдельной записи (hex). Он важнее цвета статуса, поэтому одну запись можно выделить, не меняя статус.
Колонка описанияdescriptionColumn— не задано —Вторая строка события и карточки в повестке. HTML очищается.
Дополнительные колонкиadditionalColumns[]Дополнительные колонки в подсказке события, диалоге дня и карточке повестки. Выбирайте их чипами или введите через запятую, если список колонок не загрузился.
Колонка ответственногоownerColumn— не задано —Справочная колонка с ответственным. Она даёт событию аватар, а шкале ресурсов — строки, если группировка не задана отдельно.
Схема фотоownerPhotoSchemaзаполняется автоматическиОбъект, хранящий фото (например, Contact или SysAdminUnit). Вместе со следующим полем читается как путь <схема>.<колонка> в строке.
Колонка фотоownerPhotoColumnзаполняется автоматическиКолонка с самим фото. Без фото календарь рисует инициалы ответственного.

Настройки → Статус

ПолеКлюч JSONПо умолчаниюНа что влияет
Колонка статусаstatusColumn— не задано —Колонка со статусом. Без неё все события рисуются цветом по умолчанию.
Схема справочника статусовstatusLookupSchemaтри встроенных статусаСправочник, из которого берутся статусы (например, ActivityStatus). Без него календарь использует «Свободно», «Забронировано» и «Завершено».
Колонка значения статусаstatusValueColumnзаполняется автоматическиКолонка, значение которой сопоставляется со статусом записи (обычно Id).
Колонка отображения статусаstatusDisplayColumnзаполняется автоматическиКолонка, которую видно в легенде и на чипе статуса (обычно Name).
Колонка цвета статусаstatusColorColumn— не задано —Колонка с цветом статуса в hex. Принимает также путь StatusSchema.Column или EntitySchema.Owner.Column. Без неё календарь сам назначает каждому статусу цвет из встроенной палитры.
Фильтр статусовstatusFilterвсе статусыКакие статусы вообще загружаются. Снятый здесь статус исчезает из всех представлений, а не только из легенды.

Настройки → Группировка

ПолеКлюч JSONПо умолчаниюНа что влияет
Колонка группировкиgroupByColumn— не задано —Справочная колонка, значения которой становятся строками шкалы ресурсов.
Схема справочника группgroupByLookupSchemaзаполняется автоматическиОбъект, на который ссылается эта колонка. Он даёт названия строк, а для кликабельного имени — запись, которая открывается.
Кликабельное имя ресурсаresourceNameClickableвыключеноДелает подпись строки шкалы ресурсов ссылкой, открывающей сгруппированную запись.

Настройки → Смены

ПолеКлюч JSONПо умолчаниюНа что влияет
Показывать индикатор вне графикаshiftVisibilityEnabledвыключеноОтмечает события, выпадающие за пределы рабочего времени ресурса, и добавляет отметку в легенду. Чтобы это работало, нужно заполнить четыре поля ниже.
Схема сменshiftSchema— не задано —Объект, в котором одна строка — один рабочий интервал ресурса.
Колонка ресурсаshiftResourceColumn— не задано —Справочная колонка этого объекта, указывающая на ресурс. Она должна вести к той же записи, что и колонка группировки, иначе смена не будет найдена.
Колонка дня неделиshiftDayOfWeekColumn— не задано —День недели числом. Принимаются обе нумерации — 0–6 от воскресенья и 1–7 от понедельника — и нормализуются. Если не задано, день берётся из даты начала смены.
Колонка начала сменыshiftStartColumn— не задано —Начало интервала (колонка времени или даты-времени).
Колонка конца сменыshiftEndColumn— не задано —Конец интервала. Событие вне границ «начало–конец» своего дня недели помечается как вне графика.

Настройки → Поведение

ПолеКлюч JSONПо умолчаниюНа что влияет
Вид по умолчаниюviewModeweekПредставление, в котором открывается календарь: day, week, month, year, agenda или resource-timeline.
Первый день неделиfirstDayOfWeekавтоматическиФиксированный первый день (0 = воскресенье … 6 = суббота) для представлений недели и месяца, одинаковый для всех, кто видит этот календарь. Если оставить «автоматически», решает профиль пользователя — см. блок ниже.
День начинается сdayStartHour0 (00:00)Первый час, который рисуют сетки дня и недели (0–23). Шкала ресурсов всегда оставляет свои 24 часа.
День заканчивается вdayEndHour24 (24:00)Час, на котором сетка заканчивается (1–24, не включительно). Пара сохраняется, только если это не целые сутки; конец, не превышающий начало, игнорируется — сетка возвращается к 00:00–24:00.
Интервал обновленияrefreshInterval0 — выключеноАвтообновление в секундах. Календарь также перечитывает данные по требованию и по каналу сообщений CalendarRefresh, поэтому короткий интервал нужен редко.
Дней вперёдdaysAhead30Сколько дней данных загружается вокруг показанного периода. Записи приходят страницами по 150.
Только чтениеreadOnlyвыключеноЗапрещает перетаскивание, изменение длительности и создание событий на доске. Открывать запись по-прежнему можно, а права пользователя действуют дополнительно.
Принимать внешние фильтрыexternalFilterEnabledвыключеноСохранённая отметка, что календарь ожидает фильтр со страницы. Фильтры, подключённые в дизайнере, применяются в любом случае, поэтому сам флажок ничего не меняет.
Ресурсы: показывать днейresourceTimelineDays1Сколько показывает шкала: 1, 2, 3 или 4 дня, неделя, две недели или month. Тот же переключатель есть над самой шкалой. От недели и больше дополнительно сохраняется устаревший ключ resourceTimelineWeekMode — для старых сборок.
Скрыть панель статусовhideStatusPanelвыключеноСкрывает легенду с цветами статусов и счётчиками под панелью инструментов.
Доступные режимы отображенияenabledViewModesвсе шестьКакие кнопки представлений видит пользователь. Пустой список означает «все»; если снять все, сохраняется признак, оставляющий только представление по умолчанию.

Вне компонента — уровень платформы

ПолеКлюч JSONПо умолчаниюНа что влияет
Хранилище конфигурацииSynCalendarSettingsобъектОдна строка — один календарь: SynCode — код элемента, SynSettings — JSON. Каждому пользователю календаря нужен доступ на чтение: конфигурация читается отсюда при каждом открытии.
Веб-сервисSynCalendarServiceSaveSettings, GetSchemaColumns, GetRecordsCountСохраняет конфигурацию, отдаёт перечень колонок объекта для панели настроек и считает записи под фильтр. Шестерёнка видна без проверки роли, поэтому если менять конфигурацию должны только администраторы, проверьте под обычным пользователем, что разрешает сервис.
Лицензионная операцияSynCalendarLicenseлицензияТолько явный ответ «лицензии нет» заменяет доску заглушкой «Требуется лицензия». Проверка fail-open: если служба лицензий молчит, календарь работает, поэтому отсутствие заглушки не доказывает, что лицензия выдана.
Системная настройкаSynCalendarDebugModeлогическое, выключеноВключённое — календарь пишет в консоль браузера диагностику с меткой [Calendar]: загрузку данных, фильтры, результат проверки лицензии и откуда взят первый день недели. Настоящие ошибки пишутся всегда.
Системная настройкаDefaultFirstDayOfTheWeekплатформаЗначение первого дня недели по умолчанию для всех пользователей. В цепочке ниже оно третье — после настройки компонента и личного значения в профиле.
Профиль пользователяSysAdminUnit.WeekFirstDayCreatio 8.2+Личный первый день недели каждого пользователя, выбранный в профиле и сохранённый в справочнике WeekFirstDay. Клиент читает его через виртуальную сущность SysUserProfile, которая всегда возвращает строку вошедшего пользователя. Поле появляется в профиле, только когда включена функциональность EnableWeekFirstDayConfiguration.

Откуда берётся первый день недели

  1. Настройка компонента «Первый день недели», если там выбран день — она действует для всех, кто видит этот календарь.
  2. Иначе — личный выбор пользователя в профиле Creatio (начиная с Creatio 8.2): он хранится в SysAdminUnit.WeekFirstDay и читается через виртуальную сущность SysUserProfile, поэтому двое людей могут видеть один и тот же календарь с разных дней.
  3. Иначе — системная настройка DefaultFirstDayOfTheWeek, значение по умолчанию для всех пользователей.
  4. Иначе — день, вытекающий из культуры пользователя: этот шаг и предыдущий платформа применяет сама, на сервере.
  5. А если не задано ничего — понедельник.

EnableWeekFirstDayConfiguration — функциональность Creatio, которая добавляет поле в профиль пользователя; пока она выключена, цепочка начинается с системной настройки. SynCalendarDebugMode заставляет календарь писать в консоль браузера, какой шаг цепочки сработал.

10

Setting → result

Screens taken from a running stand: each one says which setting produced what is on it.

Default view = Week
Real screen
Default view = WeekSeven day columns over the hour grid. Multi-day tasks sit in the all-day lane on top, timed events take their status colour, the legend counts them per status, and the blue line marks the current time.
Вигляд за замовчуванням = «Тиждень»Сім колонок днів над сіткою годин. Багатоденні задачі — у смузі «весь день» угорі, події з часом мають колір свого статусу, легенда рахує їх за статусами, а синя лінія позначає поточний час.
Вид по умолчанию = «Неделя»Семь колонок дней над сеткой часов. Многодневные задачи — в полосе «весь день» сверху, события со временем имеют цвет своего статуса, легенда считает их по статусам, а синяя линия отмечает текущее время.
View = Day
Real screen
View = DayOne day at full height. The current-time line is drawn only while now falls inside the visible hour range.
Подання = «День»Один день на всю висоту. Лінію поточного часу видно, лише поки «зараз» потрапляє у видимий діапазон годин.
Представление = «День»Один день на всю высоту. Линию текущего времени видно, только пока «сейчас» попадает в видимый диапазон часов.
View = Month
Real screen
View = MonthA day shows the first events and collapses the rest into “+N more”; a task that spans days runs as one bar across them. The tint of an event is its status colour.
Подання = «Місяць»День показує перші події, решта згортається в «+N more»; багатоденна задача проходить однією смугою. Відтінок події — колір її статусу.
Представление = «Месяц»День показывает первые события, остальные сворачиваются в «+N more»; многодневная задача проходит одной полосой. Оттенок события — цвет её статуса.
View = Year
Real screen
View = YearTwelve mini-months; a day with events carries a dot, today is a filled circle. Clicking a day drills into it.
Подання = «Рік»Дванадцять міні-місяців; день із подіями має крапку, сьогодні — залитий кружечок. Клік по дню відкриває його.
Представление = «Год»Двенадцать мини-месяцев; день с событиями помечен точкой, сегодня — залитый кружок. Клик по дню открывает его.
View = Agenda, with owner photos and additional columns
Real screen
View = Agenda, with owner photos and additional columnsA chronological list grouped into day cards with a per-day counter. The avatar comes from the owner photo columns, the chip from the status columns, and the fields under it are exactly the “Additional columns” chosen on the Display tab.
Подання = «Агенда», з фото відповідальних і додатковими колонкамиХронологічний список, згрупований у картки днів із лічильником. Аватар дають колонки фото відповідального, чип — колонки статусу, а поля під ним — саме «Додаткові колонки» з вкладки «Відображення».
Представление = «Повестка», с фото ответственных и дополнительными колонкамиХронологический список, сгруппированный в карточки дней со счётчиком. Аватар дают колонки фото ответственного, чип — колонки статуса, а поля под ним — именно «Дополнительные колонки» с вкладки «Отображение».
View = Resources, grouped by the owner
Real screen
View = Resources, grouped by the ownerOne row per value of the grouping column, with the photo, the event count and — because “Clickable resource name” is on — a name that opens the record. The range switcher above repeats the “Resources: days shown” setting.
Подання = «Ресурси», групування за відповідальнимОдин рядок — одне значення колонки групування, з фото, кількістю подій і — оскільки ввімкнено «Клікабельна назва ресурсу» — назвою, що відкриває запис. Перемикач діапазону вгорі повторює налаштування «Ресурси: показувати днів».
Представление = «Ресурсы», группировка по ответственномуОдна строка — одно значение колонки группировки, с фото, количеством событий и — поскольку включено «Кликабельное имя ресурса» — именем, открывающим запись. Переключатель диапазона сверху повторяет настройку «Ресурсы: показывать дней».
Settings → Data source
Real screen
Settings → Data sourceThe object and its date columns; under them the global filter, whose conditions are ANDed with every other filter.
Налаштування → Джерело данихОб'єкт і його колонки дат; під ними — глобальний фільтр, умови якого поєднуються (AND) з усіма іншими фільтрами.
Настройки → Источник данныхОбъект и его колонки дат; под ними — глобальный фильтр, условия которого объединяются (AND) со всеми остальными фильтрами.
Settings → Display
Real screen
Settings → DisplayTitle, colour and description columns, the additional columns as chips, and the owner photo trio — the ⚡ auto mark means the component filled the field in itself.
Налаштування → ВідображенняКолонки заголовка, кольору та опису, додаткові колонки чипами й трійка полів фото відповідального — позначка ⚡ auto означає, що компонент заповнив поле сам.
Настройки → ОтображениеКолонки заголовка, цвета и описания, дополнительные колонки чипами и тройка полей фото ответственного — пометка ⚡ auto означает, что компонент заполнил поле сам.
Settings → Status
Real screen
Settings → StatusThe status column with its lookup and the value, display and colour columns; below, the status filter decides which statuses are loaded at all.
Налаштування → СтатусКолонка статусу з довідником і колонками значення, назви та кольору; нижче фільтр статусів вирішує, які статуси взагалі завантажуються.
Настройки → СтатусКолонка статуса со справочником и колонками значения, названия и цвета; ниже фильтр статусов решает, какие статусы вообще загружаются.
Settings → Grouping
Real screen
Settings → GroupingThe column and the lookup that form the rows of the resource timeline, plus the switch that turns the row name into a link.
Налаштування → ГрупуванняКолонка й довідник, що формують рядки шкали ресурсів, та перемикач, який робить назву рядка посиланням.
Настройки → ГруппировкаКолонка и справочник, формирующие строки шкалы ресурсов, и переключатель, делающий название строки ссылкой.
Settings → Shifts
Real screen
Settings → ShiftsThe working-hours object and its four columns. The day-of-week column is optional: without it the day is derived from the shift start date.
Налаштування → ЗміниОб'єкт робочого часу та його чотири колонки. Колонка дня тижня необов'язкова: без неї день береться з дати початку зміни.
Настройки → СменыОбъект рабочего времени и его четыре колонки. Колонка дня недели необязательна: без неё день берётся из даты начала смены.
Settings → Behavior
Real screen
Settings → BehaviorEverything that is neither data nor colour: the default view, the first day of week, the visible hour range, refresh and days ahead, read-only, the timeline range, the legend and the list of enabled views.
Налаштування → ПоведінкаУсе, що не дані й не кольори: вигляд за замовчуванням, перший день тижня, видимий діапазон годин, оновлення та «днів вперед», тільки читання, діапазон шкали, легенда й перелік доступних подань.
Настройки → ПоведениеВсё, что не данные и не цвета: вид по умолчанию, первый день недели, видимый диапазон часов, обновление и «дней вперёд», только чтение, диапазон шкалы, легенда и перечень доступных представлений.
“Day starts at” 08:00, “Day ends at” 19:00 → the grid shows only the working day
Real screen
“Day starts at” 08:00, “Day ends at” 19:00 → the grid shows only the working dayThe same week as the first screenshot. The hour scale now starts at 08:00 and ends at 19:00, so the empty night hours are gone; the all-day lane and the resource timeline are not affected.
«День починається з» 08:00, «День закінчується о» 19:00 → сітка показує лише робочий деньТой самий тиждень, що й на першому знімку. Шкала годин тепер починається о 08:00 і закінчується о 19:00, тож порожні нічні години зникли; смуга «весь день» і шкала ресурсів не змінюються.
«День начинается с» 08:00, «День заканчивается в» 19:00 → сетка показывает только рабочий деньТа же неделя, что и на первом снимке. Шкала часов теперь начинается в 08:00 и заканчивается в 19:00, поэтому пустые ночные часы исчезли; полоса «весь день» и шкала ресурсов не меняются.
“First day of week” = Monday → the week starts on Monday for everyone
Real screen
“First day of week” = Monday → the week starts on Monday for everyoneThe same calendar as the first screenshot, where the week started on Sunday because that is what this user chose in their profile. A fixed day in the component setting overrides the profile for every user of this calendar.
«Перший день тижня» = понеділок → тиждень починається з понеділка для всіхТой самий календар, що й на першому знімку, де тиждень починався з неділі — бо саме так обрав користувач у своєму профілі. Фіксований день у налаштуванні компонента переважає профіль для всіх користувачів цього календаря.
«Первый день недели» = понедельник → неделя начинается с понедельника для всехТот же календарь, что и на первом снимке, где неделя начиналась с воскресенья — потому что так выбрал пользователь в своём профиле. Фиксированный день в настройке компонента важнее профиля для всех пользователей этого календаря.
The Designer setup area
Real screen
The Designer setup area“Calendar settings” for the selected element: the name and the object, the record and folder bindings, the connected page filter and the element code the configuration is stored under.
Область налаштувань у дизайнері«Calendar settings» для вибраного елемента: назва та об’єкт, прив’язки запису й папки, підключений фільтр сторінки та код елемента, під яким зберігається конфігурація.
Область настроек в дизайнере«Calendar settings» для выбранного элемента: название и объект, привязки записи и папки, подключённый фильтр страницы и код элемента, под которым хранится конфигурация.
11

Designer setup area

When you place the calendar on a Freedom UI page, its setup area (property panel) lets an admin configure the essentials without code — the object it reads, a title, and which page filters feed it.

Component name

A title shown above the calendar; it also labels the element in the designer.

Object

Pick the entity the calendar reads from a searchable dropdown.

Connect page filters

Bind the calendar to filters placed on the page — quick filters, folder tree, pre-configured filters — one or several.

Element code

The configuration key; prefilled from the element and editable. Record Id and folder default to the page bindings.

12

Filtering

Beyond the status toggles, the calendar can be narrowed by filters from the page and by an always-on global filter — all combined with its own date/record/folder scope.

Page filters, live

Filters connected in the designer apply at runtime — change one and the calendar reloads with it applied.

Multiple filters

Connect several page filters at once; they are combined (AND) into one query.

Global filter

Add always-on conditions (column · operator · value) in Settings; they narrow the data on top of every other filter.

Status filter

Toggle statuses in the panel to show only the events you need.

Folders

Pick a folder in the page's folder tree and the calendar shows only its records — a general folder by its members, a dynamic folder by its saved conditions; several folders combine with OR. A filter the calendar's own object cannot read is dropped instead of breaking the query, so the calendar still opens.

Quick, search and period filters

Quick filters (such as “My tasks” or “Show canceled”), the search box and a date-period quick filter on the page all reach the calendar. When the page sets a period, the calendar jumps to its start and picks the view that fits its length — day, week, month or year.

13

Shift visibility

Map a working-hours (shift) source and the calendar highlights activities that fall outside a resource’s scheduled hours — making over- and off-schedule work easy to spot in the resource timeline.

Working-hours source

Map a shift schema: resource, start and end. The day of week is optional — derived from the shift date when not set.

Out-of-shift indicator

Events outside the resource’s working hours are visually flagged.

Per resource

Works in the resource timeline, where activities are grouped by owner.

14

Localization & access

The interface ships in three languages and follows the user’s Creatio culture automatically. A valid license is required; diagnostic logging is gated behind a system setting.

EN · UK · RU

~210 strings per language; the language follows the user culture.

License

The SynCalendar license is checked; without it a notice is shown.

Debug mode

The SynCalendarDebugMode setting turns on console diagnostics.

Add a language

Create a locale file, extend the map, and map the culture — that’s it.