Хранение статической информации: списки, записи действий, продаж, плана, табелей. Прайсы, оплаты, итп.
Хранение большого объема данных (миллионы строк).
Особенности:
Каждая строчка в таблице циклов связана с данными расчетных таблиц, относящихся к этому циклу.
Используется для создания таблиц сделок, периодических отчетов, табелей, циклических планов итд.
Особенности:
Каждая строка отражает набор расчетных таблиц содержащих индивидуальные данные для каждого цикла.
Строчная единица пересчета.
Расчетные таблицы в циклах могут иметь версии полей — таким образом можно обеспечивать эволючионное изменение логики внутри циклов.
Каждая строка цикла имеет информацию о том, кто имеет доступ на просмотр или редактирование цикла.
Доступ к циклам настраивается как:
В настройках пользователей возможно предоставить доступ к циклам другого пользователя без изменения создателей циклов. Например, для временного предоставления доступа одного из менеджеров к проектам другого.
Расчетные таблицы внутри цикла автоматически взаимосвязаны и пересчитываются автоматически если обновились данные в связанной таблице.
Строка цикла автоматически пересчитывается после пересчета таблиц внутри цикла. Это может приводить к ошибке одновременного доступа при изменении нескольких циклов.
Расчетная таблица может быть привязана только к одной таблице циклов. Менять эту привязку не рекомендуется в связи с возможной потерей данных и сбоями в работе циклов.
Переход внутрь цикла осуществляется при нажатии на кнопку в строке таблицы циклов или по двойному клику на строке цикла в заблокированном для изменения поле.
Можно сделать переход внутрь цикла из любой таблицы тотума используя функцию действия linkToTable() и передав id
цикла.
example: linkToTable(table: 'calcs_table'; cycle: #cycle_id; target: "self")
Вычисления и отображение информации внутри циклов. Динамическое отображение агрегированных списков за счет функции автозаполнения.
Могут подключаться внутрь циклов.
Комфортный предельный размер таких таблиц зависит от вычислительных мощностей сервера (тк они рассчитываются целиком).
Рекомендуемый размер не более 15 000 ячеек (учитывайте, что внутри циклов таблицы связаны если специально не настроено другое поведение).
Особенности:
Табличная единица пересчета.
Возможно переключение порядка пересчета строчной части (построчно/поколоночно).
Могут быть подключены внутрь циклов.
Имеют футер и футеры колонок.
Имеют префильтр, но при этом все равно рассчитываются целиком.
Внутри циклов имеют версии, а также параметр позволяющий отключать автоматический пересчет при изменении данных в таблице источнике.
Каждый раз при открытии создается новая версия этой таблицы. Таким образом с ней может работать несколько пользователей одновременно — каждый со своим набором данных.
Динамические отчеты, промежуточные таблицы действий, настроечные таблицы. Таблицы, обеспечивающие «проваливание» в данные.
Временные таблицы используются как модальные окна при помощи функции linkToDataTable!
Особенности:
Табличная единица пересчета.
Возможно переключение порядка пересчета строчной части (построчно/поколоночно).
Могут быть подключены внутрь циклов.
Имеют футер и футеры колонок.
Нет префильтра.
Имеют уникальный идентификатор хеш временной таблицы
, который позволяет обращаться к данным внутри этих таблиц пока они существуют.
Стандартное время существования таблицы после создания — 1 час.
Могут вызываться функцией linkToDataTable с передачей данных в шаблон таблицы.
Могут показываться вне авторизационного контура схемы при помощи анонимного доступа. Для генерации ссылки используется функция linkToAnonymTable.
По умолчанию таблицы внутри циклов взаимосвязаны.
Если таблица во время расчета кода берет данные из другой таблицы цикла информация об этом сохраняется в цикле в момент сохранения таблицы. Связь будет разорвана в результате очередного пересчета, в котором не оказалось ни одного обращения из кода к таблице источнику.
При изменении любой таблицы в цикле вызывается автоматический пересчет тех таблиц, для которых она была отмечена как источник. Пересчеты вызываются по цепочке до тех пор, пока в результате очередной итерации данные в таблице останутся без изменений.
Очередность пересчетов каскадная. Автоматические пересчеты выполняются после кодов действий. Если вызывается пересчет нескольких ведомых таблиц, то порядок их пересчета определяется случайным образом.
Автоматический пересчет можно отключить для конкретной таблицы в конкретном цикле через версии таблиц в циклах.
Расчетные таблицы в циклах могут иметь несколько версий. Поля в версиях не зависят от аналогичных полей в других версиях этой таблицы. Версия может быть создана на основе существующей версии, но далее они изменяются независимо друг от друга.
Каждый цикл содержит информацию о версиях расчетных таблиц использующихся в нем. Это позволяет поступательно редактировать логику в циклах, а также использовать разную логику в разных циклах одной таблицы циклов.
При создании цикла он создается с версиями таблиц, отмеченных по умолчанию.
При дублировании цикла он дублируется с сохранением версий циклов, но вы можете использовать код при дублировании, чтобы переключать на необходимые версии по условиям.
Версии управляются через две системные таблицы:
Версии расчетных таблиц — управляет доступными версиями, созданием новых, настройками «по умолчанию».
Версия таблиц в циклах — управляет использованием версий в конкретных циклах, а также подключением/отключением автоматического пересчета в циклах.
Для таблицы циклов есть функционал, позволяющий бесшовно выводить часть другой таблицы в качестве вкладки внутри цикла.
Это используется для повышения удобства системы для пользователей, а также, если необходимо к циклу привязать большое количество позиций (например 50К строк), что невозможно сделать, поместив эти строки в Расчетную таблицу внутри цикла.
Реализуется механизмом функции linkToTable.
Необходимо создать одну или несколько Кнопок в Таблице циклов, в name
которых обязательно должен быть использован префикс tab_
.
Код действия кнопки должен вызывать функцию linkToTable.
= : linkToTable(table: 'table_for_link'; filter: 'fl_for_cycle_tab' = #id)
Используется привязка к префильтру в целевой таблице. Если необходимо, чтобы префильтры не показывались, то их необходимо установить в режим Видит только создатель.
В целевой таблице, привязываемой по tab
, предпочтительно запрещать добавление, если не заполнен префильтр привязки, а также использовать скрытое поле привязки, получающее значение от префильтра при добавлении через код #
.
Положение tab
в цикле, а также видимость для ролей определяется по соответствующим параметрам кнопки в таблице циклов.
Если вы в таблице циклов ставите код действия с триггером
при добавлении
на действие внутри создаваемого цикла, то это действие не будет выполнено, тк код действия в этом случае выполняется до создания таблиц в цикле.
Отображаемое название таблицы.
Name-таблицы по которому она идентифицируется в обращениях из секций кода.
Должно быть уникальным для одной схемы базы данных.
Определяет тип таблицы. Возможные варианты:
Простая — хранение данных.
Циклов — создание циклических наборов расчетных таблиц, имеющих схожую структуру, но разное содержимое.
Расчетная в дереве/цикле — тип таблиц для проведения вычислений или динамического отображения данных.
Временная — существующая ограниченное время таблица. Имеет уникальный набор данных даже при одновременной работе нескольких пользователей.
Смена типа таблицы после создания — невозможна!
Внутренняя категория таблицы для упрощения ее поиска в Списке таблиц.
Определяет в каком разделе и месте дерева будет показываться таблица.
Для расчетных в циклах это поле предлагает выбрать таблицу циклов, к которой будет относиться таблица.
Номер, по которому осуществляется сортировка таблицы в дереве и внутри цикла. Сортируются по возрастанию номера.
Предполагается, что номера таблиц будут больше 1000, а папки, ярлыки и ссылки меньше 1000.
Определяет правила, по которым будет обрабатываться ошибка одновременного доступа к таблице.
Нестрогое — возможно вносить изменения, даже если другой пользователь изменил данные в таблице после ее открытием текущим пользователем. В этом режиме при изменении таблицы другим пользователем в верхнем правом углу показывается уведомление с именем изменившего пользователя.
Нестрогое без показа — аналогично нестрогому
, но без показа предупреждения.
Строгое — изменение в таблице невозможно, если в ней есть изменение, которое еще не загружено в браузер вносящего изменение пользователя.
! Без отслеживания изменений — вообще без отслеживания изменений. Например, для объемных таблиц циклов, с которыми не пересекаясь работает большое количество человек. Позволяет снизить нагрузку на сервер исключая повторное выполнение транзакций.
! PRO Без отслеживания с уведомлениями — только в PRO, аналогично ! Без отслеживания изменений
, но с показом уведомлений о том, что таблица была изменена другим пользователем.
Автообновление: При срабатывании нотификации о изменении таблицы другим пользователем автоматически обновляет данные на странице. Если в этот момент у пользователя будет открыто поле на редактирование, панель или окно — автоматического обновления не произойдет, будет показана стандартная нотификация о изменении в фоне.
PRO Автообновление — только в PRO, аналогично Нестрогое
+ Автообновление
! PRO Без отслеживания с автообновлением — только в PRO, аналогично ! Без отслеживания изменений
+ Автообновление
В таблице БЕЗ ОТСЛЕЖИВАНИЯ ИЗМЕНЕНИЙ данные в хедере могут быть НЕВАЛИДНЫМИ!
Хедер в таблицах «Без отслеживания изменений» рекомендуется использовать только если в нем содержатся кнопки. Если вам необходимо просто убрать у пользователей уведомления об изменениях в таблице, например для таблицы циклов — используйте «Нестрогое без показа».
Для всех, кроме Без отслеживания изменений
, действует автоматический перезапуск действий и кодов. Пример:
1.1. — В момент запуска они оба взяли код отслеживания изменения таблицы — updated
.
updated
.2.1. — Убедившись что в updated
небыло изменений, записало обновленные данные в Таблицу_1 и изменило ее updated
.
updated
таблицы.3.1. — Проверка updated
не прошла, так как действие_1 его изменило, поэтому транзакция действия_2 откатывается и оно запускается повторно с повторным получением данных.
Свойство расчетных таблиц в цикле/дереве и временных таблиц, изменяющее порядок пересчета полей строчной части и футера.
Определяет значение какого поля будет показано в заголовке панельки по клику правой кнопки мыши в поле в строчной части.
Для таблиц циклов определяет заголовок цикла в дереве при его открытии.
Определяет поле, по которому будет осуществляться сортировка строк при ее открытии! в web-интерфейсе.
В Простых таблицах и таблице Циклов — влияет на порядок пересчета строк!
Не используйте в качестве поля сортировки поля типа Селект и Селект дерево в таблицах со строчной единицей пересчета! Это приведет к их неработоспособности при наполнении большим количеством данных!
Параметр, переводящий порядок сортировки полей в сортировку по полю n
. Меняется порядок пересчета строк строчной части — они начинают рассчитываться в порядке возрастания n
.
Как сортировать описано здесь.
К n
можно обратиться через #n
или select.
При изменении порядка n
полей переставляются 1=1.
При добавлении между существующими строками увеличивается дробная часть
n
.Если в проекте есть таблица, в которой идет постоянная вставка между строк, то нужно поставить в крон периодическое выполнение функции normalizeN.
Роли, которые могут изменять порядок строк при включенной сортировке по полю порядок. Если не указано, то все, кто имеет доступ к таблице на редактирование.
Параметр, определяющий пересчитывать ли в таблицах со строчной единицей пересчета строки, у которых n
больше, чем минимальный n
у строк участвующих в изменении порядка.
Доступно для n-сортируемых таблиц. Позволяет показывать строку после добавления по месту ее сортировки.
При включении настройки в web-интерфейса будет применен обратный порядок сортировки строк. Большие значения — вверху, меньшие — внизу.
Не применимо при наличии сортировки по полю порядок.
При включенном параметре возможно добавление строк в таблицу через web-интерфейс и через API.
Добавление строк в таблицу не разделено по WEB/API. Это возможно сделать через insert_roles.
Роли, которые будут иметь возможность добавлять строки в таблицу. За счет ролей можно разделить возможность добавления строк между WEB/API интерфейсами!
При включенном параметре возможно удаление строк в таблице через web-интерфейс и API.
Удаление строк в таблице не разделено по WEB/API. Это возможно сделать через delete_roles.
Возможно 2 типа удаления:
Удалять — в этом режиме все данные строки удаляются из базы данных.
Скрывать — в этом режиме строка не удаляется, а помечается как isdel
. В web-интерфейсе она больше не показывается. Поля, ссылавшиеся на строку, отображают ее значение в зачеркнутом виде.
В режиме Скрывать
, аналогично удалению, возможно восстановление записи. Для этого надо перевести строчную часть в режим восстановления.
Изменение скрытых данных невозможно.
Функции типа select при обращении в
where
поid
в сравнении=
будут продолжать брать данные из удаленной строки!Восстановление != Добавление — триггер при добавлении не срабатывает при восстановлении строки!
Скрывать не работает для таблиц Циклов! Даже если выбран, строки все равно будут удаляться!
Роли, которые будут иметь возможность удалять строки в таблице. За счет ролей можно разделить возможность удаления строк между WEB/API интерфейсами!
Роли, которые будут иметь возможность восстанавливать строки в таблице при типе удаления Скрывать.
При включенном параметре возможно дублирование строк через web-интерфейс. В API недоступно!
При дублировании циклов, новый цикл создается без выполнения кодов действий внутри расчетных таблиц.
Роли, которые будут иметь возможность дублировать строки в таблице. В API дублирование строк невозможно!
Если этот код заполнен, то он будет выполнен вместо стандартной процедуры дублирования с переданной в него переменной $#ids
, содержащей список id
дублируемых строк.
Если в результате выполнения этого кода в таблицу, в которой нажали дублировать, добавятся строки — они будут помечены ✓
.
Если этот код заполнен, он будет выполнен как код действия после любого изменения в таблице (из web-интерфейса, API или по внутреннему изменению).
Например, вы можете блокировать изменение в таблице если какой-то из отслеживаемых параметров его запрещает. Проверка будет проводиться на стороне сервера.
В коде действия таблицы допустимы только секции
=:
иa1=: a2=: a..=:
. Код действия таблицы не различает триггеры — он отрабатывает при любом изменении в таблице!
При включенном параметре доступ к строкам и их добавление возможны в виде панели.
Изменение полей происходит в момент сохранения панели.
При нажатии на кнопку в панели Код действия кнопки берет
#field_in_row
не из панели, а из строки таблицы.Для того, что бы получить измененное значение из панели до ее сохранения в коде Кнопки надо использовать обращение
#pnl.field
.
Роли, которые будут иметь возможность выгрузить таблицу в CSV.
Роли, которые будут иметь возможность загрузить таблицу из CSV.
Будьте внимательны, при загрузке через CSV не работают условные блокировки через форматирования ячейки, строки и таблицы!
Список полей с индексами, созданными в базе данных по этой таблице.
Актуально для таблиц со строчной единицей пересчета.
Кардинально ускоряет выборки и поиск в больших таблицах.
Не рекомендуется создавать более двух индексов на одну таблицу.
Есть несколько вариантов настройки доступа к циклам:
Видны только свои циклы.
Видны чужие циклы без возможности открыть.
Видны чужие циклы с возможностью просмотра их содержимого.
Все циклы доступны на редактирование.
Также эта настройка комбинируется с настройкой пользователей — доступу к циклам других пользователей
и начальник
.
Обрабатывает условное форматирование строк. Основная функция setRowFormat.
Имеет преимущество над секцией форматирования таблицы, но уступает форматированию поля.
Обрабатывает условное форматирование таблицы. Основная функция setTableFormat.
Применяется самой первой и уступает всем остальным плейсментам форматирования.
Описание таблицы. Поддерживает html
.
Для внутреннего документирования, видимого только Создателю, поместите текст в тег <admin>...</admin>
.
Если передать тег <hide>
перед всем текстом, то плашка с текстом будет автоматически показана в свернутом состоянии при открытии таблицы.
Если задано значение отличающееся от 0
, то в момент удаления строки в web-интерфейсе пользователю будет выводиться окно с обратным отсчетом в секундах.
Удаление строки произойдет только если пользователь подождет указанное время.
Роли, которым доступно изменение данных в таблице. Перекрывают роли на чтение.
Роли, которым доступен просмотр таблицы. Если роль указана в ролях на изменение, то ей можно не устанавливать роль на чтение, так как она перекрывается.
Роли, которым необходимо скрыть таблицу из дерева.
Используется для временных и таблиц настроек.
Позволяет сбросить текущие настройки видимости полей для всех пользователей к настройкам по умолчанию
.
Используется для дистанционной актуализации интерфейса у пользователей при модификации таблицы.
Если у пользователя дата сохранения настроек раньше, чем указанная в этом поле, то они будут сброшены к значению по умолчанию.
Содержит наборы полей глаза.
В том числе для разных версий расчетных таблиц в циклах.
Возможно ручное редактирование.
Разбивка на страницы задается как число/число.
Левая часть дроби обозначает количество строк на страницу в десктоп версии.
Правая часть дроби — количество строк на страницы в мобильной версии.
Для десктопа для часто используемых таблиц рекомендуется не более 500 строк. Для мобильной версии не более 50.
Пустое значение или 0/0
означает, что разбивка отключена.
Можно указать максимальное количество элементов, которое может попросить вывести пользователь — они указываются через **
:
500/50**5000/500
# означает, что для десктопа максимум 5000 а для мобильного 500
# в любом случае, не более 30000 тк при большем значении, возможна ошибка PostreSQL на максимальное количество выбираемых элементов
В интерфейса располагается под префильтром и выглядит так:
Возможно указать, что необходимо осуществлять отсчет строк в обратном порядке —
500/50/desc
.Или указать, что при открытии таблицы необходимо автоматически перейти на последнюю страницу —
500/50/last
.
Только в PRO
Позволяет изменить количество строк, подгружаемых на странице, помимо тех, которые загружаются для заполнения экрана.
Указывается как число
. Обозначает лимит загрузки вверх и вниз от экрана.
Те если на экране помещается 60 строк, то если указать 200 то:
если экран вверху таблицы, то будет подгружено максимум 260 строк
если экран в середине таблицы, то будет подгружено максимум 460 строк
если экран в конце таблицы, то будет подгружено максимум 260 строк
Чем больше строк обрабатывает браузер — тем больше нагрузка на клиентский компьютер! Если вы хотите расширить интервал загружаемых строк, то подбирайте значение этого параметра опытным путем, для имеющихся у вас компьютеров для каждой таблицы.
Только в PRO
Набор настроек позволяющий отобразить таблицу в виде карточек или канбан-колонок.
👆 в настройки добавлен параметр h_panels_max_count
— максимальное количество панелей, после которого таблица будет принудительно переведена в вид отображения строками.
Если оставить высоту карточки или высоту строки пустой, то высота карточки и строки будет автоматической и подстраиваться под содержимое.
Только в PRO
Ширина в пикселях. Если задана, то поворачивает таблицу превращая строки в колонки с заданной шириной.