⟵ сюдатуда ⟶
  • Установка
  • Конфигурация на Ubuntu
  • Обновления
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Типы таблиц
  • Простая
  • Циклов
  • Расчетная в цикле/дереве
  • Временная
  • Автоматическая связь таблиц в циклах
  • Версии расчетных таблиц в циклах
  • Настройки таблиц
  • Название (title)
  • Name таблицы (name)
  • Тип таблицы (type)
  • Категория (category)
  • Положение в дереве (tree_node_id)
  • Сортировка в дереве (sort)
  • Иконка (icon)
  • Актуальность (actual)
  • Перезапуск выполнения действий и кодов
  • Поколоночный пересчет (calculate_by_columns)
  • Основное поле (main_field)
  • Поле сортировки (order_field)
  • Сортировать по полю порядок (with_order_field)
  • Ролевой доступ на изменение порядка (order_roles)
  • Пересчет при изменении порядка (recalc_in_reorder)
  • Показывать новую строку по месту сортировки (new_row_in_sort)
  • Обратный порядок (order_desc)
  • Добавление строк (insertable)
  • Ролевой доступ на добавление (insert_roles)
  • Удаление строк (deleting)
  • Ролевой доступ на удаление (delete_roles)
  • Дублирование строк (duplicating)
  • Ролевой доступ на дублирование (duplicate_roles)
  • Код при дублировании из web-интерфейса (on_duplicate)
  • Код действия таблицы (default_action)
  • Панель (panel)
  • Роли с доступом к CSV (csv_roles)
  • Роли с редактированием через CSV (csv_edit_roles)
  • Индексы (indexes)
  • Тип доступа к циклам (cycles_access_type)
  • Форматирование строки (row_format)
  • Форматирование таблицы (table_format)
  • Описание (description)
  • Таймер удаления строк (delete_timer)
  • Роли на изменение (edit_roles)
  • Роли на чтение (read_roles)
  • Роли «скрыть в дереве» (tree_off_roles)
  • Актуальность настроек полей (fields_actuality)
  • Наборы полей (fields_sets)
  • Разбивка на страницы (pagination)
  • Вид панелями (panels_view)
  • Ширина колонки при повороте таблицы (rotated_view)
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Деревья
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Анонимные таблицы
  • Внешние формы
  • Экспорт и импорт таблиц
  • Системные таблицы
  • Подключение функций
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • Типы таблиц и их настройки

    Типы таблиц

    Простая

    Хранение статической информации: списки, записи действий, продаж, плана, табелей. Прайсы, оплаты, итп.

    Хранение большого объема данных (миллионы строк).

    Особенности:

    • Строчная единица пересчета.

    • Хедер пересчитывается каждый раз, один раз в цикле пересчета.

    • Есть префильтр, позволяющий передавать в браузер только определенные строки.

    • Нет футера.

    Циклов

    Каждая строчка в таблице циклов связана с данными расчетных таблиц, относящихся к этому циклу.

    Используется для создания таблиц сделок, периодических отчетов, табелей, циклических планов итд.

    Особенности:

    • Каждая строка отражает набор расчетных таблиц содержащих индивидуальные данные для каждого цикла.

    • Строчная единица пересчета.

    • Расчетные таблицы в циклах могут иметь версии полей — таким образом можно обеспечивать эволючионное изменение логики внутри циклов.

    • Каждая строка цикла имеет информацию о том, кто имеет доступ на просмотр или редактирование цикла.

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

      • Видны только свои циклы.
      • Видны чужие циклы без возможности открыть.
      • Видны чужие циклы с возможностью просмотра их содержимого.
      • Все циклы доступны на редактирование.

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

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

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

      • Если транзакция была остановлена по ошибке одновременного доступа Totum автоматически запускает ее повторно.
      • В настройках таблицы можно отключить проверку на одновременную запись.

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

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

    Можно сделать переход внутрь цикла из любой таблицы тотума используя функцию действия linkToTable() и передав id цикла.

    example: linkToTable(table: 'calcs_table'; cycle: #cycle_id; target: "self")
    

    Расчетная в цикле/дереве

    Вычисления и отображение информации внутри циклов. Динамическое отображение агрегированных списков за счет функции автозаполнения.

    Могут подключаться внутрь циклов.

    Комфортный предельный размер таких таблиц зависит от вычислительных мощностей сервера (тк они рассчитываются целиком).

    Рекомендуемый размер не более 15 000 ячеек (учитывайте, что внутри циклов таблицы связаны если специально не настроено другое поведение).

    Особенности:

    Временная

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

    Динамические отчеты, промежуточные таблицы действий, настроечные таблицы. Таблицы, обеспечивающие «проваливанивание» в данные.

    Модальное окно

    Временные таблицы используются как модальные окна при помощи функции linkToDataTable!

    Особенности:

    • Табличная единица пересчета.

    • Возможно переключение порядка пересчета строчной части (построчно/поколоночно).

    • Могут быть подключены внутрь циклов.

    • Имеют футер и футеры колонок.

    • Нет префильтра.

    • Имеют уникальный идентификатор хеш временной таблицы, который позволяет обращаться к данным внутри этих таблиц пока они существуют.

    • Стандартное время существования таблицы после создания — 3 часа.

    • Могут вызываться функцией linkToDataTable с передачей данных в шаблон таблицы.

    • Могут показываться вне авторизационного контура схемы при помощи анонимного доступа. Для генерации ссылки используется функция linkToAnonymTable.

    Автоматическая связь таблиц в циклах

    По умолчанию таблицы внутри циклов взаимосвязаны.

    Если таблица во время расчета кода берет данные из другой таблицы цикла информация об этом сохраняется в цикле в момент сохранения таблицы. Связь будет разорвана в результате очередного пересчета в котором не оказалось ни одного обращения из кода к таблице источнику.

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

    Очередность пересчетов каскадная. Автоматические пересчеты выполняются после кодов действий. Если вызывается пересчет нескольких ведомых таблиц, то порядок их пересчета определяется случайным образом.

    Автоматическая связь

    Автоматический пересчет можно отключить для конкретной таблицы в конкретном цикле через версии таблиц в циклах.

    Версии расчетных таблиц в циклах

    Доступ к управлению версиями

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

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

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

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

    Версии управляются через две системные таблицы:

    Настройки таблиц

    Название (title)

    Отображаемое название таблицы.

    Name таблицы (name)

    Name-таблицы по которому она идентифицируется в обращениях из секций кода.

    Должно быть уникальным для одной схемы базы данных.

    Тип таблицы (type)

    Определяет тип таблицы. Возможные варианты:

    • Простая — хранение данных.

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

    • Расчетная в дереве/цикле — тип таблиц для проведения вычислений или динамического отображения данных.

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

    Смена типа таблицы после создания — невозможна!.

    Категория (category)

    Внутренняя категория таблицы для упрощения ее поиска в Списке таблиц.

    Положение в дереве (tree_node_id)

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

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

    Сортировка в дереве (sort)

    Номер, по которому осуществляется сортировка таблицы в дереве и внутри цикла. Сортируются по возрастанию номера.

    Предполагается, что номера таблиц будут больше 1000, а папки, ярлыки и ссылки меньше 1000.

    Иконка (icon)

    Иконка таблицы в Дереве.

    Задается как имя иконки в fontawesome без префикса fa-.

    Актуальность (actual)

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

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

    • Нестрогое без показа — аналогично нестрогому, но без показа предупреждения.

    • Строгое — изменение в таблице невозможно, если в ней есть изменение, которое еще не загружено в браузер вносящего изменение пользователя.

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

    В таблице БЕЗ ОТСЛЕЖИВАНИЯ ИЗМЕНЕНИЙ данные в хедере могут быть НЕВАЛИДНЫМИ!

    Хедер в таблицах «Без отслеживания изменений» рекомендуется использовать только если в нем содержатся кнопки. Если вам необходимо просто убрать у пользователей уведомления об изменениях в таблице, например для таблицы циклов — используйте «Нестрогое без показа».

    Перезапуск выполнения действий и кодов

    Для всех кроме Без отслеживания изменений действует автоматический перезапуск действий и кодов. Пример:

    1. — Одновременно начали выполнятся два действия изменяющие Таблицу_1.

    1.1. — В момент запуска они оба взяли код отслеживания изменения таблицы — updated.

    1. — Одно из действий завершилось первым и в процессе записи новых данных в Таблиц_1 снова взяло ее updated.

    2.1. — Убедившись что в updated небыло изменений записало обновленные данные в Таблицу_1 и изменило ее updated.

    1. — Второй действие, завершившееся позже, тоже проверило updated таблицы.

    3.1. — Проверка updated не прошла, тк действие_1 его изменило, поэтому транзакция действия_2 откатывается и оно запускается повторно с повторным получением данных.

    Поколоночный пересчет (calculate_by_columns)

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

    Подробно про Единицы пересчета ⟶

    Основное поле (main_field)

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

    Для таблиц циклов определяет заголовок цикла в дереве при его открытии.

    Поле сортировки (order_field)

    Определяет поле, по которому будет осуществляться сортировка строк при ее открытии! в web-интерфейсе. Не влияет на порядок пересчета!

    Сортировать по полю порядок (with_order_field)

    Параметр, переводящий порядок сортировки полей в сортировку по полю n. Меняется порядок пересчета строк строчной части — они начинают рассчитываться в порядке возрастания n.

    Как сортировать описано здесь.

    К n можно обратится через #n или select.

    При изменении порядка n полей переставляются 1=1.

    При добавлении между существующими строками увеличивается дробная часть n.

    Если в проекте есть таблица в которой идет постоянная вставка между строк, то нужно поставить в крон периодическое выполнение функции normalizeN.

    Ролевой доступ на изменение порядка (order_roles)

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

    Пересчет при изменении порядка (recalc_in_reorder)

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

    Показывать новую строку по месту сортировки (new_row_in_sort)

    Доступно для n-сортируемых таблиц. Позволяет показывать строку после добавления по месту ее сортировки.

    Обратный порядок (order_desc)

    При включении настройки в web-интерфейса будет применен обратный порядок сортировки строк. Большие значения — вверху, меньшие — внизу.

    Не применимо при наличии сортировки по полю порядок.

    Добавление строк (insertable)

    При включенном параметре возможно добавление строк в таблицу через web-интерфейс и через API.

    Добавление строк в таблицу не разделено по WEB/API. Это возможно сделать через insert_roles.

    Ролевой доступ на добавление (insert_roles)

    Роли, которые будут иметь возможность добавлять строки в таблицу. За счет ролей можно разделить возможность добавления строк между WEB/API интерфейсами!

    Удаление строк (deleting)

    При включенном параметре возможно удаление строк в таблице через web-интерфейс и API.

    Удаление строк в таблице не разделено по WEB/API. Это возможно сделать через delete_roles.

    Возможно 2 типа удаления:

    • Удалять — в этом режиме все данные строки удаляются из базы данных.

    • Скрывать — в этом режиме строка не удаляется, а помечается как isdel. В web-интерфейсе она больше не показывается. Поля, ссылавшиеся на строку, отображают ее значение в зачеркнутом виде.

    Хидден

    В режиме Скрывать аналогично удалению возможно восстановление записи, для этого надо перевести строчную часть в режим восстановления.

    Восстановление

    Изменение скрытых данных невозможно.

    Функции типа select при обращении в where по id в сравнении = будут продолжать брать данные из удаленной строки!

    Ролевой доступ на удаление (delete_roles)

    Роли, которые будут иметь возможность удалять строки в таблице. За счет ролей можно разделить возможность удаления строк между WEB/API интерфейсами!

    Дублирование строк (duplicating)

    При включенном параметре возможно дублирование строк через web-интерфейс. В API недоступно!

    При дублировании циклов, новый цикл создается без выполнения кодов действий внутри расчетных таблиц.

    Подробно про Дублирование ⟶

    Ролевой доступ на дублирование (duplicate_roles)

    Роли, которые будут иметь возможность дублировать строки в таблице. В API дублирование строк невозможно!

    Подробно про Дублирование ⟶

    Код при дублировании из web-интерфейса (on_duplicate)

    Если этот код заполнен, то он будет выполнен вместо стандартной процедуры дублирования с переданной в него переменной $#ids, содержащей список id дублируемых строк.

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

    Подробно про Дублирование ⟶

    Код действия таблицы (default_action)

    Если этот код заполнен, он будет выполнен как код действия послелюбого изменения в таблице (из web-интерфейса, API или по внутреннему изменению).

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

    Подробно про Коды действий ⟶

    Панель (panel)

    При включенном параметре доступ к строкам и их добавление возможны в виде панели.

    Панель

    Роли с доступом к CSV (csv_roles)

    Роли, которые будут иметь возможность выгрузить таблицу в CSV.

    Подробно про CSV ⟶

    Роли с редактированием через CSV (csv_edit_roles)

    Роли, которые будут иметь возможность загрузить таблицу из CSV.

    Будте внимательны, при загрузке через CSV не работают условные блокировки через форматирования ячейки, строки и таблицы!

    Подробно про CSV ⟶

    Индексы (indexes)

    Список полей с индексами, созданными в базе данных по этой таблице.

    • Актуально для таблиц со строчной единицей пересчета.

    • Кардинально ускоряет выборки и поиск в больших таблицах.

    • Не рекомендуется создавать более двух индексов на одну таблицу.

    Тип доступа к циклам (cycles_access_type)

    Есть несколько вариантов настройки доступа к циклам:

    • Видны только свои циклы.

    • Видны чужие циклы без возможности открыть.

    • Видны чужие циклы с возможностью просмотра их содержимого.

    • Все циклы доступны на редактирование.

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

    Подробно про циклы ⟶

    Форматирование строки (row_format)

    Обрабатывает условное форматирование строк. Основная функция setRowFormat.

    Имеет преимущество над секцией форматирования таблицы, но уступает форматированию поля.

    Подробно про форматирование ⟶

    Форматирование таблицы (table_format)

    Обрабатывает условное форматирование таблицы. Основная функция setTableFormat.

    Применяется самой первой и уступает всем остальным плейсментам форматирования.

    Подробно про форматирование ⟶

    Описание (description)

    Описание таблицы. Поддерживает html.

    Для внутреннего документирования видимого только Создателю поместите текст в тег <admin>...</admin>.

    Таймер удаления строк (delete_timer)

    Если задано значение отличающееся от 0, то в момент удаления строки в web-интерфейсе пользователю будет выводиться окно с обратным отсчетом в секундах.

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

    Роли на изменение (edit_roles)

    Роли, которым доступно изменение данных в таблице. Перекрывают роли на чтение.

    Роли на чтение (read_roles)

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

    Роли «скрыть в дереве» (tree_off_roles)

    Роли, которым необходимо скрыть таблицу из дерева.

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

    Актуальность настроек полей (fields_actuality)

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

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

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

    Наборы полей (fields_sets)

    Содержит наборы полей глаза.

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

    Возможно ручное редактирование.

    Разбивка на страницы (pagination)

    Разбивка на страницы задается как число/число.

    Левая часть дроби обозначает количество строк на страницу в десктоп версии.

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

    Для десктопа для часто используемых таблиц рекомендуется не более 500 строк. Для мобильной версии не более 50.

    Пустое значение или 0/0 означает, что разбивка отключена.

    В интерфейса располагается под префильтром и выглядит так:

    Пагинация

    Возможно указать, что необходимо осуществлять отсчет строк в обратном порядке — 500/50/desc.

    Или указать, что при открытии таблицы необходимо автоматически перейти на последнюю страницу — 500/50/last.

    Вид панелями (panels_view)

    Набор настроек позволяющий отобразить таблицу в виде карточек или канбан-колонок.

    Настройки панелей

    👆 в настройки добавлен параметр h_panels_max_count — максимальное количество панелей, после которого таблица будет принудительно переведена в вид отображения строками.

    Ширина колонки при повороте таблицы (rotated_view)

    Ширина в пикселях. Если задана, то поворачивает таблицу превращая строки в колонки с заданной шириной.

    Поворот таблицы