Skip to main content
Print

Календарь

С помощью компонента “Календарь” пользователь может создавать, редактировать и просматривать события. Это может быть полезно для планирования встреч, поставок, выставок, собраний  и любого типа задач. 

Для работы с компонентом необходимо предварительно подготовить структуру данных. Данная структура будет выступать источником/хранилищем данных о задачах. А так-же связью с карточками (создания, редактирования, просмотра) в соответствии с типом задачи. Задачи могут иметь произвольный тип, заданный разработчиком ФП. Например: звонок, встреча, поставка, выставка и т.д..

 

Структура данных

Схема данных

Таблица “Задачи” «tasks». Содержит информацию о задачах

Наименование Описание Тип
1 title Заголовок задачи Короткий текст
2 start_date Дата/ время начала задачи Дата и время
3 end_date Дата/ время завершения задачи Дата и время
4 duration Продолжительность задачи Целое число
5 description Описание задачи Многострочный текст
6 type Тип задачи Связь с таблицей (Многие к Одному) Типы задач
7 tasks_status Статус задачи Связь с таблицей (Многие к Одному) Статусы
8 calendars Календари Связь с таблицей (Многие ко Многим) Календари
9 priority Приоритет задачи Связь с таблицей (Многие к Одному) Приоритеты задач
10 color Цвет задачи * Короткий текст
11 all_day Признак того что событие продлится весь день Логический
12 implementer Исполнитель задачи Короткий текст
13 author  Автор задачи Короткий текст

Таблица “Типы задач” «tasks_type». Содержит информацию о типах задача

Наименование Описание Тип
1 type_name Название типа задачи Короткий текст
2 description Описание Многострочный текст
3 tasks Список задач Связь с таблицей (Один ко Многим) Задачи
4 color Цвет отображения типа * Короткий текст
5 icon Иконка для отображения типа Короткий текст

Таблица “Статусы задач” «tasks_status». Информация о статусах

Наименование Описание Тип
1 title Название статуса Короткий текст
2 description Описание Многострочный текст
3 tasks Список задач Связь с таблицей (Один ко Многим) Задачи
4 color Цвет отображения * Короткий текст
5 icon Иконка для отображения Короткий текст
6 sequence_number Порядковый номер статуса Целое число

Таблица “Приоритеты задач” «tasks_priority»

Наименование Описание Тип
1 title Название статуса Короткий текст
2 description Описание Многострочный текст
3 tasks Список задач Связь с таблицей (Один ко Многим) Задачи
4 color Цвет отображения * Короткий текст
5 icon Иконка для отображения Короткий текст
6 sequence_number Порядковый номер приоритета (чем меньше, тем выше приоритет) Целое число

Таблица “Календари” «calendars». Группа календарей

Таблицасодержит информацию о календарях. Служит источником данных для компонента “Календарь”. В качестве источника может быть выбрано  несколько моделей данных с календарями. 

Наименование Описание Тип
1 title Название Короткий текст
2 description Описание Многострочный текст
3 tasks Список задач Связь с таблицей (Многие ко Многим) Задачи
4 color Цвет отображения * Короткий текст
5 icon Иконка для отображения Короткий текст
6 author Автор календаря Короткий текст

* Для заполнения полей с именем “color” (цвет) следует использовать шестнадцатеричный код цвета (#FF00FF). Таблица HTML цветов: https://colorscheme.ru/html-colors.html

Добавление компонента на страницу

Создание, редактирование, удаления события

Добавление новой задачи

Для добавления новой задачи необходимо: 

  • предварительно подготовить страницу в Конструкторе форм;
  • на странице разместить компонент добавления новой записи (например: “Форма”);
  • выбрать в качестве источника, таблицу содержащую данные о задачах
  • далее, в Настройках – выпадающий список: “Страница создания” компонента “Календарь”, выбрать нужную страницу.
Настройка страницы создания задачи

 Теперь, при щелчке в области календаря или кнопке “Добавить событие”, будет открываться фрейм с указанной страницей создания новой задачи.   

Добавление задачи 

Если настройки “Страницы создания” и/или “Страницы редактирования” (см. далее)  оставить не заполненными, то будет открываться окно создания/ редактирования события “по умолчанию” (с минимальным набором редактируемых полей).

  

В настройках компонента можно задать размер фрейма в пикселях.

Изменение размера фрейма

Редактирование задачи

Для редактирования задачи из Календаря выполните следующие действия:

  1. Создайте страницу с компонентами для редактирования записи в таблице (например: “Форма”). Добавьте параметр страницы с именем “id” (обязательно). В этот параметр будет передаваться идентификатор задачи. Страниц может быть несколько. Допустим если необходимо для каждого типа задачи открывать уникальную страницу редактирования;
  2. Создайте процедуру, которая в качестве выходного параметра будет возвращать ключ страницы редактирования. Наименование выходного параметра, например: “pageKey”. На вход процедуры, в параметр “id”, передаётся идентификатор задачи;
  3. Процедура должна возвращать ключ страницы в зависимости от условия. Например: для разного типа задач “Встреча” или “Поставка товара на склад” будет открываться уникальная страница редактирования.
Процедура выбора страницы редактирования

4. В настройках компонента “Календарь” выберите созданную процедуру: Настройки → Настройки →  Страница редактирования

Вид календаря: “Мини”

В настройках компонента “Календарь” выберите: Настройки →  Вид календаря → Мини

Настройка повторяющихся событий

Для создания повторяющегося события заполните поле recurrence_rule в таблице-источнике задач

Инструкция: как задать правило повторения события

Поле recurrence_rule определяет, как часто и каким образом событие повторяется. Вы можете использовать простые слова для базовых случаев или полный формат iCalendar (RFC 5545) для гибкой настройки.

 

1. Простой способ (для частых случаев)

Если вам нужно стандартное повторение, просто укажите одно из слов:

Значение Что получится
daily каждый день
weekly каждую неделю
monthly каждый месяц
yearly каждый год

2. Полный формат (гибкая настройка)

Используйте параметры через точку с запятой. Обязателен параметр FREQ:

text

FREQ=…; параметр2=…; параметр3=…

2.1 Базовая частота (FREQ)
Значение Описание
FREQ=DAILY каждый день
FREQ=WEEKLY каждую неделю
FREQ=MONTHLY каждый месяц
FREQ=YEARLY каждый год

 

2.2 Интервал повторения (INTERVAL)

Позволяет пропускать дни, недели, месяцы:

Пример правила Что получится
FREQ=DAILY;INTERVAL=2 каждые 2 дня
FREQ=WEEKLY;INTERVAL=2 каждые 2 недели
FREQ=MONTHLY;INTERVAL=3 каждые 3 месяца

 

2.3 Выбор конкретных дней недели (BYDAY)

Коды дней: MO TU WE TH FR SA SU

Пример правила Что получится
FREQ=WEEKLY;BYDAY=MO каждый понедельник
FREQ=WEEKLY;BYDAY=MO,WE,FR понедельник, среда, пятница
FREQ=WEEKLY;BYDAY=SA,SU суббота и воскресенье
FREQ=MONTHLY;BYDAY=1MO первый понедельник месяца
FREQ=MONTHLY;BYDAY=-1FR последняя пятница месяца

 

2.4 Выбор конкретных чисел месяца (BYMONTHDAY)
Пример правила Что получится
FREQ=MONTHLY;BYMONTHDAY=1 1-го числа каждого месяца
FREQ=MONTHLY;BYMONTHDAY=15 15-го числа каждого месяца
FREQ=MONTHLY;BYMONTHDAY=-1 последний день каждого месяца

 

2.5 Выбор конкретных месяцев (BYMONTH)
Пример правила Что получится
FREQ=YEARLY;BYMONTH=1;BYMONTHDAY=1 1 января каждого года
FREQ=YEARLY;BYMONTH=12;BYMONTHDAY=31 31 декабря каждого года

 

2.6 Ограничение количества повторений (COUNT)
Пример правила Что получится
FREQ=DAILY;COUNT=5 5 дней подряд (начиная с даты события)
FREQ=WEEKLY;BYDAY=MO;COUNT=10 10 понедельников

 

2.7 Окончание по дате (UNTIL)

Дата указывается в формате ГГГГММДД.

Пример правила Что получится
FREQ=DAILY;UNTIL=20251231 каждый день до 31 декабря 2025 года
FREQ=WEEKLY;BYDAY=MO;UNTIL=20251231 каждый понедельник до 31 декабря 2025 года

3. Сложные примеры (всё вместе)

 

Пример правила Что получится
FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,FR каждые две недели по понедельникам и пятницам
FREQ=MONTHLY;BYDAY=1MO;COUNT=12 первый понедельник каждого месяца, всего 12 раз
FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=1 1 сентября каждого года
FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR каждый рабочий день (пн–пт)

Важные замечания

Если вы указываете полный формат, не смешивайте его с простыми значениями (daily, weekly и т.д.) – выберите что‑то одно.

Параметры BYDAY, BYMONTHDAY, BYMONTH можно комбинировать в одном правиле.

COUNT и UNTIL нельзя использовать одновременно – выберите одно ограничение.

При указании дней недели в месячном повторении (FREQ=MONTHLY;BYDAY=1MO) число (1, 2, -1) означает номер недели в месяце.

Теперь вы можете составить любое правило повторения для вашего календаря.

 

Метки:

Оставить комментарий

Оглавление