⟵ сюдатуда ⟶
  • Мастеркласс 1
  • Основные линии
  • Как не тратить время на разработку зомби-систем
  • Основные линии

    Вступление

    Общий принцип

    Основные линии

    В любом решении можно выделить основную линию или несколько. Например взглянем на такой пример:

    Мы проводим мероприятия, записываем на них учащихся и записываем кто и за какое мероприятие оплатил.

    Жирным я выделил две основные линии этого решения — мероприятия и оплаты.

    Основной линией можно назвать те данные, которые будут бесконечно и последовательно добавлятся в ваше решение (ну пока работает бизнес его эксплуатирующий).

    А как же учащиеся? они же тоже будут добавлятся бесконечно. Действительно так, учащиеся могут быть основной линией по вашему желанию, никакого железного ограничения нет тк это просто принцип думать про решение. Вы создатель вашего решения и вы принимаете решение так это будет или иначе.

    Моя рекомендация — выделить в качестве основных линий только самое необходимое. Учащиеся в этом случае могут даже не иметь отдельной таблицы, а записываться внутрь мероприятия.

    Ок, как теперь это превращать в решение?

    Каждая основная линия — это отдельная таблица.

    В тотум есть разные типы таблиц, но для основных линий подходят только два типа — циклов и простая.

    В каком случае какую выбрать?

    Если в каждой записи в таблице основной линии будет не очень много полей (до 30) — то это может быть простая таблица.

    Если больше 30 или предполагается нестрочное оформление каждой записи в таблице основной линии — то циклов.

    Таблица циклов — это простая таблица у которой есть расширение на несколько таблиц для каждой строки. Те внутрь каждой строки можно прицепить несколько таблиц.

    Давайте прикинем, как будет в типах таблиц выглядеть это решение:

    Arch princip

    Здесь мы используем комплект из циклов и одной таблице внутри цикла для основной линии мероприятий и простую таблицу для основной линии оплат.

    Учащихся мы записываем внутрь мероприятия, а в таблице оплат делаем привязку к мероприятию (строке в Мероприятиях) и учащемуся (строке в Мероприятии).

    Каталоги

    Сейчас мы учащегося буквами записываем прямо в мероприятии, но ведь человек может придти на несколько наший мероприятий и мы наверняка захотим узнать куда он ходил, сколько всего заплатил итп.

    Для того, что бы потом это сделать, нам надо записать учащегося в отдельную таблицу — справочник и в мероприятии уже записать его не буквами в строковое поле, а сослаться на строчку в справочнике учащихся через Селект.

    Каталоги как и основные линии — это простые и циклов.

    Только основные линии надо приоритетно рассматривать как таблицы циклов, а каталоги как простые таблицы.

    Циклов используются в каталогах, по аналогичной причине, что и в основных линиях — когда к одной строке необходимо прикрепить большое количество данных. Например это карточка производственной операции в которой надо перечислить общие параметры и список компонент.

    Есть подход, который позволяет использовать простые таблицы для таких задач, записывая расширенные параметры в техническое поле. Применяется когда расширенные данные есть, но их как-то маловато для того, чтобы создавать таблицу циклов. Мы этот подход рассмотрим в одном из мастерклассов.

    Добавим в это решение каталог с Учащимися:

    Arch princip 2

    Промежуточные таблицы

    Например у нас такое усложнение: мы хотим, что бы у нас была возможность из мероприятия открыть список учащихся, которые были на каком-то другом мероприятии, выбрать в нем несколько человек и сразу нескольких записать на текущее.

    Тип таблиц для таких промежуточных задач — временные таблицы. Те мы в мероприятии делаем кнопку, которая открывает такую временную таблицу, передаем в нее данные и из нее выполняем обратное действие — массовое добавление учащихся в мероприятие.

    Получается так:

    Arch princip 3

    Отчеты

    Теперь у нас уже есть работающее решение, в котором перемещаются данные и мы хотим создать отчеты.

    Для отчетов в основном используются два типа — временные и циклов.

    • Временные — подходят для динамических отчетов в которых мы задаем необходимый произвольный интервал. Тк в отчет одновременно может смотреть несколько пользователей, каждй в свой интервал — используется временная, а не расчетная в дереве! Дашборды относятся сюда же.

    • Циклов — используется для отчетов с типизированным интервалом. Например для отчетов за месяц — в этом случае у нас каждая строка — это месяц. В этом случае пользователи заходя в отчет смотрят в один и тот же фиксированный интервал.

      Так же циклов используется для агрегирования промежуточных значений. Если у нас крупное решение с сотнями тысяч строк в основнх линиях в каждом месяце, то формирование годового отчета может занимать большое время. Но если у нас уже рассчитаны и записаны в циклах значения по месяцам — это кратно быстрее.

    Дополним наше решение отчетами:

    Arch princip 4

    Разберем основные линии для более сложного решения

    Предположим, что нам нужна система, которая обрабатывает заказы/проекты, выставление счетов, отгрузки, денежный оборот, движение ТМЦ по проектам и складские остатки.

    Основные линии:

    • Заказы/проекты (циклов)
    • Счета (циклов)
    • Накладные (циклов)
    • Оплаты (простая)
    • Движения по складу (простая)

    Каталоги:

    • Клиенты (простая)
    • Склад/прайс (простая)
    • прочая мелочевка (простые)

    Промежуточные:

    • Таблицы для массовых добавлений (временные)

    Отчеты:

    Временные или циклов в зависимости от задачи.

    Если необходимо усложнить: простые —> циклы.

    Если упростить: циклы —> простые.

    Пример этого решения в собрано в виде можно посмотреть на демо-сервере.

    С чего начинать разработку решения?

    С главной основной линии!

    Потом добавить для нее справочники.

    Потом обслуживающую второстепенную основную линию.

    Потом добавить справочники для второстепенной линии.

    Итд