⟵ сюдатуда ⟶
  • Установка
  • Установка на Ubuntu
  • Обновления
  • Установка PRO
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Селекты
  • select
  • selectList
  • selectRowListForSelect
  • selectRowListForTree
  • selectTreeChildren
  • selectRow
  • selectRowList
  • selectUnreadComments
  • Даты
  • nowDate
  • dateDiff
  • dateAdd
  • dateFormat
  • dateIntervals
  • Математические
  • round
  • modul
  • numRand
  • numTransform
  • Текстовые строки
  • strAdd
  • strReplace
  • strRegMatches
  • strRegAllMatches
  • numFormat
  • strRandom
  • strEncrypt
  • strDecrypt
  • strUrlEncode
  • strUrlDecode
  • strBaseEncode
  • strBaseDecode
  • strLength
  • strRepeat
  • strSplit
  • strTransform
  • textByTemplate
  • strMd5
  • strGz
  • strUnGz
  • strPart
  • strTrim
  • Списки
  • listCreate
  • listMax
  • listMin
  • listSum
  • listCount
  • listUniq
  • listItem
  • listJoin
  • listCross
  • listAdd
  • listMinus
  • listCut
  • listSection
  • listFilter
  • listSearch
  • listSort
  • listMath
  • listTrain
  • listRepeat
  • listNumberRange
  • listCheck
  • listReplace
  • Строки
  • rowCreate
  • rowListCreate
  • rowCreateByLists
  • rowAdd
  • rowListAdd
  • rowKeys
  • rowValues
  • rowKeysReplace
  • rowKeysRemove
  • Логика
  • if
  • while
  • var
  • globVar
  • procVar
  • exec
  • errorException
  • tryCatch
  • Пересчет, вставка и изменение
  • reCalculate
  • reCalculateCycle
  • set
  • setList
  • setListExtended
  • insert
  • insertList
  • delete
  • deleteList
  • duplicate
  • duplicateList
  • pin
  • pinList
  • clear
  • clearList
  • restore
  • restoreList
  • execButton
  • execButtonList
  • reorder
  • Вызовы окон и скриптов
  • linkToTable
  • linkToScript
  • linkToDataTable
  • linkToDataText
  • linkToDataHtml
  • linkToPanel
  • linkToEdit
  • linkToPrint
  • linkToButtons
  • linkToInput
  • linkToInputSelect
  • linkToDataJson
  • linkToFileUpload
  • linkToFileDownload
  • getFromScript
  • emailSend
  • Настройки sendmail/SMTP
  • notificationSend
  • linkToAnonymTable
  • GET/POST/INPUT
  • linkToForm
  • linkToQuickForm
  • encriptedFormParams
  • getFromSoap
  • Форматирование
  • setFormat
  • setRowFormat
  • setTableFormat
  • setRowsOrder
  • setRowsHide
  • setRowsShow
  • setFloatFormat
  • panelButton
  • panelButtons
  • panelHtml
  • panelImg
  • Обработка json
  • jsonCreate
  • jsonExtract
  • Операции с файлами
  • fileGetContent
  • Системные
  • execSSH
  • logRowList
  • normalizeN
  • sysTranslit
  • getTableSource
  • getTableUpdated
  • tableLogSelect
  • userInRoles
  • getUsingFields
  • schemaGzStringGet
  • tableUrl
  • sleep
  • tableLog
  • Обработка xml
  • xmlExtract
  • PRO
  • proDbConnect
  • proDbDisconnect
  • proDbExecQuery
  • proDbSelect
  • proDbSelectList
  • proPrefilteredIds
  • proLinkToBuffer
  • proGetAuthorizationLink
  • Services
  • serviceXlsxGenerator
  • serviceDocxGenerator
  • servicePdfGenerator
  • serviceXlsxParser
  • serviceAskOpenaiList
  • serviceAskOpenai
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Системные таблицы
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • [PRO] Деревья
  • [PRO] Анонимные таблицы
  • [PRO] Внешние формы
  • [PRO] Экспорт и импорт таблиц
  • [PRO] MeiliSearch
  • [PRO] Базы данных
  • [PRO] Настройка CSS
  • [PRO] Custom docs
  • [PRO] LDAP AD
  • [PRO] Версии файлов
  • [PRO] List-unsubscribe
  • [PRO] Динамические поля
  • [PRO] Only Office
  • [PRO] Auth Tokens
  • [PRO] 2FA
  • [PRO] Superlang
  • [PRO] Profiler
  • [PRO] Подключение функций
  • [SRV] Подключение
  • [SRV] Пользовательские возможности
  • [SRV] XLSX/DOCX генераторы
  • [SRV] chatGPT
  • Функции

    Селекты

    select

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: select(table: ''; cycle: ; hash: ; field: ''; where: '' = ; order: '' asc)
    

    Возвращает одно значение из поля field: таблицы table:.

    Обязательные параметры

    Необязательные параметры

    • cycle — определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для обращения к временной таблице.

    • wherename-параметр условие выбора строки в строчной части. where: 'field' = value — левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий.
      • Параметр может отсутствовать, если поле не содержит строк (расположено вне строчной части таблицы). Если параметр отсутствует для выборки из поля строчной части, то результатом работы функции будет являться одно первое значение в соответствии с сортировкой, заданной в order:.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булевое значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получаться различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет являться первое значение в соответствии с сортировкой, заданной в order:.
      • Если по условиям не выбирается ни одной строки, то результатом работы функции будет являться пустота.

    Поля типов Селект (множественный), Селект-дерево (множественный) и Данные могут выбираться с оператором сравнения ==. В этом случае ищется полное совпадение, а не пересечение значения поля с заданным в where: значением. Поиск по содержимому поле Данные в простых таблицах может по-разному себя вести в зависимости от того, сохранено число-значение как строка или как число.

    Если в were: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: select(table: 'table_name'; field: 'field_name'; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    • ordername-параметр поле в таблице table:, по которому будет осуществляться сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутствует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию.
      • desc — по убыванию.
    • sfieldname-параметр поле типа Селект или Селект-дерево, для которого нужно выбрать и вернуть отображаемое значение, а не основание.

    • tfieldname-параметр поле, использующееся для расчета значений селектов в запрошенных в sfield: полях.

    • offsetчисло пропуск указанного количества элементов в порядке определенном в order:.

    Пример:

    zakazy (cycle_id: 1)

    id nomer_zakaza
    1 98
    2 99
    3 100

    example: select(table: 'zakazy'; cycle: 1; field: 'id'; where: 'nomer_zakaza' = 100)
    
    // Результат: 3
    

    selectList

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: selectList(table: ''; cycle: ; hash: ; field: ''; where: '' = ; order: '' asc)
    

    Возвращает список значений из строк поля field: таблицы table: в соответствии с сортировкой заданной в order:.

    Обязательные параметры

    Необязательные параметры

    Если в were: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: selectList(table: 'table_name'; field: 'field_name'; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    • ordername-параметр поле в таблице table:, по которому будет осуществляться сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутствует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию
      • desc — по убыванию
    • sfieldname-параметр поле типа Селект или Селект-дерево, для которого нужно выбрать и вернуть отображаемое значение, а не основание.

    • tfieldname-параметр поле, использующееся для расчета значений селектов в запрошенных в sfield: полях.

    • limitчисло, ограничивает список указанным количеством элементов.

      • Если передать в качестве значение параметра 0 или "", то он будет отключен!
    • offsetчисло пропуск указанного количества элементов в соответствии с сортировкой order:.

    Пример:

    zakazy

    id nomer_zakaza
    1 98
    2 99
    3 100

    example: selectlist(table: 'zakazy'; field: 'id'; where: 'nomer_zakaza' >= 99)
    
    // Результат: [2,3]
    

    selectRowListForSelect

    Доступен в секциях: Код селекта.

    =: selectRowListForSelect(table: ''; cycle: ; bfield: 'id'; field: ''; order: '' asc; where: '' = ; section: ''; preview: '')
    

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

    Обязательные параметры

    • tablename-параметр таблица из которой берутся значения.

    • fieldname-параметр поле в таблице table: из которого берется отображение.

    Необязательные параметры

    Если в were: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: selectRowListForSelect(table: 'table_name'; field: 'field_name'; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    • ordername-параметр поле в таблице table:, по которому будет осуществляться сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутствует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию.
      • desc — по убыванию.
    • sectionname-параметр, поле в таблице table:, по которому будут сгруппированы значения.

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

    • bfieldname-параметр поля, выводящегося в параметр "value" итогового rowList.

      • При пустом bfield: в качестве ключа используется id.
    • previewscode — код для формирования дополнительных превью, получает параметр $#val, содержащий bfield селекта. Должен возвращать rowlist формата [{title: "", value: "", name: ""}].

      • Выполняется из окружения той таблицы в которой находится Селект, но получает только значения нестрочных полей и id строки, плюс $#ntn и $#nti.
      • В отличии от функций контекстной панели работает в развернутом на редактирование селекте.

    Пример 1:

    klienty

    id pokupatel
    1 Alexey
    2 Pavel
    3 Boris

    example1: selectRowListForSelect(table: 'klienty'; field: 'pokupatel'; order: 'pokupatel' asc)
    
    //Результат: 
    //[
    //{"value": 1, "is_del": false, "title":"Alexey"},
    //{"value": 3, "is_del": false, "title":"Boris"}
    //{"value": 2, "is_del": false, "title":"Pavel"}
    //]
    

    Пример 2:

    cloud_kassir_sistemy_nalogooblojeniya

    id key value
    1 0 Общая система налогообложения
    2 1 Упрощенная система налогообложения (Доход)
    3 2 Упрощенная система налогообложения (Доход минус Расход)
    4 3 Единый налог на вмененный доход
    5 4 Единый сельскохозяйственный налог
    6 5 Патентная система налогообложения

    example2: selectRowListForSelect(table: 'cloud_kassir_sistemy_nalogooblojeniya'; field: 'value'; bfield: 'key';  where: 'key'<3; order: 'key' asc)
    
    // Результат: 
    // [
    // {"value": 0, "is_del": false, "title":"Общая система налогообложения"},
    // {"value": 1, "is_del": false, "title":"Упрощенная система налогообложения (Доход)"}
    // {"value": 2, "is_del": false, "title":"Упрощенная система налогообложения (Доход минус Расход)"}
    // ]
    

    selectRowListForTree

    Доступен в секциях: Код селекта.

    =: selectRowListForTree(table: ''; cycle: ; field: ''; order: '' asc; where: '' = ; parent: ''; disabled: ; roots: )
    

    Возвращает список ассоциативных массивов формата:

    {
      "value": 35,
      "is_del": false,
      "title": "Производство",
      "parent": 1
    }
    

    Используется для подготовки данных поля Селект-дерево.

    Обязательные параметры

    • tablename-параметр таблица, из которой берутся значения.

    • fieldname-параметр поле в таблице table:.

    • parentname-параметр, поле содержащее значение bfield родительского элемента или null, если это элемент верхнего уровня.

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для временных таблиц hash таблицы.

    • wherename-параметр, множественный, ограничение на выборку вида 'field_name' = value аналогично selectList.

    • ordername-параметр, множественный, поле, по которому будет осуществляться сортировка, и порядок в виде 'field_name' asc для сортировки по возрастанию и 'field_name' desc для сортировки по убыванию.

    • disabledчисловой список, запрещенные к выбору, но отображаемые в дереве элементы.

    • bfieldname-параметр поле в таблице table: которое будет взято в качество основания. По умолчанию id.

    • roots - — числовой список, элементы, которые необходимо поставить первым уровнем дерева. В случае, использования, дерево строится от них, указывая в качестве их родителя null.

    example: selectRowListForTree(table: 'tree'; field: 'title'; parent: 'parent_id')
    
    // Результат: [{"value":35,"is_del":false,"title":"Производство","parent":null},{"value":45,"is_del":true,"title":"Закупка материалов и склад","parent":"35"} ]
    

    selectTreeChildren

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: selectTreeChildren(table: ''; cycle: ; hash: ; id: ; parent: '')
    

    Возвращает список из id, дочерних по отношению к указанному в параметре id:, а также дочерних к дочерним. Уровень вложенности не ограничен.

    Обязательные параметры

    • tablename-параметр таблица, из которой берутся значения.

    • idчисло, строка в которой содержится элемент, у которого ищутся дочерние строки.

    • parentname-параметр, поле содержащее id родительских элементов.

    Необязательные параметры

    Пример:

    tree

    id title parent_id
    1 Системные таблицы null
    2 Основные 1
    3 Доступы 1
    32 Документация null
    33 Настройки 32

    example: selectTreeChildren(table: 'tree'; id: 1; parent: 'parent_id')
    
    // Результат: [2, 3]
    

    selectRow

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: selectRow(table: ''; cycle: ; hash: ; fields: ; field: ''; field: ''; where: '' = ; order: '' asc)
    

    Возвращает ассоциативный массив с основаниями в виде name полей указанных в field: и отображениями в виде их значений. Если поля находятся в строчной части, то из первой строки строчной части в соответствии с условиями выборки where: и сортировкой order:. Если поля из нестрочных частей, where: и order: не применяются.

    Обязательные параметры

    Необязательные параметры

    Если в were: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: selectRow(table: 'table_name'; field: 'field_name'; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    • ordername-параметр поле в таблице table:, по которому будет осуществляться сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутствует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию.
      • desc — по убыванию.
    • sfieldname-параметр поле типа Селект или Селект-дерево, для которого нужно выбрать и вернуть отображаемое значение, а не основание.

      Поддерживается вариант задания ключа для выбираемого поля: sfied: 'some_field' as "new_name". При таком использовании возможна выборка и значения и отображения поля одновременно: fied: 'some_field' as "f_value"; sfied: 'some_field' as "f_title".

    • tfieldname-параметр поле, использующееся для расчета значений селектов в запрошенных в sfield: полях.

    • fieldsсписок полей field:.

      Можно передать строковое значение из списка в виде fields: "*ALL*":

      • *ALL* — все поля строчной части.
      • *HEADER* — все поля хедера.
      • *FOOTER* — все поля футера.
    • sfieldsсписок полей sfield:.

    • offsetчисло пропуск указанного количества элементов в соответствии с сортировкой order:.

    Пример:

    klienty

    id pokupatel summa
    1 Alexey 10
    2 Pavel 20
    3 Boris 30

    example: selectrow(table: 'klienty'; field: 'pokupatel'; field: 'summa'; order: 'id' desc)
    
    // Результат: {"pokupatel": "Boris", "summa": 30}
    

    selectRowList

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: selectRowList(table: ''; cycle: ; hash: ; fields: ; field: ''; field: ''; where: '' = ; order: '' asc)
    

    Возвращает список ассоциативных массивов.

    Обязательные параметры

    Необязательные параметры

    • fieldname-параметр поле в таблице table:.

      Поддерживается вариант задания ключа для выбираемого поля: fied: 'some_field' as "new_name"

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

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

    • wherename-параметр, множественный, ограничение на выборку вида 'field_name' = "value".

    • ordername-параметр, множественный, поле, по которому будет осуществляться сортировка, и порядок в виде 'field_name' asc для сортировки по возрастанию и 'field_name' desc для сортировки по убыванию.

    • tfieldname-параметр поле, использующееся для расчета значений селектов в запрошенных в sfield: полях.

    • sfieldname-параметр поле типа Селект или Селект-дерево, для которого нужно выбрать и вернуть отображаемое значение, а не основание.

      Поддерживается вариант задания ключа для выбираемого поля: sfied: 'some_field' as "new_name". При таком использовании возможна выборка и значения и отображения поля одновременно: fied: 'some_field' as "f_value"; sfied: 'some_field' as "f_title".

    • fieldsсписок полей field:.

      Можно передать строковое значение из списка в виде fields: "*ALL*":

      • *ALL* — все поля строчной части.
      • *HEADER* — все поля хедера.
      • *FOOTER* — все поля футера.
    • sfieldsсписок полей sfield:.

    • limitчисло, ограничивает список указанным количеством элементов.

      • Если передать в качестве значение параметра 0 или "" то он будет отключен!
    • offsetчисло пропуск указанного количества элементов.

    Пример:

    klienty

    id pokupatel summa
    1 Alexey 10
    2 Pavel 20
    3 Boris 30

    example: selectrowlist(table: 'klienty'; field: 'pokupatel'; field: 'summa'; where: 'id' > 1; order: 'id' desc)
    
    // Результат: 
    // [
    // {"pokupatel": "Boris", "summa": 30},
    // {"pokupatel": "Pavel", "summa": 20},
    // ]
    

    selectUnreadComments

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: selectUnreadComments(users: json`[4,5,8]`; table: ''; field: ''; id: )
    

    Возвращает информациб о непрочитанных комментариях из поля комментарии.

    Результатом работы будет rowlist со строкой на каждого пользователя указанного в users:

    • Пользователь обозначен в user;

    • Количество непрочитанных комментов в num.

    • сами комменты (непрочитанные) в comments.

    Обязательные параметры

    • fieldname-параметр поле в таблице table:.

    • tablename-параметр name таблицы из которой берутся данные.

    • usersсписок id пользователей, по которым нужно получить данные о комментариях.

    Необязательные параметры

    • cycleчисло, определяет цикл, если таблица table: является расчетной в цикле.

    • idid строки, если запрос идет к строчной части.

    Даты

    nowDate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: nowDate(format: "Y-m-d H:i")
    

    Возвращает текущую дату в указанном формате.

    Может быть заменен на быстрые переменные$#nd, $#ndt и $#ndts.

    Необязательные параметры

    • format — определяет формат в котором выводится дата, например Y-m-d H:i

      • Если параметр format: отсутствует, то результатом будет строка формата Y-m-d H:i.
      • ВНИМАНИЕ! ПОЛЕ ДАТА ХРАНИТ ЗНАЧЕНИЕ В ФОРМАТЕ Y-m-d H:i и Y-m-d.
      • ДЛЯ КОРРЕКТНОЙ РАБОТЫ СРАВНЕНИЙ ОБЕ ЧАСТИ НЕРАВЕНСТВА ДОЛЖНЫ БЫТЬ В АНАЛОГИЧНОМ ФОМАТЕ!
      • Может быть указан как одна строка в которой в результате работы функции будут произведены замены:

      • Символы формата даты

        • d — День месяца, 2 цифры с ведущим нулём от 01 до 31
        • D — Текстовое представление дня недели, 3 символа от Mon до Sun (не рекомендуется использовать тк для этого есть функция dateWeekDay)
        • j— День месяца без ведущего нуля от 1 до 31
        • N — Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье)
        • z – Порядковый номер дня в году от 0 до 365
        • W — Порядковый номер недели года.
        • m — Порядковый номер месяца с ведущим нулём от 01 до 12
        • M — Сокращенное наименование месяца, 3 символа от Jan до Dec (не рекомендуется использовать тк для этого есть функция Х)
        • n — Порядковый номер месяца без ведущего нуля от 1 до 12
        • t — Количество дней в указанном месяце от 28 до 31
        • L — Признак високосного года 1, если год високосный, иначе 0.
        • Y — Порядковый номер года, 4 цифры. Примеры: 1999, 2003
        • y — Номер года, 2 цифры. Примеры: 99, 03
        • H — Часы в 24-часовом формате с ведущим нулём от 00 до 23
        • i — Минуты с ведущим нулём от 00 до 59
        • s — Секунды с ведущим нулём от 00 до 59
    example1: nowdate()
    
    // Результат: "2018-01-15 20:48" 
    
    example2: nowdate(format: "Y-m-d")
    
    // Результат: "2018-01-15" 
    
    example3: nowdate(format: "H:i")
    
    // Результат: "20:48" 
    
    example4: nowdate(format: "d.m.Y")
    
    // Результат: "15.01.2018" 
    
    example5: nowdate(format: "d.m.Y (H:00)")
    
    // Результат: "15.01.2018 (20:00)" 
    
    example6: nowdate(format: "z")
    
    // Результат: "15"
    // Несмотря на то, что результатом работы этой функции всегда является строка, ее можно использовать как Число, если она содержит в себе только число или число и точку.
    

    dateDiff

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: dateDiff(date: ; date: ; unit: "day|year|month|hour|minute")
    

    Возвращает число, равное разнице между date и date выраженное в единице unit. Если вторая дата раньше первой — функция вернет отрицательное значение. Разница между датами возвращается в виде дробного значения.

    Обязательные параметры

    • date — обязательно должно быть указано два параметра.

      • Могут быть переданы как одна строка.
      • Передаваемые значения должны соответствовать одному из форматов:

        • Y-m-d
        • Y-m-d H:i
      • Если один из параметров указан с H:i, а другой без — то для сравнения параметру с отсутствующим H:i присваивается 00:00

      • Может быть передан в unix timestamp как число.
    • unit — параметр, определяющий, в какой величине отображается разница.

      • Передается как одна строка и может принимать одно из значений:
        • year — года
        • month — месяцы
        • day — дни
        • hour — часы
        • minute — минуты
      • Параметр может отсутствовать, в этом случае его значению присваивается day.
    example: dateDiff(date: $date1; date: $date2; unit: "day")
        date1: "01.07.2017"
        date2: "2017-07-02 10:42"
    
    // Результат: "1.4458333333333"
    

    dateAdd

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: dateAdd(date: ; days: ; hours: ; minutes: ; months: ; years: ; format: "Y-m-d H:i"; lang: )
    

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

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

    Обязательные параметры

    • date — дата, к которой будет прибавляться значение.

      • Передается как как одна строка.
      • Передаваемое значение должно соответствовать одному из форматов:

        • Y-m-d
        • Y-m-d H:i
      • Если передана без H:i, а прибавляются часы и минуты, то присваивается 00:00.

      • Может быть передан в unix timestamp как число.

    Необязательные параметры

    • format — определяет формат в котором выводится дата, например "Y-m-d H:i"

      ВНИМАНИЕ! ПОЛЕ ДАТА ХРАНИТ ЗНАЧЕНИЕ В ФОРМАТЕ "Y-m-d H:i" и "Y-m-d".

      ДЛЯ КОРРЕКТНОЙ РАБОТЫ СРАВНЕНИЙ ОБЕ ЧАСТИ НЕРАВЕНСТВА ДОЛЖНЫ БЫТЬ В АНАЛОГИЧНОМ ФОМАТЕ!

      • Если параметр format: отсутствует, то результатом будет строка формата "Y-m-d H:i".
      • Может быть указан как одна строка в которой в результате работы функции будут произведены замены:

      • Символы формата даты

        • d — День месяца, 2 цифры с ведущим нулём от 01 до 31.
        • D — Текстовое представление дня недели, 3 символа от Mon до Sun.
        • j— День месяца без ведущего нуля от 1 до 31.
        • N — Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье).
        • z – Порядковый номер дня в году от 0 до 365.
        • W — Порядковый номер недели года.
        • m — Порядковый номер месяца с ведущим нулём от 01 до 12.
        • M — Сокращенное наименование месяца, 3 символа от Jan до Dec.
        • n — Порядковый номер месяца без ведущего нуля от 1 до 12.
        • t — Количество дней в указанном месяце от 28 до 31.
        • L — Признак високосного года 1, если год високосный, иначе 0.
        • Y — Порядковый номер года, 4 цифры. Примеры: 1999, 2003.
        • y — Номер года, 2 цифры. Примеры: 99, 03.
        • H — Часы в 24-часовом формате с ведущим нулём от 00 до 23.
        • i — Минуты с ведущим нулём от 00 до 59.
        • s — Секунды с ведущим нулём от 00 до 59.
        • F — Полное наименование месяца.
        • l (lowercase L) — Полное наименование дня недели.
    • daysодно целое число, количество дней.

    • hoursодно целое число, количество часов.

    • minutesодно целое число, количество минут.

    • monthsодно целое число, количество месяцев.

    • yearsодно целое число, количество лет.

    • langстрока, если не указан, то вывод идет в языковом пакете PHP на сервере. Если указан, то на указанном языке. Поддерживаемые языки:

      • ru — русский.
    example: dateAdd(date: "2017-10-01 10:00"; days: 1; hours: 2; minutes: 20)
    
    // Результат: "2017-10-02 12:20"
    

    dateFormat

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: dateFormat(date: ; format: "d.m.Y H:i"; lang: )
    

    Возвращает преобразованную дату как одну строку. Если в date передан list или rowList то на выходе будет аналогичный list/rowList с всеми подходящими заменами.

    Обязательные параметры

    • date — преобразуемая дата.

      • Передается как как строка.
      • Передаваемое значение должно соответствовать одному из форматов:

        • Y-m-d
        • Y-m-d H:i
      • Если передана без H:i, а преобразуется в формат с H:i — присваивается 00:00.

      • Может быть передан в unix timestamp как число.
    • format — определяет формат в котором выводится дата, например "Y-m-d H:i"

      ВНИМАНИЕ! ПОЛЕ ДАТА ХРАНИТ ЗНАЧЕНИЕ В ФОРМАТЕ Y-m-d H:i и Y-m-d.

      ДЛЯ КОРРЕКТНОЙ РАБОТЫ СРАВНЕНИЙ ОБЕ ЧАСТИ НЕРАВЕНСТВА ДОЛЖНЫ БЫТЬ В АНАЛОГИЧНОМ ФОМАТЕ!

      • Если параметр format: отсутствует, то результатом будет строка формата "Y-m-d H:i".
      • Может быть указан как строка в которой в результате работы функции будут произведены замены:

      • Символы формата даты

        • d — День месяца, 2 цифры с ведущим нулём от 01 до 31.
        • D — Текстовое представление дня недели, 3 символа от Mon до Sun.
        • j— День месяца без ведущего нуля от 1 до 31.
        • N — Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье).
        • z – Порядковый номер дня в году от 0 до 365.
        • W — Порядковый номер недели года.
        • m — Порядковый номер месяца с ведущим нулём от 01 до 12.
        • M — Сокращенное наименование месяца, 3 символа от Jan до Dec.
        • n — Порядковый номер месяца без ведущего нуля от 1 до 12.
        • t — Количество дней в указанном месяце от 28 до 31.
        • L — Признак високосного года 1, если год високосный, иначе 0.
        • Y — Порядковый номер года, 4 цифры. Примеры: 1999, 2003.
        • y — Номер года, 2 цифры. Примеры: 99, 03.
        • H — Часы в 24-часовом формате с ведущим нулём от 00 до 23.
        • i — Минуты с ведущим нулём от 00 до 59.
        • s — Секунды с ведущим нулём от 00 до 59.
        • F — Полное наименование месяца.
        • l (lowercase L) — Полное наименование дня недели.

    Необязательные параметры

    • langстрока, если не указан, то вывод идет в языковом пакете PHP на сервере. Если указан, то на указанном языке. Поддерживаемые языки:

      • ru — русский.

    Следующие параметры применяются если в date используется list/rowList:

    • keys — для rowList, список ключей, в которых будет произведена замена. Если не указан, то замена производится во всех ключах.

    • recursive — по умолчанию true или list в котором указаны уровни замены 0 — верхний, 1 — следующий вложенный и так далее, для случаев, когда нужно заменить на определенном уровне волженности.

    • replace — может содержать или одинарный элемент или тройственный:

      • "single-part" — на это значение будут заменены null и "".

      • "three-part" = "value" — в этом случае он сверяет значение и заменяет только при соответствии. Имеет приоритет перед форматированием даты.

    example: dateFormat(date: "01.07.2017"; format: "d.m")
    
    // Результат: "01.07"
    
    example2: dateFormat(date: "01.07.2017"; format: "F"; lang: "ru")
    
    // Результат: "июль"
    
    example3: dateFormat(date: "26.03.2021"; format: "l"; lang: "ru")
    
    // Результат: "Пятница"
    
    = : dateFormat(date: $rowlist; format: "d.Y"; keys: json`["format"]`)
    
    rowlist: rowListCreate(field: "format" = $list; field: "out" = $list)
        ~list: listCreate(item: "2023-01-01"; item: "2023-01-02"; item: "2023-01-03")
    
    // Результат:
    //[
    //  {
    //    "out": "2023-01-01",
    //    "format": "01.2023"
    //  },
    //  {
    //    "out": "2023-01-02",
    //    "format": "02.2023"
    //  },
    //  {
    //    "out": "2023-01-03",
    //    "format": "03.2023"
    //  }
    //]
    

    dateIntervals

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: dateIntervals(date: $#nd; num: 10; type: "hour|day|week|month"; datetime: false)
    

    Возвращает rowList содержащий ключи start и end

    Обязательные параметры

    • num — число интервалов для генерации.

    • type — указывается тип интервала:

      • "hour" — час
      • "day" — день
      • "week" — неделя
      • "month" — месяц
    • date — дата к которой будет прибавлятся значение.

      • Передается как как одна строка.

      • Передаваемое значение должно соответствовать одному из форматов:

        • Y-m-d
        • Y-m-d H:i
        • Может быть передан в unix timestamp как число.

    Необязательные параметры

    • format — определяет формат в котором выводится дополнительные форматированные даты в ключи startf и endf.

      • Может быть указан как одна строка в которой в результате работы функции будут произведены замены:

      • Символы формата даты

        • d — День месяца, 2 цифры с ведущим нулём от 01 до 31
        • D — Текстовое представление дня недели, 3 символа от Mon до Sun (не рекомендуется использовать тк для этого есть функция dateWeekDay)
        • j— День месяца без ведущего нуля от 1 до 31
        • N — Порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье)
        • z – Порядковый номер дня в году от 0 до 365
        • W — Порядковый номер недели года.
        • m — Порядковый номер месяца с ведущим нулём от 01 до 12
        • M — Сокращенное наименование месяца, 3 символа от Jan до Dec (не рекомендуется использовать тк для этого есть функция Х)
        • n — Порядковый номер месяца без ведущего нуля от 1 до 12
        • t — Количество дней в указанном месяце от 28 до 31
        • L — Признак високосного года 1, если год високосный, иначе 0.
        • Y — Порядковый номер года, 4 цифры. Примеры: 1999, 2003
        • y — Номер года, 2 цифры. Примеры: 99, 03
        • H — Часы в 24-часовом формате с ведущим нулём от 00 до 23
        • i — Минуты с ведущим нулём от 00 до 59
        • s — Секунды с ведущим нулём от 00 до 59
    • datetimetrue если в ключи start и end необходимо вывести Y-md H:i

    • weekdaystart — указать день начала недели для week интервалов в трехбуквенном eng формате:

      • mon
      • tue
      • wed
      • thu
      • fri
      • sat
      • sun

    Математические

    round

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: round(num: ; type: ; step: ; dectimal: )
    

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

    Возвращает одно число

    Обязательные параметры

    Необязательные параметры

    • typeодна строка, направление округления.

      • up — округление вверх
      • down — округление вниз
      • При отсутствии — математически
    • stepодно число, шаг округления.

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

    example: round(num: $limit; type: "up"; step: 0.25; dectimal: 2)
        limit: 3.56
    
    // Результат: 3.75
    

    modul

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: modul(num: )
    

    Возвращает одно число, абсолютное значение (модуль) числа, переданного в num:.

    Обязательные параметры

    example: modul(num: -3)
    
    // Результат: 3
    

    numRand

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: numRand(min: ; max: )
    

    Возвращает одно число псевдослучайное значение в диапазоне от min: (или 0) до max: (или максимально возможного в вашей версии PHP случайного числа).

    Необязательные параметры

    • minодно число, минимальная граница диапазона для случайного числа.

      • При отсутствии 0
    • maxодно число, максимальная граница диапазона для случайного числа.

      • При отсутствии максимальное для платформы.
    example: numRand(min: 0; max: 20)
    
    // Результат: 4
    

    numTransform

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: numTransform(data: )
    

    Внутри totum все данные это строка, но внешние системы иногда хотят конкретно числа. Эта функция преобразует строки в числа.

    Если в data передан list или rowList то на выходе будет аналогичный list/rowList с всеми подходящими заменами.

    Обязательные параметры

    • data — строка для преобразования в число.

    Следующие параметры применяются если в data используется list/rowList:

    • keys — для rowList, список ключей, в которых будет произведена замена. Если не указан, то замена производится во всех ключах.

    • recursive — по умолчанию true или list в котором указаны уровни замены 0 — верхний, 1 — следующий вложенный и так далее, для случаев, когда нужно заменить на определенном уровне волженности.

    ПРИМЕРЫ

    example: numTransform(data: $transform)
        transform: "5.87"
    //Результат: 
    
    = : numTransform(data: $rowlist; keys: json`["format"]`)
    
    rowlist: rowListCreate(field: "format" = $list; field: "out" = $list)
        ~list: listCreate(item: "10500"; item: "10600"; item: "10700")
    
    // Результат:
    //[
    //  {
    //    "format": 10500,
    //    "out": "10500"
    //  },
    //  {
    //    "format": 10600,
    //    "out": "10600"
    //  },
    //  {
    //    "format": 10700,
    //    "out": "10700"
    //  }
    //]
    

    Текстовые строки

    strAdd

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strAdd(str: ; str: )
    

    Возвращает строку, из последовательно соединенных указанных строк. Конкатенация строк.

    Обязательные параметры

    • strодна строка или число, множественный параметр, определяющий части соединяемых строк.
    example: strAdd(str: "Приятного использования "; str: "TOTUM")
    
    // Результат: "Приятного использования TOTUM"
    

    Для этой функции есть сахар str:

    str: str`"#" + $#nfv ++ "—" ++ #field`
    
    // Результат: #34 — закрыт
    
    
    • + — склеивает без пробела.
    • ++ — склеивает, добавляя пробел.

    strReplace

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strReplace(str: ; from: ; to: )
    

    Ищет в str: все прямые вхождения from: и заменяет их на to:. Возвращает одну строку.

    Обязательные параметры

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

    • fromсписок или одна строка, соответствие, которое будет заменяться.

      • Будут заменены все найденные вхождения.
      • Если передается как список, то последовательно будут осуществлены замены всех элементов списка.
    • toсписок или одна строка на которую будет произведена замена.

      • Если from: передается как список, то to тоже может быть передан как список, тогда замены будут произведены в соответствии с совпадениями элементов списков.
    example1: strreplace(str: "Двигатели R3 и R5 в режиме зажигания"; from: "3"; to: "4")
    
    // Результат: "Двигатели R4 и R5 в режиме зажигания"
    
    example2: strreplace(str: "Двигатели R3 и R5 в режиме зажигания"; from: "R"; to: "M")
    
    // Результат: "Двигатели M3 и M5 в режиме зажигания"
    
    example3: strreplace(str: "Двигатели R3 и M5 в режиме зажигания"; from: $feng; to: $teng)
        feng: listcreate(item: "R3"; item: "M5")
        teng: listcreate(item: "S2"; item: "T7")
    
    // Результат: "Двигатели S2 и T7 в режиме зажигания"
    

    strRegMatches

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strRegMatches(str: ; template: ; matches: "matches"; flags: "u")
    

    Возвращает true или false — совпадение с шаблоном.

    Обязательные параметры

    • strодна строка или число строка/текст для анализа.

    • templateодна строка шаблон PCRE (perl-совместимых регулярных выражений). !БЕЗ ОГРАНИЧИТЕЛЕЙ (delimiters) /png/ —› png

    Необязательные параметры

    • matchesодна строка наименование переменной, которой будут присвоены найденные совпадения

      • В переменную будет передан список.
      • С нулевым индексом в списке будет полное совпадение с шаблоном.
      • С последующими — совпадение со выражениями, взятыми в скобки.
    • flagsPCRE-флаги. По умолчанию, передается u- utf-8 режим.

    example: if(condition: $reg = true; then: $#matches; else: "Совпадение не найдено")
    reg: strRegMatches(str: "Сашина машина шуршит шинами"; template: "\s+(шина[^\s]*)"; matches: "matches"; flags: "u")
    
    // Результат: [" шинами","шинами"]
    

    strRegAllMatches

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strRegAllMatches(str: ; template: ; matches: "matches"; flags: "u")
    

    Возвращает true если в str: есть одно или больше совпадение с шаблоном, если нет то false.

    Обязательные параметры

    • strодна строка или число строка/текст для анализа.

    • templateодна строка шаблон PCRE (perl-совместимых регулярных выражений). !БЕЗ ОГРАНИЧИТЕЛЕЙ (delimiters) /png/ —› png

    Необязательные параметры

    • matchesодна строка наименование переменной, которой будут присвоены найденные совпадения

      • В переменную будет передан список списков.
      • В список с индексом 0 будут переданы полные совпадения с шаблоном
      • В последующие — совпадения с выражениями, взятыми в скобки.
    • flagsPCRE-флаги. По умолчанию, передается u- utf-8 режим.

    Пример:

    Разбить текст на строки и найти первое слово в каждой строке

    str Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

    example: if(condition: $reg = true; then: $#matches; else: "Совпадение не найдено")
        reg: strRegAllMatches(str: #str; template: '\s*([^\n ]+)[^\n]+(?:\n|$)'; matches: "matches"; flags: "mu")
    
    //  Результат: [
    //  [
    //    "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem \n",
    //    "nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. \n",
    //    "Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit \n",
    //    "lobortis nisl ut aliquip ex ea commodo consequat."
    //  ],
    //  [
    //    "Lorem",
    //    "nonummy",
    //    "Ut",
    //    "lobortis"
    //  ]
    //  ]
    

    numFormat

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: numFormat(num: ; dectimals: ; decsep: ","; thousandssep: " "; unittype: )
    

    Превращает число в строку оформленную по шаблону. Если в num передан list или rowList то на выходе будет аналогичный list/rowList с всеми подходящими заменами.

    Если из внешней системы приходит число в экспонентной записи 2,3е+15 то оно переводится в формат тотума функцией numFormat.

    Максимальный размер числа обрабатываемого numFormat до точки — 17 разрядов. При превышении на 64-разрядной машине итоговый результат будет случайным числом.

    Обязательные параметры

    Необязательные параметры

    • dectimalsчисло, количество знаков после запятой.

    • decsepстрока, разделитель десятичных знаков.

    • thousandssepстрока, разделитель тысяч.

    • unittypeстрока, постфикс.

    • prefixстрока, префикс.

    Следующие параметры применяются если в num используется list/rowList:

    • keys — для rowList, список ключей, в которых будет произведена замена. Если не указан, то замена производится во всех ключах.

    • recursive — по умолчанию true или list в котором указаны уровни замены 0 — верхний, 1 — следующий вложенный и так далее, для случаев, когда нужно заменить на определенном уровне волженности.

    • replace — может содержать или одинарный элемент или тройственный:

      • "single-part" — на это значение будут заменены null и "".

      • "three-part" = "value" — в этом случае он сверяет значение и заменяет только при соответствии. Имеет приоритет перед форматированием даты.

    example: numFormat(num: $num; dectimals: 1; decsep: ","; thousandssep: " "; unittype: " р.")
    
    num: 10000.34 
    
    // Результат: "10 000,34 р."
    
    = : numFormat(num: $rowlist; thousandssep: ","; unittype: " €"; keys: json`["format"]`)
    
    rowlist: rowListCreate(field: "format" = $list; field: "out" = $list)
        ~list: listCreate(item: "10500"; item: "10600"; item: "10700")
    
    // Результат:
    //[
    //  {
    //    "out": "10500",
    //    "format": "10,500 €"
    //  },
    //  {
    //    "out": "10600",
    //    "format": "10,600 €"
    //  },
    //  {
    //    "out": "10700",
    //    "format": "10,700 €"
    //  }
    //]
    

    strRandom

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strRandom(length: 5; numbers: "true|false|12345"; letters: "false|true|abcdABCD"; symbols: "false|true|!@#$%^&")
    

    Возвращает строку длинной length, составленную из перечисленных символов.

    Обязательные параметры

    • lengthчисло, длина результирующей строки.

    Необязательные параметры

    • numbersодна строка, описывающая использование чисел.

      • false - не использовать числа.
      • true - использовать все числа.
      • 12345 - использовать только числа 12345.
    • lettersодна строка, описывающая использование букв.

      • false — не использовать буквы.
      • true — использовать все буквы английского алфавита.
      • abcdABCD — использовать только указанные буквы.
    • symbolsодна строка, описывающая использование символов.

      • false — не использовать символы.
      • true — использовать символы !@#$%^&*()_+=-%,.;:
      • !@#$%^& — использовать только указанные символы.
    example: strRandom(length: 5; numbers: "true"; letters: "true"; symbols: "true")
    
    // Результат: "z4yF9"
    

    strEncrypt

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strEncrypt(str: )
    

    Возвращает зашифрованную строку.

    Для работы необходимо в корне установки создать файл Crypto.key в котором набрать ключ, которым будет шифроваться строка. Файл необходимо создавать от того-же пользователя linux от которого работает Totum.

    Обязательные параметры

    strDecrypt

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strDecrypt(str: )
    

    Возвращает расшифрованную строку.

    Для работы необходимо в корне установки создать файл Crypto.key в котором набрать ключ, которым будет шифроваться строка. Файл необходимо создавать от того-же пользователя linux от которого работает Totum.

    Расшифровка возможна только с Ключом, примененным при шифровании.

    Обязательные параметры

    • str — шифрованная функцией strEncrypt строка`

    strUrlEncode

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strUrlEncode(str: )
    

    Возвращает url-кодированную строку.

    Обязательные параметры

    strUrlDecode

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strUrlDecode(str: )
    

    Возвращает декодированную строку.

    При получении данных в remotes применять не требуется — при получении url-кодированной строки в get в remotes она декодируется автоматически.

    Обязательные параметры

    strBaseEncode

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strBaseEncode(str: )
    

    Возвращает строку кодированную в base64.

    Обязательные параметры

    example: strBaseEncode(str: "строка для кодирования")
    
    // Результат: 0YHRgtGA0L7QutCwINC00LvRjyDQutC+0LTQuNGA0L7QstCw0L3QuNGP
    

    strBaseDecode

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strBaseDecode(str: )
    

    Возвращает раскодированную base64 строку или false.

    Внимание! В результате раскодирования может быть получена строка с не utf-8 символами, которая не сможет быть сохранена как значение поля и при такой попытке будет отдана ошибка базы данных!

    Обязательные параметры

    example: strBaseDecode(str: "0YHRgtGA0L7QutCwINC00LvRjyDQutC+0LTQuNGA0L7QstCw0L3QuNGP")
    
    // Результат: строка для кодирования
    

    strLength

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strLength(str: )
    

    Возвращает число — длину str.

    Обязательные параметры

    example: strLength(str: "Тотум")
    
    // Результат: 5
    

    strRepeat

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strRepeat(str: ; num: )
    

    Возвращает строку из str:, повторенного num: раз.

    Обязательные параметры

    example: strRepeat(str: "-"; num: 5)
    
    // Результат: "-----"
    

    strSplit

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strSplit(str: ; separator: )
    

    Возвращает список из строк — str: разбитое по separator:.

    Обязательные параметры

    Необязательные параметры

    • separatorодна строка, разделитель.

    • limit — максимальное число элементов в возвращаемом списке.

    Пример:

    str Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

    example: strSplit(str: #str; separator: $#nl)
    
    // Результат: 
    //  [
    //  "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem ",
    //  "  nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. ",
    //  "  Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit ",
    //  "  lobortis nisl ut aliquip ex ea commodo consequat."
    //  ]
    

    strTransform

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strTransform(str: ; to: "upper|lower|capitalize")
    

    Возвращает измененную строку.

    Обязательные параметры

    • strстроку для изменения.

    • toстроку, одно из трех значений.

      • upper — сделать все буквы заглавными.
      • lower — сделать все буквы строчными.
      • capitalize — сделать каждую первую букву слова заглавной.
    example: strTransform(str: "вася пупкин"; to: "capitalize")
    
    // Результат: Вася Пупкин
    

    textByTemplate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: textByTemplate(template: ; text: ; data: $data)
    

    Возвращает html.

    Обязательные параметры

    Необязательные параметры

    Пример:

    id Name шаблона type styles html
    28 kp Страница .title{font-size: 20px;}.text-main{font-size: 14px}.text-footer{padding-top: 20px; font-size: 14px} <div class="title"> {title}</div><div class="text-main"> {text}</div><div class="text-footer"> {footer}</div>
    example: textByTemplate(template: "kp"; data: $data)
        data: rowCreate(field: "title" = "Заголовок"; field: "text" = "Текст"; field: "footer" = "Футер")
    
    // Результат: "<style>.title{font-size: 20px;}.text-main{font-size: 14px}.text-footer{padding-top: 20px; font-size: 14px}</style><body><div class="title">  Заголовок</div><div class="text-main">  Текст</div><div class="text-footer">  Футер</div></body>"
    

    strMd5

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strMd5(str: )
    

    Возвращает строку в виде md5-хеша.

    Обязательные параметры

    example: strMd5(str: "0")
    
    // Результат: "15e79710ef30825afe1dc5c4d3fb5849"
    

    strGz

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strGz(str: )
    

    Возвращает gz-упакованную строку str:.

    Обязательные параметры

    example: set(table: 'testsimp'; field: 'file'=$fileList)
        fileList: listCreate(item: $fileRow)
            fileRow: rowCreate(field: "filestring" = $gz; field: "name" = "text.txt.gz")
                gz: strGz(str: "Текстовая строка")
    // Результат: null
    // В ячейке file таблицы testsimp - файл text.txt.gz
    

    strUnGz

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strUnGz(str: )
    

    Возвращает распакованную gz-строку str: или false, если строку декодировать не удалось.

    Обязательные параметры

    • str — gz-строка для распаковки.
    example: strUnGz(str: $fileContent)
        fileContent: fileGetContent(file: #gzfile[0]["file"])
    // Результат: распакованный текст из файла
    
    

    strPart

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strPart(str: ; offset: ; length: )
    

    Возвращает часть от переданной в него строки.

    Обязательные параметры

    Необязательные параметры

    • length — число, сколько символов взять в результат.

      Если задать отрицательное число, то конец строки будет отсчитан с конца слова.

    • offset — число, смещение выборки (на сколько элементов сдвинуть начало).

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

    ПРИМЕРЫ

    example_1: strPart(str: "7718767895"; length: 4; offset: 4)
    
    //Результат: "7678"
    
    example_2: strPart(str: "-string-"; length: -1; offset: 1)
    
    //Результат: "string"
    

    strTrim

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: strTrim(str: )
    

    Возвращает строку, отрезая пробельные символы в начале и конце строки.

    Обязательные параметры

    Списки

    listCreate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listCreate(item: )
    

    Создает список из элементов.

    Необязательный множественный параметр

    example1: listCreate(item: 1; item: 2; item: 4; item: "")
    
    // Результат: [1,2,4,""]
    
    example2: listCreate(item: "Alex"; item: "Sam"; item: "Mike")
    
    // Результат: ["Alex","Sam","Mike"]
    
    example3: listCreate()
    
    // Результат: []
    

    listMax

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listMax(list: ; default: )
    

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

    Обязательные параметры

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

      • Если передан ряд чисел, то они будут обрабатываться как числа даже если переданы как строки.

    Необязательные параметры


    example1:
    listmax(list: $list1) list1: listCreate(item: 35; item: 78; item: 13) // Результат: 78
    example2: listmax(list: $list2)
        list2: listCreate(item: "11"; item: "12"; item: "2")
    
    // Результат: 12
    
    example3: listmax(list: $list3)
        list3: listCreate()
    
    // Результат: "ОШБК!"
    
    example4: listmax(list: $list4; default: 0)
        list4: listCreate()
    
    // Результат: 0
    

    listMin

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listMin(list: ; default: )
    

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

    Обязательные параметры

    • listсписок чисел, строк, дат в котором ищется максимальное значение.

      • Если передан ряд чисел, то они будут обрабатываться как числа даже если переданы как строки.

    Необязательные параметры


    example1:
    listMin(list: $list1) list1: listCreate(item: 35; item: 78; item: 13) // Результат: 13
    example2: listMin(list: $list2)
        list2: listCreate(item: "11"; item: "12"; item: "2")
    
    // Результат: 2
    
    example3: listMin(list: $list3)
        list3: listCreate()
    
    // Результат: "ОШБК!"
    
    example4: listmax(list: $list4; default: 0)
        list4: listCreate()
    
    // Результат: 0
    

    listSum

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listSum(list: )
    

    Возвращает одно число, сумму значения списка list:.

    Все элементы списка должны быть числовыми значениями.

    Обязательные параметры

    example: listsum(list: $list)
        list: listCreate(item: 10; item: 5; item: 5)
    
    // Результат: 20
    

    listCount

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listCount(list: )
    

    Возвращает одно число, количество элементов списка list:.

    Обязательные параметры

    example1: listcount(list: $list1)
        list1: listCreate(item: "Alex"; item: "Sam"; item: "Mike")
    
    // Результат: 3
    
    example2: listcount(list: $list2)
        list2: listCreate(item: 5; item: 10; item: 5)
    
    // Результат: 3
    

    listUniq

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listUniq(list: )
    

    Возвращает список уникальных элементов списка list:.

    Обязательные параметры

    example: listuniq(list: $list)
    list: listCreate(item: "Alex"; item: "Sam"; item: "Alex")
    
    // Результат: ["Alex","Sam"]
    

    listItem

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listItem(list: ; item: )
    

    Возвращает одно значение из списка list: под номером item:. Нумерация элементов списка начинается с 0 (ноля).

    Может быть заменено на обращение $list[item_number]. Подробнее про обращение к элементу списка.

    Обязательные параметры

    example: listitem(list: $list2; item: 1)
        list2: listCreate(item: "Alex"; item: "Sam"; item: "Alex")
    
    // Результат: "Sam"
    
    example2: $list2_2[1]
        list2_2: listCreate(item: "Alex"; item: "Sam"; item: "Alex")
    
    // Результат: "Sam"
    

    listJoin

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listJoin(list: ; str: )
    

    Возвращает объединенные в строку значения списка или ассоциированного массива. str: — строка, которая вставляется между элементами (клей).

    Обязательные параметры

    Необязательные параметры

    example: listJoin(list: $list; str: "-")
        list: listCreate(item: 1; item: 2; item: 3)
    
    // Результат: "1-2-3"
    

    listCross

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listCross(list: ; list: )
    

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

    Обязательные параметры


    example:
    listcross(list: $list1; list: $list2; list: $list3) list1: listCreate(item: 1; item: 1; item: 2; item: 3) list2: listCreate(item: 1; item: 2; item: 3) list3: listCreate(item: 1; item: 2) // Результат: [1, 1, 2]

    listAdd

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listAdd(list: ; list: ; item: )
    

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

    Обязательные множественные параметры

    Необязательные множественные параметры

    example: listadd(list: $list1; list: $list2; item: 5)
        list1: listCreate(item: 1; item: 2; item: 3)
        list2: listCreate(item: 2; item: 3)
    
    // Результат: [1,2,3,2,3,5]
    

    listMinus

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listMinus(list: ; list: ; item: )
    

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

    Обязательные множественные параметры

    Необходимо, чтобы присутствовало минимум два параметра, первый из которых list:.

    Необязательные множественные параметры

    example: listminus(list: $list1; list: $list2; item: 2)
        list1: listCreate(item: 1; item: 2; item: 2; item: 3; item: 4)
        list2: listCreate(item: 3; item: 4; item: 5)
    
    // Результат: [1]
    

    listCut

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listCut(list: ; cut: "first|last"; num: 1)
    

    Возвращает список, уменьшенный на num: элементов с начала или с конца.

    Обязательные параметры

    Необязательные параметры

    • numчисло, количество удаляемых элементов, по умолчанию — 1.

      • Если при параметре cut: "first" передать -1 останется последнее значение списка.
    example: listCut(list: $list; cut: "first"; num: 1)
        list: listCreate(item: 1; item: 2)
    
    // Результат: [2]
    
    //Получить номер последнего ключа в списке
    
    = : listCut(list: $keys; cut: "first"; num: -1)
        keys: rowKeys(row: $list)
            list: listCreate(item: "10500"; item: "10600"; item: "10700")
    
    // Результат: [2]
    

    listSection

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listSection(list: ; item: )
    

    Возвращает список из значений указанного в item: ключа на основе ассоциированного массива.

    Может быть заменен на обращение вида $rowList[[key]]. Подробнее смотрите обращение к секции.

    Обязательные параметры

    Пример 1:

    tree

    id title
    1 Системные таблицы
    2 Основные
    3 Доступы
    32 Документация

    example1: listSection(list: $rowList; item: "id")
        rowList: selectRowList(table: 'tree'; field: 'id'; field: 'title'; order: 'id' asc)
    
    // Результат: [1, 2, 3, 32]
    

    Пример 2:

    example2: listSection(list: $listList; item: 1)
        listList: jsonExtract(text: "[[1,2,3],[4,5,6]]")
    
    // Результат: [2,5]
    

    Так как listSection используется достаточно часто, то в синтаксисе предусмотрено быстрое обращение к секции через $name[[section]]:

    example3: $listList[[1]]
        listList2: jsonExtract(text: "[[1,2,3],[4,5,6]]")
    
    // Результат: [2,5]
    

    listFilter

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listFilter(list: $list; key: "key|value|item" ><!= ; item: ""; regexp: ; skip: ; matches: )
    

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

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

    Обязательные параметры

    • listсписок или ассоциативный массив, в котором осуществляется фильтрация.

    • key — выражение из типа сравниваемого элемента, оператора сравнения и значения для сравнения.

      • key — фильтрация строк по list-ключам.
      • value — фильтрация строк по значению.
      • item — для списков ассоциативных массивов, фильтрация строк по значению в колонке определенной в item:.

      Возможно использование параметра в таком синтаксисе:

      =: listFilter(list: $list; key: "item_name" ><!= "VALUE")
      
      // эта запись аналогична
      // =: listFilter(list: $list; key: "item" ><!= "VALUE"; item: "item_name")
      

      Также в этом случае может быть использован третий элемент str или num для определения типа данных в item_name:


      =:
      listFilter(list: $list; key: "item_name" >= "40" str) // в этом случае данные в item_name будет обработано как строки

      Также в таком синтаксисе key является множественным параметром — результат фильтрации по пересечению граничных условий.

    Необязательные параметры

    • item — в случае, когда сравниваемым элементом в key: выбран item — сюда нужно передать ключ этого item.

    • regexptrue или набор флагов, в случае, когда правая часть key: представляет из себя регулярное выражение. По умолчанию флаг выставляется в u.

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

    • matches — название переменной, в которую будет записан список из совпадений выбранных строк.

    • savekeys — по умалчанию отфильтрованный список имеет собственную нумерацию ключей, но если передать true — будут сохранены оригинальные ключи.

    example1: listFilter(list: $list1; key: "item" = "tree"; item: "t")
        list1: listCreate(item: $row1_1; item: $row2_1)
            row1_1: rowCreate(field: "t" = "pen"; field: "i" = 1)
            row2_1: rowCreate(field: "t" = "tree"; field: "i" = 2)
    
    // Результат:
    // [
    //  {
    //    "i": 2,
    //    "t": "tree"
    //  }
    // ]
    

    listSearch

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listSearch(list: $list; key: "value|item" ><!= ; item: "")
    

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

    Обязательные параметры

    Необязательные параметры

    • item — в случае, когда сравниваемым элементом в key: выбран item — сюда нужно передать название этого item.

    Если лист содержит элемент без ключа item будет возвращена ошибка!

    example: listSearch(list: $list; key: "item" = "tree"; item: "t")
        list: listCreate(item: $row1; item: $row2)
            row1: rowCreate(field: "t" = "pen"; field: "i" = 1)
            row2: rowCreate(field: "t" = "tree"; field: "i" = 2)
    
    // Результат: [1]
    

    listSort

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listSort(list: ; type: "number|string|regular"; direction: "asc|desc"; key: "key|value|item"; item: "")
    

    Возвращает сортированный list.

    Внимание: сортировка спецсимволов в PHP (listSort) и PostgreSQL (параметры order в select-функциях) РАЗЛИЧНА! Полное сравнение в этом случае будет возвращать false. Для полной работоспособности в таких случаях не выполняйте order в select, а добавляйте еще один listSort.

    Обязательные параметры

    • listсписок или ассоциативный массив для сортировки.

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

    Необязательные параметры

    • typeстрока, тип, к которому приводятся сортируемые элементы при сравнении.

      • number — число.
      • string — строка.
      • regular — без приведения. Результат непредсказуем при разнородном содержимом.
      • nat — сортировка по числу после одинакового префикса n15, n16, n17, ...

      Эта настройка глобальна — те применяется ко всем key использованным в функции.

      Вместо нее можно использовать четвертый элемент str или num в key для указания типа сортировки:


      =:
      listSort(list: $list; key: "item_name_1" asc num; key: "item_name_2" desc str) // item_name_1 будут отсортированы по типу number // item_name_2 будут отсортированы по типу string // asc num и num asc будут работать аналогично
    • directionстрока, направление сортировки.

      • asc — по возрастанию (по умолчанию).
      • desc — по убыванию.
    • key — выражение из типа сравниваемого элемента, оператора сравнения и значения для сравнения.

      • key — сортировка строк по list-ключам.
      • value — сортировка строк по значению.
      • item — для списков ассоциативных массивов, сортировка строк по значению в колонке определенной в item:.

      Возможно использование параметра в таком синтаксисе:

      =: listSort(list: $list; key: "item_name_1" asc; key: "item_name_2" desc)
      
      // item_name_1 и item_name_2 будут отсортированы по типу regular
      // если задать type то он будет применен ко всем key
      // если задать direction то он будет применен ко всем key без указанного направления
      

      Также в таком синтаксисе key является множественным параметром — результат сортировки по последовательному применению слева-направо.

    example: listSort(list: $list; type: "string"; direction: "asc")
        list: listCreate(item: 1; item: 2; item: 11; item: 21)
    
    // Результат: [1,11,2,21]
    

    listMath

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listMath(list: ; num: ; list: ; operator: )
    

    Возвращает list, все элементы которого были изменены в соответствии с operator: и num:.

    Обязательные параметры

    • listсписок или ассоциированный массив, исходник.

    • numчисло для арифметического действия.

      или

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

    • operatorстрока, математический оператор.

      • + — прибавить
      • - — отнять
      • * — умножить
      • / — разделить
    example1: listMath(list: $list; num: 3; operator: "*")
        list: listCreate(item: 1; item: 2; item: 11; item: 21)
    
    // Результат: [ 3, 6, 33, 63]
    
    example2: listMath(list: $list1; list: $list2; operator: "*")
        list1: listCreate(item: 1; item: 2; item: 11; item: 21)
        list2: listCreate(item: 1; item: 2; item: 1; item: 1)
    
    // Результат: [ 1, 4, 11, 21]
    

    listTrain

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listTrain(list: )
    

    Возвращает список из соединенных последовательно списков вложенных в списки.

    Обязательные параметры

    example: listTrain(list: $lists)
        lists: json`[[1,2],[3,4],[5,6]]`
    //Результат: [1,2,3,4,5,6]
    

    listRepeat

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listRepeat(item: ; num: )
    

    Возвращает лист из повторенного num: раз элемента item:.

    Обязательные параметры

    • numчисло, количество повторений элемента item:.

    • item — значение любого типа.

    example: listRepeat(item: $row; num: 2)
        row: rowCreate(field: "test" = 1)
    
    // Результат: [
    //  {
    //    "test": 1
    //  },
    //  {
    //    "test": 1
    //  }
    // ]
    

    listNumberRange

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listNumberRange(min: ; max: ; step: 1)
    

    Возвращает список из чисел в заданном диапазоне, идущих с шагом step:

    Необязательные параметры

    • minчисло от.

    • maxчисло до (конечное значение в интервал не входит).

    • stepчисло, шаг.

      • Если step: > 0 — в порядке от min: включительно до max: исключительно.
      • Если step: < 0 — в порядке от max: включительно до min: исключительно.
      • Если step: = 0ОШБК!
    example1: listNumberRange(min: 1; max: 3; step: 0.5)
    
    // Результат: [1,1.5,2,2.5]
    
    example2: listNumberRange(min: 1; max: 3; step: -0.5)
    
    // Результат: [3,2.5,2,1.5]
    

    listCheck

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listCheck(list: )
    

    Возвращает true если в list передан список.

    Обязательные параметры

    • list — значение для проверки

    listReplace

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: listReplace(list: ; action: "item" = $val; action: $val; key: "key"; value: "value")
    

    Последовательно перебирает список. Может использоваться для:

    ВНИМАНИЕ! Функция не использует рекурсию и вы можете воспользоваться ею при получении ошибки переполнения стека.

    Обязательные параметры

    Необязательные параметры

    replace: listReplace(list: $rowlist; action: "date" = $weekDay; action: "max_temp" = $max_temp; value: "val")
        rowlist: rowListCreate(field: "date" = $list_date)
            list_date: listCreate(item: "2020-09-10"; item: "2020-09-11"; item: "2020-09-12")
        weekDay: dateFormat(date: $#val[date]; format: "l"; lang: "ru")
        max_temp: listMax(list: $day_temp; default: "")
            day_temp: selectList(table: 'temp'; field: 'temp'; where: 'date' = $#val[date])
    
    // Перебирает список ассоциированных массивов в колонке date которого хранятся даты.
    // Последовательно в каждой строке перезаписывает date на текстовое обозначение дня недели.
    // Последовательно в каждой строке добавляет ключ max_temp вычисляя максимальную температуру в этот день на основе данных, взятых на каждой итерации из таблицы temp по значению ключа date в этой строке.
    
    
    replace_act: listReplace(list: $list_date_act; action: $recalc; value: "val_act")
        list_date_act: listCreate(item: "2020-09-10"; item: "2020-09-11"; item: "2020-09-12")
        recalc: recalculate(table: $#ntn; where: 'date' = $#val_act)
    
    // Выполняемый в коде действия последовательно пересчитает строки текущей таблицы в которой date равно датам из list_date_act.
    
    

    Строки

    rowCreate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowCreate(field: "" = )
    

    Возвращает ассоциативный массив с основаниями в виде name полей, указанных в field: и значениями указанными после =.

    Необязательный множественный параметр

    example: rowCreate(field: 'name' = "Alexey"; field: 'age' = 35)
    
    //Результат: {"name": "Alexey", "age": 35}
    

    rowListCreate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowListCreate(field: "" = $list)
    

    Возвращает список ассоциативных массивов с ключами в виде name полей указанных в field: значениями указанными после =. Строки создаются в порядке сортировки списков передаваемых в field:.

    Обязательные параметры

    example: rowlistCreate(field: 'name' = $names; field: 'age' = $ages)
        names: listCreate(item: "Alexey"; item: "Pavel")
        ages: listCreate(item: 32; item: 35)
    
    // Результат: 
    // [
    // {"name": "Alexey", "age": 32},
    // {"name": "Pavel", "age": 35}
    // ]
    

    rowCreateByLists

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowCreateByLists(keys: $keysList; values: $valuesList)
    

    Возвращает ассоциативный массив или false.

    Обязательные параметры

    Размеры листов keys: и values: должны совпадать.

    example: rowCreateByLists(keys: $keysList; values: $valuesList)
        keysList: listCreate(item: "min"; item: "middle"; item: "max")
        valuesList: listCreate(item: "cherry"; item: "apple"; item: "watermellon")
    
    // Результат: {"min":"cherry", "middle": "apple", "max": "watermellon"}
    

    rowAdd

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowAdd(row: ; row: ; field: "" = )
    

    Возвращает ассоциативный массив, дополненный и исправленный последующими row: и field:.

    Обязательные параметры

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

      • Множественный параметр, если указано несколько, то массивы будут сложены в указанном порядке.

    Необязательные параметры

    • field — элементы, которые будут добавлены в конец массива в указанном порядке. Первым элементом выражения являются основания field: "base" = $value.

    • path — список с ключами, который показывает в какое место row-структуры нужно вставить данные.

    • replacetrue. Используется только совместно с path, для того чтобы заменить значение ключа полностью, а не добавлять значения.

    example: rowAdd(row: $row1; field: "test2" = "2"; field: "test3" = "3")
        row1: rowCreate(field: "test1" = "1"; field: "test2"="1")
    
    // Результат: 
    // {
    //  "test1": "1",
    //  "test2": "2",
    //  "test3": "3"
    // }
    

    // example_data // { // "data": [ // { // "num": "some num 1", // "value": "some value 1", // "product": {} // }, // { // "num": "some num 1", // "value": "some value 1", // "product": {} // } // ] // } example2: rowAdd(row: #example_data; field: "test2" = "2"; field: "test3" = "3"; path: $list) list: listCreate(item: "data"; item: 0; item: "product") // { // "data": [ // { // "num": "some num 1", // "value": "some value 1", // "product": { // "some data 1": "some data 1", // "some data 2": "some data 2" // } // }, // { // "num": "some num 1", // "value": "some value 1", // "product": [] // } // ] // }

    rowListAdd

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowListAdd(rowlist: ; rowlist: ; field: "" = ; field: "" = )
    

    Возвращает список ассоциативных массивов, дополненный и исправленный последующими rowList: и field:.

    Обязательные параметры

    • rowlistсписки ассоциативных массивов, которые будут сложены.

      • Добавляются или заменяются колонки.
      • Количество элементов в списках должно быть одинаковым и соответствующим по порядку.
      • Если количество элементов в списках разное, то недостающие элементы будут пустотой.

    Необязательные параметры

    • field — колонки, которые будут добавлены в массив в указанном порядке. В двойных кавычках указываются основания field: "base" = $value.

    example: rowListAdd(rowlist: $rowList1; rowlist: $rowList2; field: "test" = 1; field: "testlist" = $valListl; field: "test2" = 0)
        rowList1: jsonExtract(text: '[{"test1":1,"test2":1}, {"test1":2,"test2":2}, {"test1":3,"test2":3}]')
        rowList2: jsonExtract(text: '[{"test10":10}, {"test10":20}, {"test10":30}]')
        valListl: jsonExtract(text: '[5, 6, 7]')
    
    // Результат: [
    //  {
    //    "test": 1,
    //    "test1": 1,
    //    "test2": 0,
    //    "test10": 10,
    //    "testlist": 5
    //  },
    //  {
    //    "test": 1,
    //    "test1": 2,
    //    "test2": 0,
    //    "test10": 20,
    //    "testlist": 6
    //  },
    //  {
    //    "test": 1,
    //    "test1": 3,
    //    "test2": 0,
    //    "test10": 30,
    //    "testlist": 7
    //  }
    // ]
    

    rowKeys

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowKeys(row: )
    

    Возвращает список из ключей ассоциативного массива.

    Обязательные параметры

    example: rowKeys(row: $row)
        row: rowCreate(field: "test1" = "1"; field: "test2" = "1")
    
    // Результат: [
    //  "test1",
    //  "test2"
    // ]
    

    rowValues

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowValues(row: )
    

    Возвращает значения переданного ассоциативного массива.

    Обязательные параметры

    example: rowValues(row: $row)
        row: rowCreate(field: "test1" = "1"; field: "test2" = "1")
    
    // Результат: 
    // [
    //  "1",
    //  "1"
    // ]
    

    rowKeysReplace

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowKeysReplace(row: ; from: ; to: ; recursive: false)
    

    Возвращает ассоциативный массив c ключами замененными с from: на to:.

    Обязательные параметры

    Необязательные параметры

    • recursive — проверять вложенные ключи для списков ассоциированных массивов.

      • true — искать внутри.
      • false — не искать (по умолчанию).
      • "3" — искать внутри на указанном уровне. В том числе можно передать как список. Уровни нумеруются от 0 — верхний, первое вложение — 1 итд.
    example: rowKeysReplace(row: $rowList; from: "a"; to: "c"; recursive: true)
        rowList: jsonExtract(text: '[{"a": 1, "b": 2}, {"a": 4, "d": 4}]')
    
    // Результат: [{"c": 1,"b": 2},{"c": 4,"d": 4}]
    

    rowKeysRemove

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: rowKeysRemove(row: ; key: ; keys: ; recursive: false)
    

    Возвращает ассоциированный массив с удаленными ключами (колонками) key: или keys:.

    Обязательные параметры

    Необязательные параметры

    • keyстрок, name-ключа (колонки) которую нужно удалить.

    • keysсписок строк name-ключей (колонок), которые нужно удалить.

    • recursive — проверять вложенные ключи для списков ассоциированных массивов.

      • true — искать внутри.
      • false — не искать (по умолчанию).
      • "3" — искать внутри на указанном уровне. В том числе можно передать как список. Уровни нумеруются от 0 — верхний, первое вложение — 1 итд.
    example: rowKeysRemove(row: $rowList; key: "a"; recursive: true)
        rowList: jsonExtract(text: '[{"a": 1, "b": 2}, {"a": 4, "d": 4}]')
    
    // Результат: [{"b": 2},{"d": 4}]
    

    Логика

    if

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: if(condition: ; then: ; else: )
    

    Возвращает при верном условии condition: значение секции then:, в противном случае — значение секции else: либо null, если она не задана.

    Обязательные параметры

    Необязательные параметры

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

    • then — значение, либо ссылка на строку или параметр, которые будут рассчитаны в случае, если все condition: выполнились в true.

    • else — значение, либо ссылка на строку или параметр, которые будут рассчитаны в случае, если хотя бы один condition: выполнился в false.

    example1: if(condition: $test1 = 1; condition: $test11 = 2; then: true; else: false)
        test1: 1
        test11: 3
    // Результат: false 
    
    example2: if(condition: $p1_2 < $p2_2; condition: $p2_2 < $p3_2; then: "Start"; else: "Stop")
    p1_2: 10
    p2_2: 20
    p3_2: 30
    
    // Результат: "Start"
    
    example3: if(condition: $p1_3 > $p2_3; then: true)
    p1_3: 10
    p2_3: 20
    
    // Результат: ""
    

    while

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: while(preaction: ; condition: ; limit: ; action: ; postaction: ; iterator: )
    

    Выполняет действия action:, если выполняются условия condition: с количеством повторений limit:, изменяя iterator: на +1 в каждой итерации. Возвращает значение последнего preaction|action|postaction в зависимости от их наличия в функции.

    Необязательные параметры

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

      • Множественный параметр — если указано несколько параметров, то они будут выполнены в той последовательности, в которой указаны в функции.
      • Последний preaction помимо действия или вместе с ним (зависит от [функции действия][24]) возвращает значение, если нет последующих action, postaction или они не выполнены по условиям condition.
    • limitчисло, максимальное количество итераций, если condition в каждой итерации проходят в true.

    • condition — условие срабатывания вида "значение 1" = "значение 2".

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

      • Множественный параметр — если указано несколько параметров, то они будут выполнены в той последовательности, в которой указаны в функции.
      • Последний action помимо действия или вместе с ним (зависит от [функции действия][24]) возвращает значение.
    • postactionзначение строки кода, выполняется после всех итераций. При условии, что выполнен хотя бы один action!

      • Множественный параметр — если указано несколько параметров, то они будут выполнены в той последовательности, в которой указаны в функции.
      • Последний action помимо действия или вместе с ним (зависит от [функции действия][24]) возвращает значение.
    • iterator — счетчик номера итерации.

      • Нумерация итераций начинается с 0 (ноля).
      • Задается как одна строка и обозначает название итератора для возможности обращения к нему как к переменной внутри кода. Назначайте разные переменные если используете несколько while с итераторами в одной секции кода.
      • При отсутствии нет возможности обращения к значению итератора.
    example: while(action: $set1; action: $set2)
        set1: set(table: 'table1'; field: 'field1' = 1)
        set2: set(table: 'table2'; field: 'field2' = 2)
    
    // Результат: Присвоит полям field1 и field2 в таблицах table1 и table2 значения 1 и 2 соответственно.
    

    var

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: var(name: ""; value: ; default: )
    

    Сохраняет и отдает значение переменной внутри секции кода конкретного поля.

    Обязательные параметры

    • nameодна строка, имя переменной по которому идет обращение к данным.

      • Необходимо следить, чтобы в пределах одной секции кода name: не повторялись и не пересекались со значениями других переменных внутри кода.

    Необязательные параметры

    example1: while(action: $set; limit: 30; iterator: "iter1")
    set: var(name: "count"; value: $plus)
    plus: listAdd(list: $var; item: $i)
    var: var(name: "count"; default: $#lc)
    i: dateAdd(date: $#nd; days: $days)
    days: $#iter1 * -1
    
    
    example2: while(preaction: $zero2; action: $set2; limit: 30; iterator: "iter2")
    zero2: var(name: "count"; value: $#lc)
    set2: var(name: "count"; value: $plus2)
    plus2: listAdd(list: $#count; item: $i2)
    i2: dateAdd(date: $#nd; days: $days2)
    days2: $#iter2 * -1
    
    example3: $while{var: "count" = $#lc}
    while: while(action: $set3; limit: 30; iterator: "iter3")
    set3: var(name: "count"; value: $plus3)
    plus3: listAdd(list: $#count; item: $i3)
    i3: dateAdd(date: $#nd; days: $days3)
    days3: $#iter3 * -1
    

    В логике Тотума вместо циклов существенно более эффективно использовать рекурсии или функцию listReplace, обрабатывающую списки построчно.

    globVar

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: globVar(name: ""; value: ; default: ; date: ; block: )
    

    Сохраняет и отдает значение переменной глобально независимо от транзакций. Короткое обращение @$name_glob_var

    Запись происходит вне транзакционной модели, в тот момент, когда вызывается функция с передачей name и value.

    Обязательные параметры

    • nameодна строка, имя переменной по которому идет обращение к данным.

    Необязательные параметры

    • value — значение, присваиваемое переменной и возвращаемое функцией.

      • Если отсутствует, то переменная возвращает последнее записанное значение или null.
      • Актуализирует date переменной
    • default — работает только при отсутствии параметра value, присваивает значение переменной в том случае если при обращении к ней она не определена. Вычисляется при старте функции в любом случае.

      • Выставляет date переменной, если ее не было.
    • date — работает при любом наборе необязательных параметров

      • true - функция возвращает структуру вида {"date":"2021-07-27 18:00:58.957903","value":VALUE}
    • blockчисло в секундах или false. Используется только если нет value, только при запросе переменной. Позволяет установить блокировку запроса для другого процесса, который будет ждать пока истечет блокировка.

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

      Чтобы этого избежать, при запросе значения устанавливается блокировка, которая снимается по истечении указанного времени, либо при записи переменной или запросе ее значения с передачей block: false.

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

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

    Рекомендуется использовать вместе с tryCatch — в этом случае в catch записывается обнуление переменной или установку ее в стартовое значение, которое произойдет если транзакция будет отменена.

    procVar

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: procVar(name: ""; value: ; default: )
    

    Сохраняет и отдает значение переменной в процессе php. Короткое обращение $@name_proc_var

    Обязательные параметры

    • nameодна строка, имя переменной по которому идет обращение к данным.

    Необязательные параметры

    • value — значение, присваиваемое переменной и возвращаемое функцией.

    • default — работает только при отсутствии параметра value, присваивает значение переменной в том случае если при обращении к ней она не определена. Вычисляется при старте функции в любом случае.

    exec

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: exec(code: ; var: "" =; var: "" = ; ssh: )
    

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

    Обязательные параметры

    • code — код для выполнения в синтаксисе Totum.

      • Может передаваться только как одна строка содержащая код в синтаксисе Totum.
      • Исполняемый код выполняется как код той секции, из которой вызывается.

      Может быть передан в таком синтаксисе:

      =: exec(code: $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

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

      Также в code можно использовать обращение @table.field или @table.field.key_field[key]. В этом случае если кликнуть на @... будет показана кнопка открывающая на редактирование целевой код во всплывающем окне.

    Необязательные параметры

    • var — определение переменной и ее значения для передачи в код определенный в code:.

    • sshtrue, если нужно отделить действие в отдельный процесс и вывести из текущей цепочки. Использование должно быть разрешено в Conf.php.

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

      • Пример использования, топик на GitHub —>

    example: exec(code: @table.h_code_text.name[some_code]; var: "varname" = 10)
    
    // h_code_text 
    // "=: 10 + $#varname"
    
    // Результат: 20
    

    errorException

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: errorException(text: )
    

    Прерывает выполнение всей цепочки кодов и экшенов, отменяя все совершенные изменения.

    Если цепочка отлавливает исключения через функцию tryCatch, то выполнение продолжится с блока Catch: этой функции.

    Указанное в text: сообщение попадет в переменную с названием, заданным параметром error: вызова функции tryCatch.

    Обязательные параметры

    example: if(condition: $#nfv="Недопустимое значение"; then: $error)
        error: errorException(text: "Вы ввели недопустимое значение. Ничего не сохранилось.")
    
    // Результат: Если код выполнялся в рамках веб-сессии, пользователю выведется сообщение об ошибке с текстом: "Вы ввели недопустимое значение. Ничего не сохранилось." и указанием названия таблицы, в которой размещался код. 
    // Если код выполнялся  api-скриптом, ему вернется сообщение об ошибке в формате этого api. 
    // Крон получит exeption и может отправить письмо об ошибке администратору. 
    

    tryCatch

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: tryCatch(try: ; catch: ; error: "exception")
    

    Выполняет try:. Если при выполнении try: произошла ошибка, откатывающая транзакцию, выполняет catch: и передает в переменную error текст ошибки.

    Обязательные параметры

    Необязательные параметры

    • errorодна строка переменная, в которую будет передан текст ошибки в случае ошибки.
    example1: tryCatch(try: $test1; catch: 2; error: "exception")
        test1: 1
    
    // Результат: 1
    
    example: tryCatch(try: $test2; catch: $#exception; error: "exception")
        test2: errorExeption(text: "test")
    
    // Результат: test
    

    Имеет сахар вида:

    =name_row_for_catch: 
    
    name_row_for_catch: 
    

    Запись такого вида означает, что это tryCatch где в catch: указана строка кода name_row_for_catch и error: "exception".

    Рекомендуется использовать вместе с глобальными переменными, записывая в catch откат к исходным значениям в случае ошибки в try.

    =catch: 1
    
    catch: 2
    
    // Результат: 1
    
    =catch: errorExeption(text: "test")
        catch: $#exception 
    
    // Результат: test
    

    Проброс в catch при ошибке одновременного доступа гарантировано останавливает автоматический перезапуск действия!

    Пересчет, вставка и изменение

    reCalculate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: reCalculate(table: ''; cycle: ; hash: ; where: '' = ; field: '')
    

    Пересчитывает указанную таблицу определенную в table: в соответствии с ее единицей пересчета.

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

    Обязательные параметры

    Необязательные параметры

    Если в where: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: reCalculate(table: 'table_name'; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    Пример 1:

    tablename — таблица со строчной единицей пересчета.

    id fieldname
    1 test1
    2 test2
    3 test3

    example1: recalculate(table: 'tablename'; where: 'fieldname' = "test3")
    
    // Результат: пересчет строки id = 3 
    

    Пример 2:

    tablename — расчетная таблица являющаяся единицей пересчета.

    id fieldname
    1 test1
    2 test2
    3 test3

    example2: recalculate(table: 'tablename')
    
    // Результат: пересчет всех полей
    

    Пример 3:

    tablename — таблица со строчной единицей пересчета и полями в хедере.

    h_fieldname

    id fieldname
    1 test1
    2 test2
    3 test3

    example3: recalculate(table: 'tablename'; where: 'id' = 0)
    
    // Результат: пересчет только h_fieldname
    

    reCalculateCycle

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: reCalculateCycle(table: ''; cycle: )
    

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

    Обязательные параметры

    • tablename-параметр name таблицы циклов, в которой будут пересчитаны циклы.

    • cycle — определяет цикл, или список циклов для пересчета.

    Пример:

    cycles_table calcs_table_1 (вызывает пересчет calcs_table_3) calcs_table_2 calcs_table_3

    example: reCalculateCycle(table: 'cycles_table'; cycle: 3)
    
    // Результат: Будет пересчитана *calcs_table_1*, пересчет которой вызовет пересчет *calcs_table_3*, затем пересчитается *calcs_table_2*
    

    set

    Доступен в секциях: Код действия.

    =: set(table: ''; cycle: ; hash: ; field: '' = ; where: '' = ; log: true)
    
    • Изменяет значения в полях field: в таблице table: вне строчной части.

    • Изменяет значения в одной строке в полях field: в таблице table:.

    Обязательные параметры

    • tablename-параметр name таблицы, в которой изменяются данные.

    • fieldname-параметр поле в таблице table:, в котором изменяются данные и значение.

      • Может передаваться одним значением или списком как число, строка, дата или булево значение в зависимости от типа поля field: в таблице table:.
      • Произойдет пересчет всех остальных полей входящих в изменяемую единицу пересчета.
      • Множественный параметр — может быть передано значение нескольких полей. Порядок не имеет значение, соответствие определяется по name.
      • Для чисел может быть передано относительное значение в виде одного числа со следующим синтаксисом 'fieldname' + Y (добавить) или 'fieldname' - Y (вычесть), 'fieldname' * Y (умножить) и 'fieldname' / Y (разделить), а также аналогичные действия с процентами 'fieldname' + 2%.
      • Для селектов можно добавлять или удалять основания передавая их в виде одного числа или списка и используя вместо =+ или -.

      Если передать строковое значение *NONE* то параметр будет отключен: field: 'field_name' = "*NONE*".

    Необязательные параметры

    Если в where: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: set(table: 'table_name'; field: 'field_name' = "new_value"; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример 1:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23

    example1: set(table: 'tablename'; field: 'fieldname1' = "ZZZ"; where: 'fieldname2' = "test22")
    

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 ZZZ test22
    3 test31 test23

    Пример 2:

    tablename

    id fieldname1 fieldname2
    1 test11 10
    2 test21 20
    3 test31 30

    example2: set(table: 'tablename'; field: 'fieldname2' + 100; where: 'fieldname1' = "test21")
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 test11 10
    2 test21 120
    3 test31 30

    setList

    Доступен в секциях: Код действия.

    =: setList(table: ''; cycle: ; hash: ; field: '' = ; where: '' = ; log: )
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, в которой изменяются данные.

    • fieldname-параметр поле в таблице table:, в котором изменяются данные, а также его значение.

      • Может передаваться одним значением или списком как число, строка, дата или булево значение в зависимости от типа поля field: в таблице table:.
      • При изменении произойдет пересчет всех остальных полей входящих в изменяемую единицу пересчета.
      • Множественный параметр — может быть передано значение нескольких полей. Порядок не имеет значение, соответствие определяется по name.
      • Для чисел может быть передано относительное значение в виде одного числа со следующим синтаксисом 'fieldname' + Y (добавить) или 'fieldname' - Y (вычесть), 'fieldname' * Y (умножить) и 'fieldname' / Y (разделить), а также аналогичные действия с процентами 'fieldname' + 2%.
      • Для селектов можно добавлять или удалять основания передавая их в виде одного числа или списка и используя вместо =+ или -.

      Если передать строковое значение *NONE* то параметр будет отключен: field: 'field_name' = "*NONE*".

    Необязательные параметры

    Если в were: передать значение *ALL*, то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: setList(table: 'table_name'; field: 'field_name' = "new_value"; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример 1:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23

    example1: setlist(table: 'tablename'; field: 'fieldname1' = "ZZZ"; where: 'id' >= 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 ZZZ test22
    3 ZZZ test23

    Пример 2:

    tablename

    id fieldname1 fieldname2
    1 test11 10
    2 test21 20
    3 test31 30

    example2: set(table: 'tablename'; field: 'fieldname2' - 10%; where: 'id' < 3)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 test11 9
    2 test21 18
    3 test31 30

    setListExtended

    Доступен в секциях: Код действия.

    =: setListExtended(table: ''; cycle: ; hash: ; field: '' = ; where: '' = ; log: true)
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, в которой изменяются данные.

    • fieldname-параметр поле в таблице table: в виде 'field_name' = + - * / список или одно значение.

      • Множественный параметр, можно изменять несколько полей одновременно.
      • В случае, если правый параметр в field: представлен в виде списка, изменение будет применено построчно в соответствии со списком в where:.
      • Если одно из правых частей в field: представляет собой одно значение, то в каждую изменяемую строку будет установлено это значение.
      • Если одни из списков в field: меньше другого и меньше количества изменяемых строк, то в качестве недостающих значений будет выставлен null.

      Если передать строковое значение *NONE* то параметр будет отключен: field: 'field_name' = "*NONE*".

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для изменения во временных таблицах.

    • wherename-параметр, условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Если в правую часть передается список — то он соотносится со списками в правой части параметров field:. Таким образом изменения формируются для множества строк сразу.

      Если передать строковое значение *ALL* параметр будет отключен: where: 'field_name' = "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    test

    id a b c
    1 q 10 z
    2 w 20 x
    3 e 30 c
    4 e 30 c
    5 e 30 c

    example: setListExtended(table: 'test'; field: 'a' = $listA; field: 'b' + $listB; field: 'c' = "z"; where: 'id' = $listId)
        listA: listCreate(item: "r"; item: "t"; item: "y")
        listB: listCreate(item: 3; item: 2; item: 1)
        listId: listCreate(item: 1; item: 2; item: 3)
    
    // Результат:  Таблица изменена.
    

    test

    id a b c
    1 r 13 z
    2 t 22 z
    3 y 31 z
    4 e 30 c
    5 e 30 c

    insert

    Доступен в секциях: Код действия

    =: insert(table: ''; cycle: ; hash: ; field: '' = ; inserts: "inserts"; after: ; log: true)
    

    Функция действия — добавляет одну строку в целевую таблицу.

    Обязательные параметры

    • tablename-параметр, таблица в которую будет добавляться строка.

    Необязательные параметры

    • field — в формате 'name' = "значение", заполняемые при вставке поля.

      • Множественный параметр, порядок не имеет значения, соответствие определяется по name.
      • Поля не переданные через field: будут рассчитаны в соответствии со своей секцией кода или дефолтных значений.

      Если передать строковое значение *NONE* то параметр будет отключен: field: 'field_name' = "*NONE*".

    • cycle — определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временных таблиц.

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

    • afterчисло, для таблиц сортируемых по n — id строки, после которой вставить новую.

      • Если передать в качестве значение параметра 0 то это означает, что перед всеми имеющимися строками.
    • fieldsассоциативный массив, в качестве ключей которого выступают name полей.

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23

    example: while(action: $insert; action: $showid)
        insert: insert(table: 'tablename'; field: 'fieldname1' = "test"; field: 'fieldname2' = "globcalcs"; inserts: "shownewid")
        showid: $#shownewid
    
    // Результат: Добавлена строка, код возвращает значение [4]
    

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23
    4 xxx yyy

    insertList

    Доступен в секциях: Код действия.

    =: insertList(table: ''; cycle: ; hash: ; fields: ; field: '' = ; inserts: "inserts"; after: ; log: true)
    

    Добавляет несколько строк в таблицу table: с указанием значений полей field:

    Обязательные параметры

    • tablename-параметр, name таблицы, в которую добавляются строки.

    • field — в формате 'name' = "значение". Дополняет и заменяет, если повторяется name указанное в fields:.

      • Если в значение передан список, то будет добавлено количество строк по количеству элементов в списке. Каждая добавленная строка будет 1 к 1 содержать значение из переданного списка.

      • Если в вызове несколько field и в одном список а в другом значением выступает одно значение

        • Будет добавлено столько строк, сколько содержится в field в котором передан список.
        • field в котором передано одно значение будет содержать его во всех строках.
        • Если необходимо заполнить несколько строк одинаковыми списками — создайте список списков при помощи listRepeat.

      Если передать строковое значение *NONE* то параметр будет отключен: field: 'field_name' = "*NONE*".

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временных таблиц.

    • fieldsассоциативный массив, в качестве ключей которого выступают name полей, значения — списки для построчного заполнения добавляемых строк.

      Или список ассоциативных массивов. Любой из вариантов.

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

    • afterчисло, для таблиц сортируемых по n — id строки, после которой вставить новые строки.

      • Если передать в качестве значение параметра 0 то это означает, что перед всеми имеющимися строками.
    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23

    example: while(action: $insert; action: $showid)
        insert: insertList(table: 'tablename'; fields: $row1; field: 'fieldname2' = $list2; inserts: "shownewid")
            row1: rowCreate(field: "fieldname1" = $list1)
            list1: listCreate(item: "XX"; item: "XXX")
            list2: listCreate(item: "YY"; item: "YYY")
    
        showid: $#shownewid
    
    // Результат: Добавлены строки, код возвращает значение [4,5]
    
    example2: while(action: $insert2; action: $showid2)
        insert2: insertList(table: 'tablename'; fields: $selectRowList; inserts: "shownewid2")
            selectRowList: selectRowList(table: 'table_xy'; field: 'xxx'; field: 'yyy')
    
        showid2: $#shownewid2
    
    // Результат: Добавлены строки, код возвращает значение [4,5]
    

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23
    4 XX YY
    5 XXX YYY

    delete

    Доступен в секциях: Код действия.

    =: delete(table: ''; cycle: ; hash: ; where: '' = ; log: true)
    

    Удаляет строку в таблице table: соответствующую условиям where:.

    Обязательные параметры

    • tablename-параметр name таблицы, из которой берутся данные.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет удаление первой строки в соответствии с сортировкой заданной в order:.
      • Если по условиям не выбирается ни одной строки, то действие выполнятся не будет.

    Если в were: передать значение *ALL* то этот where: будет выключен! Это можно сделать через отдельную строку, например:

    =: delete(table: 'table_name'; where: 'search_field' = $if)
    if: if(condition: #connected_field = ""; then: "*ALL*"; else: #connected_field)
    

    Список из одного значения ["*ALL*"] будет обработан так же как и "*ALL*".

    Необязательные параметры

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

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

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    example: delete(table: 'tablename'; where: 'id' = 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20
    3 10 20

    deleteList

    Доступен в секциях: Код действия.

    =: deleteList(table: ''; cycle: ; hash: ; where: '' = ; log: true)
    

    Удаляет несколько строк в таблице table: соответствующие условиям where:.

    Обязательные параметры

    • tablename-параметр, name таблицы из которой берутся данные.

    • wherename-параметр, условие выбора строк в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булевое значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет удаление всех строк соответствующих сравнению.
      • Если по условиям не выбирается ни одной строки, то действие выполнятся не будет.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

      Если передать строковое значение *ALL* параметр будет отключен: where: 'field_name' = "*ALL*".

    Необязательные параметры

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

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

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    example: deleteList(table: 'tablename'; where: 'id' >= 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20

    duplicate

    Доступен в секциях: Код действия.

    =: duplicate(table: ''; cycle: ; hash: ; field: '' = ; where: '' = ; after: ; log: true)
    

    Дублирует одну строку в таблице table:. Применим только в строчной части.

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится дублирование.

    • fieldname-параметр поле в таблице table: в котором изменяются данные при дублировании, а также его значение по формату field: 'fieldname' = "value".

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временных таблиц.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Параметр может отсутствовать, если поле не содержит строк (расположено вне строчной части таблицы). Если параметр отсутствует для выборки из поля строчной части, то результатом работы функции будет является одно первое значение в соответствии с сортировкой заданной в order:.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет является дублирование первой строки в соответствии с сортировкой заданной в order:.
      • Если по условиям не выбирается ни одной строки, действие произведено не будет.
      • Если в were: передать значение *ALL* то этот where: будет выключен!
    • inserts — имя переменной, в которую будет добавлен лист с id вставленных строк в результате операции.

      • Задается как одна строка и обозначает название переменной для возможности обращения к ней как к переменной внутри кода. Назначайте разные переменные если используете несколько while с итераторами в одной секции кода.
    • afterчисло, для таблиц сортируемых по n — id строки, после которой вставить дублированную.

      • Если передать в качестве значение параметра 0 то это означает, что перед всеми имеющимися строками.
    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23

    example: duplicate(table: 'tablename'; field: 'fieldname1' = "ZZZ"; where: 'id' = 3)
    
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23
    4 ZZZ test23

    duplicateList

    Доступен в секциях: Код действия.

    =: duplicateList(table: ''; cycle: ; hash: ; field: '' = ; where: '' = ; after: ; log: true)
    

    Дублирует несколько строк в таблице table:. Применим только в строчной части.

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится дублирование.

    • fieldname-параметр поле в таблице table: в котором изменяются данные при дублировании, а также его значение по формату field: 'fieldname' = "value".

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временной таблице.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то будет дублированы все выбранные строки в соответствии с сортировкой заданной в order:.
      • Если по условиям не выбирается ни одной строки, действие произведено не будет.
      • Если в were: передать значение *ALL* то этот where: будет выключен!
    • inserts — имя переменной, в которую будет добавлен лист с id новых строк.

    • afterчисло, для таблиц сортируемых по n — id строки, после которой вставить новые.

      • Если передать в качестве значение параметра 0 то это означает, что перед всеми имеющимися строками.
    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23

    example: duplicateList(table: 'tablename'; field: 'fieldname1' = "ZZZ"; where: 'id' >=2)
    
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 test11 test12
    2 test21 test22
    3 test31 test23
    4 ZZZ test22
    5 ZZZ test23

    pin

    Доступен в секциях: Код действия.

    =: pin(table: ''; cycle: ; hash: ; field: ''; where: '' = ; log: true)
    

    Устанавливает фиксацию значения для одного поля с активной секцией кода.

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится действие.

    • fieldname-параметр поле в таблице table:.

      • Множественный параметр, можно указать несколько полей.

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временных таблиц .

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет является изменение в первой строке в соответствии с сортировкой заданной в order:.
      • Если по условиям не выбирается ни одной строки, то действие осуществлено не будет.
      • Для изменения поля вне строчной части не используется.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

      Если передать строковое значение *ALL* параметр будет отключен: where: 'field_name' = "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    example: pin(table: 'tablename'; field: 'fieldname1'; where: 'id' = 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 [HAND] 20
    3 10 20

    pinList

    Доступен в секциях: Код действия.

    =: pinList(table: ''; cycle: ; hash: ; field: ''; where: '' = ; log: true)
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится действие.

    • fieldname-параметр поле в таблице table:.

      • Множественный параметр, можно указать несколько полей.

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временных таблиц.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет являться фиксация значения во всех строках.
      • Если по условиям не выбирается ни одной строки, то действие осуществлено не будет.
      • Для изменения поля вне строчной части не используется.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

      Если передать строковое значение *ALL* параметр будет отключен: where: 'field_name' = "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    example: pinList(table: 'tablename'; field: 'fieldname1'; where: 'id' >= 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 [HAND] 20
    3 10 [HAND] 20

    clear

    Доступен в секциях: Код действия.

    =: clear(table: ''; cycle: ; hash: ; field: ''; where: '' = ; log: true)
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится действие.

    • fieldname-параметр поле в таблице table:.

      • Множественный параметр, можно указать несколько полей.

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, hash таблицы для выполнения действия во временной таблице.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет является изменение в первой строке в соответствии с сортировкой заданной в order:.
      • Если по условиям не выбирается ни одной строки, то действие осуществлено не будет.
      • Не используется для изменения поля вне строчной части.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

      Если передать строковое значение *ALL* параметр будет отключен: where: 'field_name' = "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 12 [HAND] 20
    3 10 20

    example: clear(table: 'tablename'; field: 'fieldname1'; where: 'id' = 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    clearList

    Доступен в секциях: Код действия.

    =: clearList(table: ''; cycle: ; hash: ; field: ''; where: '' = ; log: true)
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится действие.

    • fieldname-параметр поле в таблице table:.

      • Множественный параметр, можно указать несколько полей.

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для временных таблиц hash таблицы.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то действие будет произведено во всех выбранных строках.
      • Если по условиям не выбирается ни одной строки, то действие осуществлено не будет.
      • Для изменения поля вне строчной части не используется.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

      Если передать строковое значение *ALL* параметр будет отключен: where: 'field_name' = "*ALL*".

    • logtrue для добавления операции во внутреннюю таблицу логирования.

    Если в log: передать "строку" вместо true то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 12 [HAND] 20
    3 12 [HAND] 20

    example: clearList(table: 'tablename'; field: 'fieldname1'; where: 'id' >= 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    restore

    Доступен в секциях: Код действия.

    =: restore(table: ''; cycle: ; hash: ; where: '' = ; log: true)
    

    Восстанавливает строку в таблице table: соответствующую условиям where: осуществляя поиск среди скрытых.

    Обязательные параметры

    • tablename-параметр name таблицы, из которой берутся данные.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булево значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет удаление первой строки в соответствии с сортировкой заданной в order:.
      • Если по условиям не выбирается ни одной строки, то действие выполнятся не будет.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

    Необязательные параметры

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    restoreList

    Доступен в секциях: Код действия.

    =: restoreList(table: ''; cycle: ; hash: ; where: '' = ; log: true)
    

    Восстанавливает несколько строк в таблице table: соответствующие условиям where: среди скрытых строк.

    Обязательные параметры

    • tablename-параметр, name таблицы из которой берутся данные.

    • wherename-параметр, условие выбора строк в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булевое значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет удаление всех строк соответствующих сравнению.
      • Если по условиям не выбирается ни одной строки, то действие выполнятся не будет.
      • Если в were: передать значение *ALL* то этот where: будет выключен!

    Необязательные параметры

    Если в log: передать "строку" вместо true, то в логе вместо Скрипт будет записана переданная строка.

    Пример:

    tablename

    id fieldname1 fieldname2
    1 10 20

    example: restoreList(table: 'tablename'; where: 'id' >= 2)
    

    Результат:

    tablename

    id fieldname1 fieldname2
    1 10 20
    2 10 20
    3 10 20

    execButton

    Доступен в секциях: Код действия.

    =: execButton(table: ''; cycle: ; hash: ; field: ''; where: '' = ; order: '' asc)
    

    Запускает выполнение кода-действия одной кнопки. Код выполняется из окружения кнопки, которая его содержит.

    Обязательные параметры

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для выполнения действия во временной таблице.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булевое значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то результатом работы функции будет выполнение кода кнопки из первой строки, выбранной в порядке order.
      • Если по условиям не выбирается ни одной строки, то действие не будет выполнено.
      • Если в were: передать значение *ALL* то этот where: будет выключен!
    • ordername-параметр поле в таблице table:, по которому будет осуществляется сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутствует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию
      • desc — по убыванию
    • var"var" = "value" создание переменой при вызове кода кнопки.

    execButtonList

    Доступен в секциях: Код действия.

    =: execButtonList(table: ''; cycle: ; hash: ; field: ''; where: '' = ; order: '' asc; limit: )
    

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

    Обязательные параметры

    Необязательные параметры

    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для выполнения действия во временных таблицах.

    • wherename-параметр условие выбора строки в строчной части. Левая часть определяет поле сравнения в таблице table:, а правая — значение сравнения.

      • Множественный параметр — если указано несколько параметров where:, то выборка осуществляется на пересечении их условий, применяемых слева направо.
      • Выборка возможна только из строчной части таблицы.
      • Возможны любые операторы сравнения.
      • Может передаваться как число, строка, дата или булевое значение
      • Может быть как одним значением, так и списком. В зависимости от этого могут получатся различные комбинации сравнений: один к одному, один ко многим, многие ко многим.
      • Если по условиям выбираются значения из нескольких строк, то будут выполнены коды кнопок в выбранных строках в порядке order:.
      • Если по условиям не выбирается ни одной строки, то действие выполнено не будет.
      • Если в were: передать значение *ALL* то этот where: будет выключен!
    • ordername-параметр поле в таблице table:, по которому будет осуществляется сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутствует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию
      • desc — по убыванию
    • limitчисло, задает лимит выборки.

      • Если передать в качестве значение параметра 0 или "", то он будет отключен!
    • var"var" = "value" создание переменой при вызове кода кнопки.

    reorder

    Доступен в секциях: Код действия.

    =: reorder(table: ; ids: ; after: )
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, в которой производится изменение порядка.

    • idsсписок из id перемещаемых строк в том порядке, в котором они должны располагаться.

    Необязательные параметры

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

      • Если не указан, то произойдет пересортировка id на их текущих позициях.
      • Если передать в качестве значение параметра 0, то это означает, что перед всеми имеющимися строками.

    Вызовы окон и скриптов

    linkToTable

    Доступен в секциях: Код действия.

    =: linkToTable(table: ''; cycle: ; hash: ; title: ; filter: '' = ; field: '' = ; target: "iframe|blank|self|parent"; width: 800; refresh: false; header: true; footer: true)
    

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

    Обязательные параметры

    Необязательные параметры

    • titleстрока, заголовок, отображаемый в открытом окне для iframe.

    • filtername-параметр значение поля префильтра. Левая часть определяет поле, а правое его значение.

    • fieldname-параметр значение поля строчной части. Левая часть определяет поле, а правое его значение. При наличии хотя бы одного параметра будет открыта строка добавления с введенными значениями переданных полей.

      • Множественный параметр — если указано несколько параметров, то значения будут переданы нескольким полям.
      • Параметр может отсутствовать, тогда таблица будет открыта без открытия строки добавления.
      • Передача значения таким образом может быть осуществлена только полю с активной настройкой Показывать в WEB.
      • Может передаваться как: число, строка, дата или булево значение, может быть как одним значением, так и списком. Для корректной работы, передаваемые данные должны соответствовать типу поля.
    • pointingname-параметр поле в которое будет поставлен указатель при открытии таблицы.

    • refresh — определяет будет ли обновляться таблица-родитель при закрытии окна для варианта iframe параметра target:.

      • true при необходимости обновить данные.
      • "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений.
      • "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.
      • При отсутствии принимается равным false.
    • cycleчисло, одно или список, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для открытия созданной ранее временной таблицы.

    • target — каким образом будет открыта таблица.

      • Передается как одна строка:

        • iframe — в iframe поверх остальных окон.
        • blank — в новом окне (для корректной работы требуется разрешить открытие всплывающих окон в браузере)
        • parent — в базовом нижнем окне, все открытые вложенные окна будут закрыты.
        • self — в текущем окне.
        • Если не указан — обрабатывается как self
    • width — определяет ширину окна в пикселях для варианта iframe параметра target:.

      • Передается как число если требуется указать конкретный размер.
      • Передается как строка формата "80vw" если требуется указать размер относительно окна браузера в процентах.
      • При отсутствии размер определяется программой самостоятельно в зависимости от базовой ширины открываемой таблицы.
    • header — определяет будет ли показан хедер в открытом окне при показе в iframe.

      • false при необходимости скрыть.
      • При отсутствии принимается равным true.
    • footer — определяет будет ли показан футер в открытом окне при показе в iframe.

      • false при необходимости скрыть.
      • При отсутствии принимается равным true.
    • topbuttonsfalse, при открытии окна в iframe: кнопка печати, управления видимостью полей и csv будут скрыты.

    • bottombuttonsfalse, при открытии окна в iframe: кнопки управления внизу окна будут скрыты.

    example: linkToTable(table: 'tablename'; title: "Открываемая таблица"; filter: 'fl_id' = 10; field: 'fieldname' = "Данные передаваемые в поле"; target: "iframe"; width: "80vw"; refresh: true)
    

    linkToScript

    Доступен в секциях: Код действия.

    =: linkToScript(uri: "http://"; post: "" = ; title: ; target: "iframe|blank|self|parent"; width: 800; refresh: false)
    

    Открывает окно и вызывает сторонний скрипт с передачей ему значений через POST

    НЕ ИСПОЛЬЗОВАТЬ В CRON!

    Обязательные параметры

    • uriстрока, адрес по которому открывается скрипт.

    Необязательные параметры

    • postстрока, параметры, передаваемые скрипту в формате POST.

      • При отсутствии параметра данные не передаются.
    • titleстрока, заголовок, отображаемый в открытом окне для iframe.

    • target — каким образом будет открыта таблица.

      • Передается как одна строка:

        • iframe — в iframe поверх остальных окон.
        • blank — в новом окне (для корректной работы требуется разрешить открытие всплывающих окон в браузере)
        • parent — в базовом нижнем окне, все открытые вложенные окна будут закрыты.
        • self — в текущем окне.
        • Если не указан — обрабатывается как self
    • width — определяет ширину окна в пикселях для варианта iframe параметра target:.

      • Передается как число если требуется указать конкретный размер.
      • Передается как строка формата "80vw" если требуется указать размер относительно окна браузера в процентах.
    • refresh — определяет, будет ли обновляться таблица-родитель при закрытии окна для варианта iframe параметра target:.

      • true при необходимости обновить данные.
      • "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений.
      • "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.
      • При отсутствии принимается равным false.
    example: linkToScript(uri: "https://wmdao.ru"; title: "wmdao.ru"; target: "iframe"; width: 800; refresh: false)
    

    linkToDataTable

    Доступен в секциях: Код действия.

    =: linkToDataTable(table: ''; title: ; width: 800; height: "80vh"; data: $rowList; params: $row; refresh: false; header: true; footer: true; hide: false)
    

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

    Функция может быть вызвана из кода с параметром hide: true для расчета через временную таблицу.

    Обязательные параметры

    Необязательные параметры

    • titleстрока, заголовок окна.

    • width — определяет ширину окна в пикселях.

      • Передается как число если требуется указать конкретный размер.
      • Передается как строка формата "80vw" если требуется указать размер относительно окна браузера в процентах.
      • При отсутствии размер окна определяется программой самостоятельно в зависимости от базовой ширины открываемой таблицы.
    • dataсписок ассоциированных массивов для заполнения строчной части таблицы. В качестве ключей должны быть name полей строчной части.

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

    • pointingname-параметр поле в которое будет поставлен указатель при открытии таблицы.

    • height — определяет высоту окна в пикселях для варианта iframe параметра target:.

      • Передается как число если требуется указать конкретный размер.
      • Передается как строка формата "80vh" если требуется указать размер относительно окна браузера в процентах.
      • При отсутствии размер окна определяется программой самостоятельно в зависимости от высоты окна, в котором открывается текущее окно.
    • refresh — определяет, будет ли обновляться таблица-родитель при закрытии окна для варианта iframe параметра target:.

      • true при необходимости обновить данные.
      • "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений.
      • "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.
      • При отсутствии принимается равным false.
    • header — определяет будет ли показан хедер в открытом окне при показе в iframe.

      • false при необходимости скрыть.
      • При отсутствии принимается равным true.
    • footer — определяет будет ли показан футер в открытом окне при показе в iframe.

      • false при необходимости скрыть.
      • При отсутствии принимается равным true.
    • target — каким образом будет открыта таблица.

      • Передается как одна строка:

        • iframe — в iframe поверх остальных окон.
        • blank — в новом окне (для корректной работы требуется разрешить открытие всплывающих окон в браузере)
        • parent — в базовом нижнем окне, все открытые вложенные окна будут закрыты.
        • self — в текущем окне.
        • Если не указан — обрабатывается как iframe
    • topbuttonsfalse, при открытии окна в iframe: кнопка печати, управления видимостью полей и csv будут скрыты.

    • bottombuttonsfalse, при открытии окна в iframe: кнопки управления внизу окна будут скрыты.

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

    hide: true; генерирует нагрузку на базу данных, тк временные таблицы записываются в БД после расчета и удаляются через час.

    • hidedotsfalse, если необходимо отменить скрытие кнопки с точками в нижнем правом углу.
    example: linkToDataTable(table: 'tmp_test'; title: "Окно временного расчета"; width: 800; height: "80vh"; data: $rowList; params: $row; refresh: false; header: true; footer: true)
        rowList: jsonExtract(text: '[{"field1":1, "field2":2},{"field1":3, "field2":4}]')
        row: jsonExtract(text: '{"f_summ_1":4, "f_summ_2":6}')
    
    // Результат: 
    

    Окно временного расчета

    id field1 field2
    1 1 2
    2 3 4
    f 4 6
    sel: selectRowList(table: 'tmp_table'; hash: $hash; field: 'data'; field: 'summ'; order: 'id' asc)
        ~hash: linkToDataTable(table: 'tmp_table'; params: $row_hide; hide: true)
            row_hide: "здесь параметры передаваемые в tmp_table"
    

    linkToDataText

    Доступен в секциях: Код действия.

    =: linkToDataText(title: ; text: )
    

    Вызывает в веб-интерфейсе окно сообщения с текстовым содержимым.

    Обязательные параметры

    Необязательные параметры

    • closetrue закрывает родительские окна после закрытия всплывающего окна.

    • width — ширина всплывающего окна в пикселях или относительная.

    • height — высота всплывающего окна в пикселях или относительная.

    example: linkToDataText(title: "Внимание"; text: "Ваше изменение принято")
    
    

    linkToDataHtml

    Доступен в секциях: Код действия.

    =: linkToDataHtml(title: ; html: )
    

    Вызывает в веб-интерфейсе окно с html содержимым.

    Обязательные параметры

    Необязательные параметры

    • closetrue закрывает родительские окна после закрытия всплывающего окна.

    • width — ширина окна в пикселях.

    • height — высота всплывающего окна в пикселях или относительная.

    • scripts — (только в PRO!) list url js-скриптов, подключаемых с автоматической поверкой до загрузки указанного html на страницу.

    linkToPanel

    Доступен в секциях: Код действия.

    =: linkToPanel(table: ''; id: ; field: '' = ; refresh: false)
    

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

    Обязательные параметры

    • tablename-параметр name таблицы, из которой будет открываться строка.

    Необязательные параметры

    • idчисло, id открываемой строки.

    • fieldname-параметр поле в таблице table:. При передаче значения в правую часть выражения подставляет это значение в поле при открытии панели.

    • refresh — определяет будет ли обновляться таблица-родитель при закрытии окна.

      • true при необходимости обновить данные.
      • "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений.
      • "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.
      • При отсутствии принимается равным false.
    • bfield — используется вместо id в синтаксисе bfield: 'field_name' = VALUE.

    • hash — хэш, если открывается строка из временной таблицы.

    • fields — список из name полей для ограничения загрузки полей в панель при ее открытии.

    • titles — возможность задать кастомные заголовки полей при открытии панели:

      • Необходимо передать row:
      {
        "name_field_1": "Custom name for field 1",
        "name_field_2": "Custom name for field 2",
        "name_field_3": "Custom name for field 3"
      }
      
      • Как rowlist:
      = : linkToPanel(table: 'simple'; titles: $rowList; id: #id; refresh: false; columns: 1)
      
      rowList: rowListCreate(field: "name" = $listOfNames; field: "title" = $listOfTitles)
      
      listOfNames: listCreate(item: "select_1"; item: "select_2")
      listOfTitles: listCreate(item: "Name 1"; item: "Name 2")
      
    • columns1 или 2 (по умолчанию). Изменяет отображение количества колонок при открытии панели.

    example: linkToPanel(table: 'tablename'; id: $num; refresh: true)
        num: 10
    
    // Результат: открывает строку id=10 таблицы tablename в панели.
    

    linkToEdit

    Доступен в секциях: Код действия.

    =: linkToEdit(title: ""; table: ''; cycle: ; field: ''; id: ; refresh: false)
    

    Открывает всплывающее окно редактирования содержимого поля.

    Обязательные параметры

    Необязательные параметры

    • id — id строки, если открывается поле, находящееся в строчной части таблицы.

    • cycle — число, определяет цикл, если таблица table: является расчетной в цикле.

    • hashстрока, для временных таблиц hash таблицы.

    • refresh — определяет будет ли обновляться таблица-родитель при закрытии окна.

      • true при необходимости обновить данные.
      • При отсутствии принимается равным false.
      • "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.
      • "recalculate" — пересчитать таблицу источник, даже если в ней небыло изменений.

    linkToPrint

    Доступен в секциях: Код действия.

    =: linkToPrint(template: ; data: $data; text: )
    

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

    Вместо template можно передать text, тогда замены будут произведены в нем. Таким образом можно формировать шаблон печати кодом.

    linkToButtons

    Доступен в секциях: Код действия.

    =: linkToButtons(title: ; html: ; buttons: ; refresh: false; close: false)
    

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

    Обязательные параметры

    Структура row:

    • textстрока надпись на кнопке. Обязательный параметр.

    • codeстрока код, который будет выполнен при нажатии кнопки. Может быть передан name поля в текущей таблице, из которого будет взят код-действия для выполнения. Обязательный параметр.

      code обязательно должен быть передан именно строкой code: ".....", вариант, когда вы ссылаетесь на последующий код не работает.

    • iconстрока название иконки fontawersome 4 без fa-

    • backgroundстрока название цвета web_color или HEX #ddd.

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

    • refresh — позволяет указать refresh конкретной кнопке в стеке.

    Необязательные параметры

    • html — html, который будет показан в панели с кнопками.

    • refreshtrue позволяет обновить таблицу после выполнения кнопки. "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений. "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.

    • closetrue позволяет закрыть таблицу источник если она открыта в iframe после выполнения кнопки. Необходим так как закрыть окно после выполнения в настройках кнопки вызывающей linkToButtons или linkToInput приводит к их неработоспособности!

    =: linkToButtons(title: "Красная или синяя"; buttons: $buttons; width: 400; html: "ТЫ — НЕО")
    
    buttons: listCreate(item: $btn1; item: $btn2)
    
    btn1: rowCreate(field: "text" = "Красная"; field: "code" = $code1; field: "icon" = "link"; field: "background" = "seashell"; field: "color"="red"; field: "vars" = $vars1; field: "refresh" = false)
        vars1: rowCreate(field: "var1" = "Вы выбрали красную таблетку")
        code1: strAdd(str: '=: linkToDataText(title: "ИИИ"; text: $#var1)')
    
    btn2: rowCreate(field: "text" = "Синяя"; field: "code" = "name_field_in_table"; field: "icon" = "link"; field: "background" = "eliceblue"; field: "vars" = $vars2;  field: "refresh" = true)
        vars2: rowCreate(field: "var1" = "Вы выбрали синюю таблетку")
    
    // text и code — обязательные параметры в row, остальные нет.
    
    // Результат: Активная панель с двумя кнопками, нажатие на каждой из которых открывает панель с текстом.
    
    

    linkToInput

    Доступен в секциях: Код действия.

    =: linkToInput(title: ; html: ; code: ; type: ; var: ; value: ; refresh: true; button: "Сохранить"; close: false)
    

    Вызывает панель с полем ввода. При нажатии на кнопку подтверждения выполняет код переданный в code как код-действия.

    Введенное в поле ввода значение будет передано в переменную input.

    Обязательные параметры

    • titleстрока, заголовок окна.

    • codeстрока, код, который будет выполнен после ввода данных.

      Или строкаname поля в этой же таблице из которого будет взят код-дейcтвия.

      code обязательно должен быть передан именно строкой code: ".....", вариант, когда вы ссылаетесь на последующий код не работает.

      Может быть передан в таком синтаксисе:

      =: exec(code: $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

      В code: возможно передать name другого поля в текущей таблице.

      Также в code можно использовать обращение @table.field или @table.field.key_field[key]. В этом случае если кликнуть на @... будет показана кнопка, открывающая на редактирование целевой код во всплывающем окне.

    Необязательные параметры

    • typeстрока, тип html input обрабатываемый браузером:

      • tel — номер телефона (при вводе на мобильных устройствах включается цифровая клавиатура).
      • password — пароль (прячет вводимые символы под звездочкой - '*').
      • number — число (добавляет элементы управления - стрелочки).
      • datetime-local — локальные дата и время (добавляет элементы управления: календарь и часы).
      • month — месяц и год (добавляет элементы управления и календарь).
      • week — номер недели (добавляет элементы управления и календарь).
      • time — время, часы и минуты (добавляет элементы управления).
    • buttonстрока, надпись на кнопке с подтверждением ввода.

    • var — множественный параметр, передается как "var_name" = var_value. Параметры, которые могут быть использованы в code.

    • valueстрока, значение по умолчанию, которое будет передано в открытый инпут.

    • refreshtrue позволяет обновить таблицу после выполнения кнопки. "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений. "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.

    • closetrue позволяет закрыть таблицу источник если она открыта в iframe после выполнения кнопки. Необходим, так как закрыть окно после выполнения в настройках кнопки вызывающей linkToButtons или linkToInput приводит к их неработоспособности!

    • html — html, который будет показан в панели с полем ввода. Если html имеет textarea (может быть скрытой) с id="ttmInput", то стандартное поле ввода будет отключено, а в переменную $#input передано значение из textarea. Таким образом вы можете использовать собственную js-форму.

      <textarea id="ttmInput">{"name":111, "name2":2223}</textarea>
      
    • height — высота всплывающего окна в пикселях или относительная.
    example: linkToInput(html: "Введите номер заказа"; title: "Открыть заказ по номеру"; code: $stradd; refresh: false; button: "Открыть")
    
    stradd: strAdd(str: '=: linkToTable(table: "sostav_zakaza"; cycle: $number; target: "top")'; str: $#nl; str: 'number: select(table: "novye_zakazy"; field: "id"; where: "nomer" = $#input)')
    
    // Результат: Окошко с пустым полем для ввода, надписью Введите номер заказа и кнопками «Отмена» и «Открыть».
    
    

    linkToInputSelect

    Доступен в секциях: Код действия.

    =: linkToInputSelect(title: ; code: ; codeselect: ; var: ; width: ; value: ; refresh: ; button: ; close: ; multiple: )
    

    Вызывает панель с полем ввода. При нажатии на кнопку подтверждения выполняет код переданный в code как код-действия.

    Введенное в поле ввода значение будет передано в переменную input.

    Обязательные параметры

    • titleстрока, заголовок окна.

    • codeстрока, код, который будет выполнен после ввода данных.

      Или строкаname поля в этой же таблице из которого будет взят код-дейcтвия.

      code обязательно должен быть передан именно строкой code: ".....", вариант, когда вы ссылаетесь на последующий код не работает.

      Может быть передан в таком синтаксисе:

      =: exec(code: $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

      В code: возможно передать name другого поля в текущей таблице.

      Также в code можно использовать обращение @table.field или @table.field.key_field[key]. В этом случае если кликнуть на @... будет показана кнопка, открывающая на редактирование целевой код во всплывающем окне.

    • codeselectстрока, код-селекта. Требования аналогичны к code.

    Необязательные параметры

    • buttonстрока, надпись на кнопке с подтверждением ввода.

    • var — множественный параметр, передается как "var_name" = var_value. Параметры, которые могут быть использованы в code.

    • valueстрока, значение по умолчанию, которое будет передано в открытый инпут.

    • refreshtrue позволяет обновить таблицу после выполнения кнопки. "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений. "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.

    • closetrue позволяет закрыть таблицу источник если она открыта в iframe после выполнения кнопки. Необходим, так как закрыть окно после выполнения в настройках кнопки вызывающей linkToButtons или linkToInput приводит к их неработоспособности!

    • multipletrue, если селект является множественным.

      • "force" — в этом случае для одинарного селекта при выборе значения сразу будет выполнен code.

    linkToDataJson

    Доступен в секциях: Код действия.

    =: linkToDataJson(title: ; data: )
    

    Открывает окно json-editor с передачей в него содержимого из data:.

    Обязательные параметры

    • data — данные для открытия в json-editor.

    • title — заголовок окна.

    Необязательные параметры

    • width — определяет ширину окна в пикселях.

    • code — код, выполняемый по нажатию кнопки; значение json передается в код переменной $#value.

      Может быть передан в таком синтаксисе:

      =: exec(code: $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

      В code: возможно передать name другого поля в текущей таблице.

      Также в code можно использовать обращение @table.field или @table.field.key_field[key]. В этом случае если кликнуть на @... будет показана кнопка, открывающая на редактирование целевой код во всплывающем окне.

    • buttontext — текст на кнопке.

    • var — 'name'=value; параметры для передачи в код. Обратиться можно по $#name.

    • refreshtrue обновить таблицу по закрытию окна. Также возможно "recalculate" и "reload".

    linkToFileUpload

    Доступен в секциях: Код действия.

    =: linkToFileUpload(title: ; code: ; limit: ; type: "*"; var: ; refresh: false)
    

    Открывает системное окно выбора файлов.

    Обязательные параметры

    • codeстрока код, который будет выполнен при загрузке.

      • В переменную $#input передается структура аналогичная полю типа Файл.

      • Может быть передан name поля в текущей таблице, из которого будет взят код-действия для выполнения. Обязательный параметр.

      • Обязательно должен быть передан именно строкой code: ".....", вариант, когда вы ссылаетесь на последующий код не работает.

      Может быть передан в таком синтаксисе:

      =: exec(code: $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

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

      Также в code можно использовать обращение @table.field или @table.field.key_field[key]. В этом случае если кликнуть на @... будет показана кнопка, открывающая на редактирование целевой код во всплывающем окне.

    Необязательные параметры

    • title — заголовок окна.

    • limit — максимальное количество файлов. Если будет выбрано больше, то вместо code будет выведено сообщение об ошибке.

    • type — mime-type если требуется.

    • var — вида var: "var_name" = VAR_VALUE. Одна или несколько переменных для передачи в code.

    • refresh — определяет будет ли обновляться таблица-родитель при закрытии окна.

      • true при необходимости обновить данные.
      • При отсутствии принимается равным false.
      • "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.
      • "recalculate" — таблица источник будет пересчитана, даже если в ней небыло изменений.

    Пример:

    = : linkToFileUpload(title: "Закачка файлов"; code: "=: set(table: $#ntn; field: 'h_files' = $#input)"; limit: 2; type: "image/*"; refresh: true)
    
    //Результат: в поле h_files будут добавлены 2 выбранных файла, таблица будет обновлена.
    

    linkToFileDownload

    Доступен в секциях: Код действия.

    =: linkToFileDownload(file: ; files: )
    

    Скачивает на компьютер клиента через web-интерфейс файлы.

    Необязательные параметры

    • fileассоциативный массив формата {"name":"Имя файла для сохранения на компьютере клиента", "type":"mime-тип файла", "filestring": "Строковое содержимое файла"}

    • filesсписок ассоциативных массивов аналогичного file: формата.

    • zip"name_of_file", упакует переданные файлы в один zip-архив.

    ПРИМЕРЫ

    example: linkToFileDownload(file: $file)
    file: rowCreate(field: "name" = "file.jpg"; field: "type" = "image/jpeg"; field: "filestring" = $img)
    img: fileGetContent(file: #h_files[0]["file"])
    
    //Результат: Инициация скачивания на компьютер клиента jpeg-картинки и сохранение ее с именем "file.jpg"
    
    example2: linkToFileDownload(file: $file1; file: $file2)
    file1: rowCreate(field: "name" = "file.txt"; field: "type" = "text/plain"; field: "filestring" = "Содержимое файла")
    file2: rowCreate(field: "name" = "file2.txt"; field: "type" = "text/plain"; field: "filestring" = "Содержимое файла2")
    
    //Результат: Инициация скачивания на компьютер клиента двух текстовых файлов и сохранение их с указанными именами
    

    getFromScript

    Доступен в секциях: Код действия.

    =: getFromScript(uri: "http://"; post: "" = ; posts: ; gets: ; bfl: ; timeout: ; header: ; headers: ; ssh: ; method: )
    

    Вызывает скрипт по указанному пути и передает ему POST или GET запрос.

    Если не заданы заголовки в параметре headers то POST исполняется как application/x-www-form-urlencoded.

    Обязательные параметры

    • uri — путь к скрипту.

    Необязательные параметры

    • post — множественный параметр, POST-параметр в формате "param" = value.

    • postsассоциативный массив, список POST-параметров или строка тела POST-запроса.

    • getsассоциативный массив, список GET-параметров.

    • bfltrue|false определяет, писать ли данные в bfl-лог. При отсутствии берет настройку из Настройки и крон.

    • timeout — ограничение времени запроса в секундах.

    • headertrue | false определяет, возвращать ли header+body или только body ответа.

      Если true и вам нужно привести в более читаемый вид то можно использовать strSplit:

      = : linkToDataHtml(title: "test"; html: $join)
      
      join: listJoin(list: $split; str: "<br>")
      
      split: strSplit(str: $get; separator: str`$#nl`)
      
      get: getFromScript(uri: "..."; header: true)
      
    • headerscписок из передаваемых заголовков.

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

    • method"POST | GET | PUT | DELETE | ..." используется для жесткого задания http-метода. Автоматически при пустом POST отправляется GET — этот параметр позволяет переопределить это поведение.

    example: getFromScript(uri: "https://yandex-market.totum.online/"; post:  "method" = "setBids"; post: "bids" = $bids; post: "token" = @yandex_market.token["access_token"]; post: "feed_id" = @yandex_market.feed_id;  post: "shop_id" = @yandex_market.h_id_magazina_v_markete)
    bids: jsonCreate(data: $bidsGet2)
    bidsGet2: rowKeysReplace(row: $bidsGet; from: "nazvanie_pozicii"; to: "id"; recursive: true)
    bidsGet: selectRowList(table: 'yandex_market_fid'; field: 'obshchaya_stavka_na_klik'; field: 'nazvanie_pozicii';  where:  'dobavit_v_fid' = true;)
    
    
    //Входящиие переменные: $#x_request_id, $#dannye_zaprosa
    example2: getFromScript(uri: @nastroyki_klaud_kassy.url_send; posts:  $json; headers: $headers)
        headers: listCreate(item: $auth; item: "Content-type: application/json"; item: $xxx)
            xxx: strAdd(str: "X-Request-ID: "; str: $#x_request_id)
            auth: strAdd(str: "Authorization: Basic "; str: @nastroyki_klaud_kassy.h_dannye_avtorizacii)
        json: jsonCreate(data: $#dannye_zaprosa)
    

    Если вы в параметр функции post или gets передаете true или false, то они должны быть переданы как строка — "true" или "false". Иначе при передаче они будут преобразованы в 1 и "".

    emailSend

    Доступен в секциях: Код действия.

    =: emailSend(to: ; title: ; body: ; from: ; files: ; bfl: )
    

    Отправляет письмо. По умолчанию через emailsend сервера.

    Также письмо может быть отправлено функцией notificationSend

    Обязательные параметры

    • titleстрока, заголовок письма.

    • toстрока, email получателя. Или список строк с email получателей. Тогда письмо будет отправлено нескольким адресатам открытой! копией.

    • bodyстрока, тело письма. Обрабатывается как html.

    Необязательные параметры

    • fromстрока, email отправителя. Если не указан, то подставляется системный email вида noreply@HOST. Формирование технического email можно переопределить в Conf.php в корневой папке Totum или в таблице Настройки. Приоритет имеет Conf.php.

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

      • rowList с ключами, аналогичными полю файл — name и file

        • Также в этом случае вместо file может быть передано содержимое файла (текст или бинарное) в ключ filestring!
      • ассоциативный массив вида имя отображаемое в письме: техническое имя на сервере.

      • список из технических имен файлов, содержащихся в поле файл в ключе file.

    Если тело письма в body содержит изображения с src = "путь к файлу в текущей схеме totum" — эти файлы будут вложены в письмо автоматически.

    • replytoстрока с адресом на который будет отправлен ответ, когда получатель нажмет кнопку ответить в email-клиенте.

    • hiddencopyстрока или список с адресом/адресами на который будет отправлена скрытая копия.

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

    example: emailSend(to: "test@example.ru"; title: "Отправка письма"; body: "Тестовое письмо"; files: $files)
        files: rowCreate(field: "Вложенная картинка.png" = "444_h_pole_heder_1_1.png")
    
        // Чтобы взять имя файла из поля файл #file_field[0][file]
        // Обязательно должно быть указано расширение в имени отправляемого файла
    
        // например отправляем два файла, лежащих в поле file_field:
    
    example2: emailSend(to: "test@example.ru"; title: "Отправка письма"; body: "Тестовое письмо"; files: $files2)
        files2: rowCreate(field: "Вложенная картинка.png" = #file_field[0][file]; field: "Вложенная картинка 2.png" = #file_field[1][file])
    
        // или с использованием полных данных поля файл:
    
    example3: emailSend(to: "test@example.ru"; title: "Отправка письма"; body: "Тестовое письмо"; files: #file_field)
    
        // с использованием filestring
    
    example4: emailSend(to: "test@example.ru"; title: "Отправка письма"; body: "Тестовое письмо"; files: json`[$filerow]`)
        fileRow: rowCreate(field: "name" = "Текст файл.txt"; field: "filestring" = $text)
            text: "Какой-то текст"
    
    

    Настройки sendmail/SMTP

    По умолчанию, если вы установили скриптом автоустановки, письма отправляются на sendmail и в качестве MTA используется Exim4.

    HELLO-домен для Exim устанавливается равным тому, который вы указали при установке. Все схемы Тотум на сервере будут использовать этот домен.

    В конце установки вам было показано сообщение с информацией по DKIM и SPF записям, которые вам необходимо прописать, чтобы получить оценку 6-7 баллов (из 10) от систем проверки на спам (только если вы отправляете от домена, который указали при установке). Такой уровень оценки не гарантирует 99% попадания во Входящие.

    Если вы этого не сделали тогда, то получить это сообщение можно введя в консоли сервера команду:

    cat /home/totum/dkim/TXT_record_for_domain.txt`
    

    Если вам необходимо 100% попадание во входящие — используйте трастовый SMTP и необходимые для него настройки DKIM/SPF/DMARC/MX записей.

    Чтобы переключить все схемы на сервере на SMTP необходимо:

    Открываем на редактирование Conf.php в корне установки:

    Меняем:

    use totum\common\configs\WithPhpMailerTrait;
    

    на

    use totum\common\configs\WithPhpMailerSmtpTrait;
    

    Меняем

    use WithPhpMailerTrait;
    

    на

    use WithPhpMailerSmtpTrait;
    

    Добавляем со следующей строки параметры SMTP-подключения (вам необходимо указать свои данные):

    protected $SmtpData = [
    'host' => 'YOUR_HOST_HERE',
    'port' => 'YOUR_PORT_HERE',
    'login' => 'YOUR_LOGIN_HERE',
    'pass' => 'YOUR_PASS_HERE',
    ];
    

    По умолчанию письма отправляются от адреса no-reply@HOST, но если вам нужно переопределить это, то это делается в таблице Настройки.

    Если вам необходимо настроить разные SMTP для разных схем на одном сервере:

    Заполните в таблице Настройки поле custom_smtp_setings_for_schema.

    Заполняется как массив:
    
    {
      "host": "ssl://smtp.gmail.com",
      "port": 465,
      "login": "totum@totum.online",
      "password": "password_here"
    }
    

    Обязательно смотрите инструкцию к своему SMTP — обычно есть еще аппрув со стороны SMTP-сервера.

    Если настроены custom_smtp_setings_for_schema то трейт и прочие настройки в Conf.php не нужны!

    Если настроен трейт в Conf.php настройка custom_smtp_setings_for_schema не подтягивается!

    notificationSend

    Доступен в секциях: Код действия.

    =: notificationSend(users: ; title: ; ntf: ; eml: ; custom: )
    

    Отправляет внутреннюю нотификацию (используя код admin_text), email (используя шаблон eml_email) и выполняет кастомный код name которого указан в custom.

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

    Обязательные параметры

    • users — одно число или список id пользователей.

    • title — заголовок нотификации.

    Необязательные параметры (хотя бы один должен быть указан)

    • ntf — строка, текст внутренней нотификации.

    • eml — строка, текст email нотификации.

    • custom"name" = "text or html"

      • Коды для выполнения задаются в таблице ttm__custom_user_notific_codes.
      • Код получит параметры $#user, $#title и "text or html" в переменную $#html.
      • Код будет выполнен отдельно для каждого пользователя в users в режиме ssh = true (в отдельных процессах).

    ПРИМЕРЫ

    = : notificationSend(users: $list_users; title: "some title"; ntf: "some notif text"; eml: "some email text")
    
    list_users: listCreate(item: 19; item: 32)
    

    linkToAnonymTable

    Доступен в секциях: Код действия.

    =: linkToAnonymTable(table: 'tmp_table_name'; data: $rowList; params: $row)
    

    Возвращает зашифрованный url для вызова временной таблицы с заполненными данными неавторизованному пользователю.

    Для того, чтобы работал анонимный доступ к таблице — должен быть включен пользователь anonym, от которого будут выполняться действия. Ему должна быть назначена роль, имеющая соответствующий доступ (изменение/просмотр) к показываемой таблице.

    Примеры анонимных таблиц: https://start.demo.totum.online/An/30 и https://start.demo.totum.online/An/52

    Обязательные параметры

    Необязательные параметры

    • dataсписок ассоциативных массивов для добавления строк в отдаваемую таблицу. Аналогично linkToDataTable.

    • paramsассоциативный массив для заполнения полей хедера и футера отдаваемой таблицы. Аналогично linkToDataTable.

    • protocol — по умолчанию https. Можно переопределить на http.

    • target — если задан iframe|blank|self|parent|top то будет осуществлен переход по ссылке аналогично linkToScript.

    example: linkToAnonymTable(table: 'tmp_anonym_table'; params: $row)
    row: rowCreate(field: "order_id" = 1111)
    
    //Результат: htts://test.demo.totum.online/An/444?d=Y4EK1mpzeZtzxRcB58aMBQ06jVAtzVVU9A6bUo3oJbIP04JcHs7fdnD%2B9HCrh%2F4TUS9R0E4BLjfPXZ3slG%2FQgjJqGkheCb%2B8Hm53neuqHq2bbxdd5a2sjOIEBBvmnFES
    

    GET/POST/INPUT

    Если таблица в хедере или футере содержит поля c name: h_get, h_post или h_input, то туда будут подставлены данные переданные в get/post/post-raw при запросе таблицы.

    linkToForm

    Доступен в секциях: Код действия.

    =: linkToForm(path: 'path-to-form'; params: $row)
    

    Возвращает зашифрованный url для вызова формы с заполненными данными неавторизованному пользователю.

    Обязательные параметры

    • path — name формы в таблице форм.

    Необязательные параметры

    • params — row вида "field_name" = value со значениями полей, которые должны быть заполнены при переходе по сформированной ссылке.

    • protocol — по умолчанию https. Можно переопределить на http.

    • target — если задан iframe|blank|self|parent|top то будет осуществлен переход по ссылке аналогично linkToScript.

    linkToQuickForm

    Доступен в секциях: Код действия.

    =: linkToQuickForm(path: 'path-to-form'; fields: $row; fixed: $row_fix; protocol: "https")
    

    Возвращает зашифрованный url для вызова быстрой формы с заполненными данными неавторизованному пользователю.

    Или осуществляет переход если задан параметр target.

    Обязательные параметры

    • path — name формы в таблице форм.

    Необязательные параметры

    • fields — row вида "field_name" = value со значениями полей, которые должны быть заполнены при переходе по сформированной ссылке.

    • fixed — аналогично fields, но поля будут заблокированы для изменения на стороне сервера.

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

    • protocol — по умолчанию https. Можно переопределить на http.

    • target — если задан iframe|blank|self|parent|top то будет осуществлен переход по ссылке аналогично linkToScript.

    encriptedFormParams

    Доступен в секциях: Код действия.

    =: encriptedFormParams(params: $row; data: $rowList)
    

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

    Необязательные параметры

    • params — необходимо передать row для заполнения полей нестрочных плейсментов.

    • data — необходимо передать rowList для заполнения полей строчной части. На текущий момент строчная часть в формах не рарзаботана.

    getFromSoap

    Доступен в секциях: Код действия.

    =: getFromSoap(func: ; params: ; wsdl: ; options: ; bfl: )
    

    Возвращает данные, полученные из запроса к функции soap-сервиса.

    Может использоваться для синхронизации с web-сервисом 1C.

    При ошибках коннекта или soap-переменных, а также при ошибке на стороне soap-сервера выбрасывает исключение (ничего не сохраняется за всю операцию).

    Исключение можно обернув soap-вызов в функцию tryCatch.

    Обязательные параметры

    • func — функция в веб-сервисе.

    Необязательные параметры

    • params — параметры, передаваемые в функцию веб-сервиса.

    • wsdl — путь к wsdl, описывающему веб-сервис. Если не задан, должны быть установлены опции location и uri, где:

      location — URL сервера SOAP, к которому отправляется запрос,

      uri — целевое пространство имен SOAP-сервиса.

    • optionsассоциативный массив с настройками подключения:

      • location — URL сервера SOAP, к которому отправляется запрос. Не требуется, если задан wsdl.

      • uri — целевое пространство имен SOAP-сервиса. Не требуется, если задан wsdl.

      • soap_version — версия SOAP.

        • 1 — для SOAP 1.1.
        • 2 — для SOAP 1.2.
        • Если параметр пропущен, то используется 1.1.
      • Для HTTP-аутентификации могут быть использованы опции login и password для предоставления учетных данных.

      • Для реализации HTTP-соединения через прокси-сервер доступны настройки proxy_host, proxy_port, proxy_login и proxy_password.

      • Для аутентификации сертификата клиента HTTPS используются опции local_cert и passphrase.

      • Аутентификация может быть предоставлена в опции authentication. Метод аутентификации может быть:

        • 0 — SOAP_­AUTHENTICATION­_BASIC (по умолчанию)
        • 1 — SOAP_­AUTHENTICATION­_DIGEST
      • compression — позволяет использовать сжатие запросов и ответов HTTP SOAP.

      • encoding — определяет внутреннюю кодировку. Опция не меняет кодировку SOAP-запросов (она всегда utf-8), но преобразует строки в нее.

      • trace — включает отслеживание запроса и в случае ошибки можно получить обратную трассировку. По умолчанию имеет значение true.

      • exceptions — принимает логическое значение, определяющее, будут ли SOAP-ошибки бросать исключения типа SoapFault.

      • connection_timeout — определяет тайм-аут в секундах для соединения с SOAP-сервисом. Опция не устанавливает тайм-аут для сервисов с медленными ответами. Для ограничения времени ожидания вызовов используется default_socket_timeout.

      • cache_wsdl — принимает одно из значений:

        • 0 — WSDL_­CACHE_NONE
        • 1 — WSDL_­CACHE_DISK
        • 2 — WSDL_­CACHE_MEMORY
        • 3 — WSDL_­CACHE_BOTH
      • user_agent — определяет строку для использования в заголовке User-Agent.

      • features — является битовой маской:

        • 1 - SOAP_SINGLE­_ELEMENT_ARRAYS
        • 4 - SOAP_USE_­XSI_ARRAY_TYPE
        • 2 - SOAP_WAIT­_ONE_WAY_CALLS
      • keep_alive — является логическим значением, определяющим, какой заголовок отправлять: Connection: Keep-Alive или Connection: close.

      • ssl_method — должна быть равной:

        • 0 — SOAP_SSL­_METHOD_TLS
        • 1 — SOAP_SSL­_METHOD_SSLv2
        • 2 — SOAP_SSL­_METHOD_SSLv3
        • 3 — SOAP_SSL­_METHOD_SSLv23
    • bfltrue/false — при true включает запись всех (в том числе в выбросивших исключение операциях) операций в таблицу _bfl (доступна только напрямую из БД)

    example: getFromSoap(func: "funcName"; params: $#params; wsdl: "https://path.to.wsdl"; options: $options)
    
    options: rowcreate(field: "login" = "login"; field: "features" = 1; field: "password" = "pass")
    

    Форматирование

    setFormat

    Доступен в секциях: Форматирование ячейки.

    =: setFormat(condition: ; block: ; color: ; bold: ; background: ; decoration: ; italic: ; progress: ; progresscolor: ; icon: ; text: ; hide: ; showhand: ; placeholder: )
    

    Изменяет внешний вид ячейки по условиям condition:.

    Результаты работы функции применяются к ячейке последовательно, в соответствии с индексами f1=:, f2=:, f3=: и так далее.

    setFormat имеет преимущество над setRowFormat при пересечении условий форматирования.

    Необязательные параметры

    • condition — условие срабатывания вида "значение 1" = "значение 2".

    • block — блокировка ячейки.

      • true — заблокировано.
      • false — разблокировано.
    • color — цвет текста ячейки.

      • Передается как строка.
      • В формате HEX #ff00cc.
      • Либо текстовым определением цвета HTML, например — tomato.
    • bold — жирное начертание текста в ячейке.

      • true — жирное.
      • false — разблокировано.
    • background — цвет заливки ячейки.

      • Передается как строка.
      • В формате HEX #ff00cc.
      • Либо текстовым определением цвета HTML, например — tomato.
    • decorationстрока, оформление текста.

      • underline — подчеркнутое.
      • line-through — зачеркнутое.
    • italic — курсив для текста в ячейке.

      • true — курсив.
      • false — обычное начертание.
    • progress — длина маркерного выделения текста в ячейке.

      • Передается как число.
      • 0 — без выделения.
      • 100 — выделен весь текст.
    • progresscolor — цвет маркерного выделения текста в ячейке.

      • Передается как строка.
      • В формате HEX #ff00cc.
      • Либо текстовым определением цвета HTML, например — tomato.
    • text — выводит заданный текст, подменяющий отображение значения в ячейке. Не влияет на данные, хранящиеся в этой ячейке.

    • icon — выводит иконку слева от значения ячейки.

      • Передается как строка.
      • Значение иконки в fontawesome 4 без приставки fa-. Например: shower.
    • comment — добавляет в ячейку иконку i слева от значения, при наведении на которую показывается текст комментария.

    • hide — множественный параметр, скрывает поле в панели, мобильном интерфейсе или форме.

      • "panel" = true — скрывает поле в панели и не исключает его из расчета положения полей в колонках. Передав "panel" = false, можно будет отобразить поле.
      • "extpanel" = true — скрывает поле в панели и исключает его из расчета положения полей в колонках. В этом случае динамически отобразить поле после открытия панели невозможно.
      • "mobile" = true — скрывает поле в мобильном интерфейсе.
      • "form" = true — скрывает поле в формах.
    • tab — устанавливает отступ слева в ячейке у значения или его отображения.

      • Передается как число — количество пикселей.
    • align — выравнивание значения или отображения в ячейке.

      • Передается как строка.
      • center — по центру.
      • right — по правому краю.
    • editbutton – если true, то в поле отображается кнопка редактирования, при нажатии на которую поле открывается на редактирование.

    • showhand — если false, то в рассчитываемых полях, имеющих ручные значения, будет скрыта индикация наличия ручного значения.

    • placeholderстрока, плэйсхолдер для открытого на редактирование пустого поля.

    • expand — если false, то в tree-view отключает возможность разворачивать папку.

    • textasvalue — если true, то значение в text будет копироваться и отображаться в контекстной панели как значение поля.

      Чтобы работала сортировка в заголовке колонки по этим значениям необходимо уточнить тип значений и символ разделитель десятичных для чисел:

      • textasvalue: "num" или textasvalue: "str"
      • для уточнения десятичного разделителя textasvalue: "num|." или textasvalue: "num|,"
    f1=: setformat(bold: true; color: "tomato")
    f2=: setformat(condition: $#nfv != ""; block: true)
    //Результат: 
    

    setRowFormat

    Доступен в секциях: Форматирование строки.

    =: setRowFormat(condition: ; block: ; blockdelete: ; blockorder: ; blockduplicate: ; color: ; bold: ; background: ; decoration: ; italic: ; :)
    

    Настройка форматирования строк по условиям condition:.

    Результаты работы функции применяются к таблице последовательно, в соответствии с индексами f1=:, f2=:, f3=: и.т.д.

    setRowFormat имеет преимущество над setTableFormat при пересечении условий.

    Необязательные параметры

    • condition — условие срабатывания вида "значение 1" = "значение 2".

    • block — блокировка изменений в строке, в том числе удаления, перемещения и дублирования.

      • true — заблокировано.
      • false — разблокировано.
    • color — цвет текста строки.

      • Передается как одна строка.
      • В формате HEX #ff00cc.
      • Либо текстовым определением цвета HTML, например — tomato.
    • bold — жирное начертание текста в строке.

      • true — жирное.
      • false — разблокировано.
    • background — цвет заливки строки.

      • Передается как одна строка.
      • В формате HEX #ff00cc.
      • Либо текстовым определением цвета HTML, например — tomato.
    • decoration — подчеркивание текста во всей строке.

      • true — подчеркнутое.
      • false — неподчеркнутое.
    • italic — курсив для текста в строке.

      • true — курсив.
      • false — обычное начертание.
    • blockdelete — блокировка удаления строки.

      • true — заблокировано.
      • false — разблокировано.
    • blockorder — блокировка сортировки по n.

      • true — заблокировано.
      • false — разблокировано.
    • blockduplicate — блокировка дублирования.

      • true — заблокировано.
      • false — разблокировано.
    • rowcommentстрока, поддерживает html. Комментарий в кнопках управления строкой. Например, для объяснения причины по которой заблокировано удаление.

    setTableFormat

    Доступен в секциях: Форматирование таблицы.

    =: setTableFormat(condition: ; blockdelete: ; blockadd: ; blockorder: ; blockduplicate: )
    

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

    Необязательные параметры

    • condition — условие срабатывания вида "значение 1" = "значение 2".

    • block — блокировка изменений в таблице, в том числе удаления, перемещения и дублирования.

      • true — заблокировано.
      • false — разблокировано.
    • blockdelete — блокировка удаления строк.

      • true — заблокировано.
      • false — разблокировано.
    • blockduplicate — блокировка дублирования.

      • true — заблокировано.
      • false — разблокировано.
    • blockorder — блокировка сортировки по n.

      • true — заблокировано.
      • false — разблокировано.
    • blockadd — блокировка добавления строк в таблицу.

      • true — заблокировано.
      • false — разблокировано.

      • hideaddtrue если нужно убрать именно кнопку Добавить, а кнопку добавления через Панель оставить.

    • tabletitleстрока, отображаемый заголовок таблицы.

    • rowstitleстрока, отображаемый заголовок строчной части таблицы.

    • fieldtitle — множественный name-параметр, отображаемый заголовок поля, задаваемый в формате 'field_name' = "Заголовок"

    • tabletextстрока, текст, отображаемый под описанием таблицы.

    • tablehtmlстрока, html, отображаемый под описанием таблицы.

    • tablecommentстрока, отображаемый под префильтром текст.

    • buttonsсписок из name полей кнопок, расположенных в хедере или футере для их визуального отображения в кнопках строчной части.

      • Для Создателя кнопки остаются по месту их плейсмента и sort с дополнительной отметкой B.
      • Эти кнопки перестают управлятся через Глаз
    • dotbuttonsсписок из name полей кнопок, расположенных в хедере или футере для их визуального отображения в кнопке с точками в нижнем правом углу.

      • Для Создателя кнопки остаются по месту их плейсмента и sort с дополнительной отметкой D.
      • Эти кнопки перестают управляться через Глаз
    • extbuttonsсписок из name полей кнопок, расположенных в хедере или футере для их визуального отображения в кнопке бутерброд рядом с заголовком таблицы.

      • Для Создателя кнопки остаются по месту их плейсмента и sort с дополнительной отметкой E.
      • Эти кнопки перестают управляться через Глаз
    • printbuttonsсписок из name полей кнопок, расположенных в хедере или футере для их визуального отображения в выпадающем меню печати в верхней части таблицы.

      • Для Создателя кнопки остаются по месту их плейсмента и sort с дополнительной отметкой P.
    • fieldhide — множественный name-параметр вида 'field_name' = true. Позволяет нежестко скрывать лишние поля по условиям — пользователь может их отобразить.

      • true — скрывает поле в управлении видимости полей при загрузке таблицы.
      • false — показывает поле в управлении видимости полей при загрузке таблицы.
      • "force" — скроет поле из таблицы и из управления видимостью полей. fieldhide: 'name' = "force".
      • fieldhide: 'id' = true — отключает показ системных id строк.

      Это нежесткая блокировка — данные поля передаются в браузер пользователя.

    • fieldshideсписок из name полей, которыым будут передан сигнал force (аналогично параметру fieldhide) при выполнении condition и сигнал false при невыполнении condition.

    • browsertitle — заменяет заголовок в браузере.

      • true — берет заголовок из tabletitle.
      • "string" — можно передать строку, если нужен отличный от tabletitle заголовок.
    • interlace — раскрашивает четные и нечетные строки.

      • "3" — процент затемнения четной строки. Чем выше цифра в передаваемой строке, тем темнее. Диапазон 1-100.

      • "tomato/beige" — цвета html для нечетной и четной строки.

        • "/beige" — можно задать только один до или после /.
      • "#343434/beige" — вместо цветов html можно использовать HEX с #.

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

    • hidedotshidedots: "window" = true или hidedots: "table" = true для скрытия кнопки с точками внизу справа во всплывающем окне или таблице.

    setRowsOrder

    Доступен в секциях: Форматирование таблицы.

    =: setRowsOrder(ids: )
    
    • idsсписок id строк, которые нужно поставить сверху таблицы в том порядке, в котором переданы id.

      • Остальные строки будут выведены ниже.
      • Если строка с указанным id не будет представлена на странице, он будет проигнорирован.

    Может быть использован совместно с быстрой переменной $#rows, доступной только в форматировании таблицы. Переменная возвращает список с учетом разбивки на страницы.

    setRowsHide

    Доступен в секциях: Форматирование таблицы.

    =: setRowsHide(ids: )
    
    • idsсписок id строк, которые нужно скрыть на клиенте.

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

    Может быть использован совместно с быcтрой переменной $#rows, доступной только в форматировании таблицы. Переменная возвращает список с учетом разбивки на страницы.

    Также эта функция используется в связке с процессной переменной $@proc_var — функция procVar, которая существует в рамках процесса php.

    Пример:

    Скрываем строку id=2 по нажатию кнопки.

    Код действия кнопки:

    = : procVar(name: "testProc"; value: json`[2]`)
    

    Код форматирования таблицы:

    f1=: setRowsHide(ids: $@testProc)
    

    setRowsShow

    Доступен в секциях: Форматирование таблицы.

    =: setRowsShow(ids: )
    
    • idsсписок id строк, которые нужно показать на клиенте.

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

    Может быть использован совместно с быcтрой переменной $#rows, доступной только в форматировании таблицы. Переменная возвращает список с учетом разбивки на страницы.

    Также эта функция используется в связке с процессной переменной $@proc_var — функция procVar, которая существует в рамках процесса php.

    Пример:

    Скрываем строку id=2 по нажатию кнопки.

    Код действия кнопки:

    = : procVar(name: "testProc"; value: json`[2]`)
    

    Код форматирования таблицы:

    f1=: setRowsShow(ids: $@testProc)
    

    setFloatFormat

    Доступен в секциях: Форматирование ячейки.

    =: setFloatFormat(blocknum: ; nextline: ; maxwidth: ; fill: ; height: ; maxheight: ; glue: ; breakwidth: )
    

    Задает параметры адаптивности для полей, находящихся в хедере и футере. Не применим к строчной части

    Подробнее про секции и адаптивность.

    Необязательные параметры

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

    • nextline — если true, то поле будет сразу будет перенесено на следующую строку в группе.

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

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

    • heightчисло, высота поля в px. Если задано, то высота поля будет отлична от стандартной. Также меняется отображение содержимого поля.

    • maxheightчисло, максимальная высота поля в px. Если задано, то поле будет определять свою высоту автоматически в зависимости от содержимого. Но не более заданной максимальной высоты. Может быть указано в vh и css calc.

    • gluetrue, склеивает поле с находящимся слева от него. Склеенные поля будут переноситься вместе. При минимальной ширине экрана переносится не будут.

    • breakwidthчисло, определяет ширину, при которой произойдет перенос поля. Если не указано, то перенос произойдет только когда поле достигнет ширины по умолчанию.

    Видео на YouTube: Адаптивность

    Эти же параметры могут быть заданы в настройках секции в виде:

    glue : field_name, else_field_name : true или maxwidth : block_number : 400

    example: setFloatFormat(blocknum: 1; nextline: true; maxwidth: 400; fill: true; height: 200; maxheight: 400; glue: true)
    
    

    panelButton

    Доступен в секциях: Форматирование поля, строки, таблицы.

    =: panelButton(condition: ; code: ; text: ; icon: ; background: ; vars: ; refresh: )
    
    

    Возвращает секцию с одной кнопкой для панели по правой кнопке мыши. Работает только с кодами p в форматировании ячейки.

    Кнопки ставятся друг за другом. Сначала все button, потом buttons.

    При вызове кнопки ей передается текущее окружение $#ntn, $#nci, $#nth, #id (и прочие строчные поля).

    Обязательные параметры

    • codeстрока код, который будет выполнен при нажатии кнопки. Может быть передан name поля в текущей таблице, из которого будет взят код-действия для выполнения. Обязательный параметр.

      code обязательно должен быть передан именно строкой code: ".....", вариант, когда вы ссылаетесь на последующий код не работает.

      Может быть передан в таком синтаксисе:

      p1=: panelButtons(button: $b100; refresh: true)
      
      b100: rowCreate(field: "text" = "TEXT"; field: "code" = $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

      В code: возможно передать name другого поля в текущей таблице, тогда код будет взят из него из соответствующего типа кода.

      Также в code можно использовать обращение @table.field или @table.field.key_field[key]. В этом случае если кликнуть на @... будет показана кнопка, открывающая на редактирование целевой код во всплывающем окне.

    Необязательные параметры

    • textстрока надпись на кнопке.

    • iconстрока название иконки fontawersome 4 без fa-.

    • backgroundстрока название цвета web color или HEX #ddd.

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

    • refreshtrue, "recalculate" и "reload".

    ПРИМЕРЫ


    p1=:
    panelButton(condition: $#nfv != ""; code: @table.field.id[$id]; text: "OPEN"; background: "orange"; refresh: true) id: "..."

    panelButtons

    Доступен в секциях: Форматирование ячейки.

    p1=: panelButtons(condition: ; button: ; button: ; buttons: ; refresh: true)
    

    Возвращает секцию с кнопками для панели по правой кнопке мыши. Работает только с кодами p в форматировании ячейки.

    Кнопки ставятся друг за другом. Сначала все button, потом buttons.

    При вызове кнопки ей передается текущее окружение $#ntn, $#nci, $#nth, #id (и прочие строчные поля).

    Необязательные параметры

    • condition — при наличии функция выполнится только при срабатывании в true.

    • buttonассоциированный массив, информация по одной кнопке, формат аналогичен linkToButtons.

    • buttonsсписок ассоциированных массивов, содержащих настройки кнопок.

    • refreshtrue позволяет обновить таблицу после выполнения кнопки. "recalculate" — позволяет пересчитать таблицу источник даже если в ней не было изменений. "reload" — при возврате таблица источник будет перезагружена, как буд-то пользователь нажал обновить в браузере.

    Структура row:

    • textстрока надпись на кнопке. Обязательный параметр.

    • codeстрока код, который будет выполнен при нажатии кнопки. Может быть передан name поля в текущей таблице, из которого будет взят код-действия для выполнения. Обязательный параметр.

      code обязательно должен быть передан именно строкой code: ".....", вариант, когда вы ссылаетесь на последующий код не работает.

      Может быть передан в таком синтаксисе:

      p1=: panelButtons(button: $b100; refresh: true)
      
      b100: rowCreate(field: "text" = "TEXT"; field: "code" = $code)
      
      ```code:totum
      
      =: set(table: 'table'; field: 'field' = $value)
      
      value: "some_value"
      
      ```
      

      В этом случае код внутри блока code обрабатывается как текст и его $ и $# не пересекаются с кодом текущего поля. :totum означает подсветить как код тотума.

      В code: возможно передать name другого поля в текущей таблице, тогда код будет взят из него из соответствующего типа кода.

    • iconстрока название иконки fontawersome 4 без fa-.

    • backgroundстрока название цвета web color или HEX #ddd.

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

    • refresh — позволяет указать refresh конкретной кнопке в стеке.

    example: panelButtons(button: $b1; button: $b2; button: $b3)
    
    b1: rowCreate(field: "text" = "OPEN"; field: "code" = @table.field_vith_code; field: "vars" = $vars; field: "refresh" = true)
    
    b2: rowCreate(field: "text" = "IFRAME"; field: "code" = "field_name_in_table"; field: "vars" = $vars; field: "refresh" = false)
    
        ~vars: rowCreate(field: "field_value" = #field_value)
    
    b3: rowCreate(field: "text" = "DELETE"; field: "code" = $code; field: "refresh" = true)
    
        ```code:totum
        =: delete(table: $#ntn; where: 'id' = #id)
    
        ```
    
    // text и code — обязательные параметры, остальные нет.
    
    

    panelHtml

    Доступен в секциях: Форматирование ячейки.

    =: panelHtml(condition: ; html: )
    

    Добавляет html в панель по правой кнопке мыши. Работает только с кодами p в форматировании ячейки.

    Обязательные параметры

    Необязательные параметры

    • condition — при наличии функция выполнится только при срабатывании в true.

    panelImg

    Доступен в секциях: Форматирование ячейки, строки, таблицы.

    =: panelImg(condition: ; img: )
    

    Добавляет картинку в панель по правой кнопке мыши. Работает только с кодами p в форматировании ячейки.

    Обязательные параметры

    • img — необходимо передать файл картинки из поля Файл.

    Необязательные параметры

    • condition — при наличии функция выполнится только при срабатывании в true.
    example: panelImg(img: #file[0][file])
    
    

    Обработка json

    jsonCreate

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: jsonCreate(data: ; field: "" = )
    

    Возвращает одну строку в формате json.

    Необязательные параметры

    • data — данные любого формата.

    • field — ключ и значение для добавления в формируемый json. Если в data: ключа нет, то он будет добавлен, если есть, то переписан с новым значением.

    • flag - ESCAPED_UNICODE или PRETTY.

    example: jsonCreate(data: $data; field: "c" = 3; field: "b" = 4)
        data: rowCreate(field: "a" = 1; field: "b" = 2)
    
    // Результат: {"a":1,"b":4,"c":3}
    

    jsonExtract

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: jsonExtract(text: )
    

    Возвращает данные из json-строки или null, если формат строки не json.

    Обязательные параметры

    • text — текст в формате json.
    example1: jsonExtract(text: "[1,2,3,4]")
    
    // Результат - лист из значений 1,2,3,4
    

    СИНТАКСИЧЕСКИЙ АНАЛОГ:

    example2: json`[1,2,3,4]`
    
    // Результат - лист из значений 1,2,3,4
    

    Также можно использовать непосредственно в функции:

    example3: if(condition: json`[1,2,3,4]` = 3; then: true; else: false)
    
    // Результат - true
    

    Операции с файлами

    fileGetContent

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: fileGetContent(file: )
    

    Возвращает содержимое файла в текущей транзакции.

    Обязательные параметры

    • file — имя файла на диске. При обращении к полю файл его можно получить как #file_field[0][file].
    example: fileGetContent(file: #file_field[0]["file"])
    
    //Результат: содержимое запрошенного файла
    
    //Exception: при отсутствии файла - "Файл [[$fname]] не существует на диске"
    

    Системные

    execSSH

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: execSSH(ssh: ; vars: )
    

    Возвращает полный ответ команды SSH в виде текста.

    При установке в корневой папке установки Totum создается Conf.php, в котором по умолчанию execSSHOn установлен в inner. Для разблокировки execSSH его надо установить в true:

    protected $execSSHOn = 'inner'; —> protected $execSSHOn = true; 
    

    Домашняя директория для execSSH это папка, в которую смотрит nginx!

    Обязательные параметры

    • ssh — команда ssh. Передается как строка.

    Необязательные параметры

    example1: execSSH(ssh: "php -v")
    
    //Результат: PHP 7.1.28 (cli) (built: Apr 9 2019 11:24:32) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.3.2, Copyright (c) 2002-2018, by ionCube Ltd.
    
    example2: execSSH(ssh: "python ./python_script"; vars: $vars)
    
    vars: rowCreate(field: "key_1" = "value_1"; field: "key_2" = "value_2")
    
    // В ssh будет выполнена команда $ python ./python_script key_1='value_1' key_2='value_2'
    

    logRowList

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: logRowList(table: ''; cycle: ; id: ; field: ; params: ; limit: )
    

    Возвращает данные из встроенной системы логирования в виде списка массивов.

    Обязательные параметры

    Необязательные параметры

    • idid строки в строчной части. Обязательно, если field указан из строчной части.

    • cycle — определяет цикл, если таблица table: является расчетной в цикле.

    • params — передается как список полей. Если не передается, то возвращаются все поля.

    • limit — это число, количество последних изменений.

      • Если передать в качестве значение параметра 0 или "", то он будет отключен!

    normalizeN

    Доступен в секциях: Код действия

    =: normalizeN(table: ; num: )
    

    Возвращает null.

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

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

    Обязательные параметры

    • table — name таблицы.

    • num — максимальное количество десятичных цифр в значениях n, при достижении которого проводить нормализацию. Рекомендуется 12.

    example: normalizeN(table: 'table_name'; num: 12)
    
    //Результат: в таблице table_name будут переназначены на целые числа все значения поля n в порядке поля n
    

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

    sysTranslit

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: sysTranslit(str: )
    

    Возвращает транслитерированную строку с пробелами замененными на _ и удаленными небуквенно-циферными символами

    Обязательные параметры

    example: sysTranslit(str: "Мама рама")
    //Результат: mama_rama
    

    getTableSource

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: getTableSource(table: ; cycle: ; hash: ; fields: ; id: )
    

    Возвращает row из полных данных таблицы.

    • Для простых таблиц выгружает удаленные строки только если в fields есть is_del.

    • Для таблиц циклов выгружает все таблицы циклов для каждой запрошенной строки.

    Обязательные параметры

    Необязательные параметры

    example: getTableSource(table: 'globcalcs_test_table')
    // Результат: {
    //  "rows": {
    //    "1": {
    //      "_E": true,
    //      "id": 1,
    //      "test1": {
    //        "v": "1"
    //      },
    //      "dannie": null,
    //      "is_del": true,
    //      "testmd5": null
    //    }
    //  },
    //  "nextId": 8,
    //  "params": {
    //    "test": {
    //      "v": "37"
    //    }
    //  }
    //}
    

    getTableUpdated

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: getTableUpdated(table: ; cycle: )
    

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

    Обязательные параметры

    Необязательные параметры

    tableLogSelect

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: tableLogSelect(from: ; to: ; users: ; order: )
    

    Возвращает rowList из таблицы логгирования действий пользователей.

    Обязательные параметры

    • from — дата от в формате Y-m-d.

    • to — дата до в формате Y-m-d.

    • users — список id пользователей.

    Необязательные параметры

    • ordername-параметр поле в таблице table:, по которому будет осуществляется сортировка.

      • Множественный параметр — если указано несколько параметров order:, то сортировка будет осуществлена последовательно.
      • Если параметр отсутсвует, то сортировка будет произведена в произвольном порядке.
      • asc — по возрастанию
      • desc — по убыванию

    userInRoles

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: userInRoles(role: )
    

    Возвращает true или false в зависимости от того, есть ли у пользователя роль перечисленная в role.

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

    При выгрузке и загрузке в другую установку через Экспорт/Импорт таблиц номера ролей, указанные в этой функции, будут заменены на номера ролей в целевой схеме в которую идет загрузка.

    Обязательные параметры

    • role — множественный параметр id роли.

    getUsingFields

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: getUsingFields(table: ; field: )
    

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

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

    • При использовании в name полях функций с указанным name таблицы

    • В параметрах с $#

    Обращение через @table_name.field_name на данный момент не ловится

    Обязательные параметры

    example: getUsingFields(table: 'settings'; field: 'code')
    //Результат: {"0":{"name":"do_it_now","version":null,"table_name":"settings"}}
    

    schemaGzStringGet

    Доступен в секциях: Код действия.

    =: schemaGzStringGet(password: ; withlog: true; withbfl: false)
    

    Возвращает gz-запакованную строку со дампом текущей схемы.

    Требуется pg_dump в Conf.php Доступен только для пользователей с ролью Создатель

    Обязательные параметры

    • password — md5-хеш пароля текущего пользователя
    • withlog — включать ли в схему данные таблицы _log (логирование изменений данных в таблицах) +true - включать
      • false- исключать (по умолчанию)
    • withbfl — включать ли в схему данные bfl-лога +true - включать
      • false- исключать (по умолчанию)
    example: schemaGzStringGet(password: ; withlog: true; withbfl: false)
    //Результат: gz-запакованная строка со дампом текущей схемы
    

    tableUrl

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: tableUrl(table: ''; cycle: )
    

    Возвращает полный путь к таблице с протоколом.

    Обязательные параметры

    Необязательные параметры

    ПРИМЕРЫ

    example: tableUrl(table: 'table_name'; cycle: $#nci; protocol: "http")
    

    sleep

    Доступен в секциях: Код действия.

    =: sleep(sec: )
    

    Создает паузу в выполнении действия на указанное количество секунд.

    Обязательные параметры

    • sec — число секунд.

    tableLog

    Доступен в секциях: Код действия.

    =: tableLog(table: ''; cycle: ; id: ; field: ; comment: )
    

    Позволяет внести произвольную запись в Лог по полю. Например, если у вас есть цикл в результате которого несколько раз меняются значения поля, но нужно записать только финальное изменение.

    Обязательные параметры

    Необязательные параметры

    • cycle — определяет цикл, если таблица table: является расчетной в цикле.

    • idid строки, если field определяет поле в строчной части.

    • commentстрока, комментарий, который будет записан в лог.

    Обработка xml

    xmlExtract

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: xmlExtract(xml: ; attrpref: "__"; textname: "TEXT")
    

    Возвращает объект тотума содержащий содержимое XML.

    Обязательные параметры

    • xml — содержимое xml-файла для обработки.

    • attrpref — префиксы для атрибутов. Если задано "", то добавляться не будут. Если любые другие символы, то будут добавлены перед названиями атрибутов.

      <TEST><TOWN index="37" sname="Москва" latitude="56" longitude="38"/></TEST> при указанном префиксе __ и преобразовании в JSON будет ==>
      
      {"TEST":{"TOWN":[{"__index":"37","__sname":"Москва","__latitude":"56","__longitude":"38"}]}}
      

    Необязательные параметры

    • textname — при наличии текста внутри тегов, эти тексты будут помещены в элемент с указанным в этом параметре названием.

      <TEST><TOWN>Текст в теге</TOWN></TEST> при указанном префиксе TEXT и преобразовании в JSON будет ==>
      
      {"TEST":{"TOWN":[{"TEXT":"Текст в теге"}]}}
      

    PRO

    proDbConnect

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: proDbConnect(name: )
    

    PRO Доступ к базам данных Открывает коннект к сторонней базе данных. Возвращает hash соединения.

    Обязательные параметры

    • name — name коннекта к БД в таблице ttm__external_databases

    proDbDisconnect

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: proDbDisconnect(hash: )
    

    PRO Доступ к базам данных. Закрывает коннект к сторонней базе данных. PRO Доступ к базам данных

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

    Обязательные параметры

    • hashстрока hash коннекта открытого proDbConnect.

    proDbExecQuery

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: proDbExecQuery(hash: ; name: ; query: ""; params: $list)
    

    PRO Доступ к базам данных. Выполняет запрос и возвращает количество задействованных строк (в PDOrowCount).

    Обязательные параметры

    • queryQuery строка. Может быть использована подстановка параметров через ?.

    Необязательные параметры

    • params — список, подстановка значений ? в query.

    Должно быть передано одно из

    • name — name коннекта в таблице ttm__external_databases. Если передается name, то коннект будет открыт при начале исполнения функции и закрыт после ее выполнения.

    • hashстрока hash коннекта функции proDbConnect. Если передан hash, то коннект по завершению выполнения функции закрыт не будет.

    proDbSelect

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: proDbSelect(hash: ; name: ; query: ""; params: $list)
    

    PRO Доступ к базам данных. Выполняет Query и возвращает первую строку в виде row.

    Обязательные параметры

    • queryQuery строка. Может быть использована подстановка параметров через ?.

    Необязательные параметры

    • params — список, подстановка значений ? в query.

    Должно быть передано одно из:

    • name — name коннекта в таблице ttm__external_databases. Если передается name, то коннект будет открыт при начале исполнения функции и закрыт после ее выполнения.

    • hashстрока hash коннекта функции proDbConnect. Если передан hash, то коннект по завершению выполнения функции закрыт не будет.

    proDbSelectList

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: proDbSelectList(hash: ; name: ; query: ""; params: $list)
    

    PRO Доступ к базам данных. Выполняет Query и возвращает результат в виде rowList.

    Обязательные параметры

    • queryQuery строка. Может быть использована подстановка параметров через ?.

    Необязательные параметры

    • params — список, подстановка значений ? в query.

    Должно быть передано одно из:

    • name — name коннекта в таблице ttm__external_databases. Если передается name, то коннект будет открыт при начале исполнения функции и закрыт после ее выполнения.

    • hashстрока hash коннекта функции proDbConnect. Если передан hash, то коннект по завершению выполнения функции закрыт не будет.

    proPrefilteredIds

    Доступен в секциях: Код; Код действия; Код селекта; Форматирование ячейки, строки, таблицы.

    =: proPrefilteredIds(exclude: ; excludelist: )
    

    Только в PRO.

    Возвращает id строк ограниченных префильтрами.

    Обратите внимание, что в inner-канале все префильтры равны пустоте!

    Необязательные параметры

    • exclude — name-параметр исключающий префильтр из рассчета.

    • excludelist — список name-полей на исключение.

    proLinkToBuffer

    Доступен в секциях: Код действия.

    =: proLinkToBuffer(text: )
    

    Копирует текст в буфер обмена компьютера.

    Обязательные параметры

    • text — Текст для сохранения в буфер обмена.

    Services

    serviceXlsxGenerator

    Доступен в секциях: Код; Код действия.

    =: serviceXlsxGenerator(template: ; data: ; answertype: ; name: ; comment: ; pdf: false)
    

    Возвращает filestring, filestringRow или filestringRowList.

    Подробнее про генераторы в Сервисах ⟹

    Подключение Сервисов ⟹

    Обязательные параметры

    • template — техническое имя файла на сервере Totum.

      • #file_field[0][file] — чтобы получить из поля Файл.

      • "*NEW*" — для того, чтобы использовать чистый шаблон.

      • list — если необходимо одним действием создать документы по разным шаблонам.

      • ${value} — так должны быть указаны переменные для замены.

    • datarow с ключами для замены.

    Необязательные параметры

    • answertype — тип ответа:

      • "filestring" — по умолчанию, возвращается бинарник. Используется при генерации одного файла в запросе.
      • "filerow" — в этом случае вернется готовый row с ключами name и filestring. Name необходимо задать в параметре name. Используется при генерации одного файла в запросе.
      • "filerowlist" — в этом случае вернется готовый rowList с ключами name и filestring. Используется при генерации нескольких файлов в запросе.
        • name — необходимо задать как list в параметре name.
        • template — может быть задан как одно значение или список.
        • datarowList если нужно сгенерировать несколько файлов по одному шаблону или нескольким.
      • "filestringlist" — в этом случае вернется list из filestring. Редко используется при генерации нескольких файлов.
    • name — одно значение или list. Используется совместо с типами ответа filerow и filerowlist.

    • comment — комментарий для биллинга.

    • pdftrue, если ответ необходимо вернуть в pdf.

    • titles — используется только в связке с *NEW* в шаблоне. Ожидает list с заголовками полей для колонок — они будут добавлены при генерации автоматически.

    serviceDocxGenerator

    Доступен в секциях: Код; Код действия.

    =: serviceDocxGenerator(template: ; data: ; answertype: ; name: ; comment: ; pdf: false)
    

    Возвращает filestring, filestringRow или filestringRowList.

    Подробнее про генераторы в Сервисах ⟹

    подключение Сервисов ⟹

    Обязательные параметры

    • template — техническое имя файла на сервере Totum.

      • #file_field[0][file] — что бы получить из поля Файл.

      • list — если необходимо одним действием создать документы по разным шаблонам.

      • ${value} — так должны быть указаны переменные для замены.

    • datarow с ключами для замены.

    Необязательные параметры

    • answertype — тип ответа:

      • "filestring" — по умолчанию, возвращается бинарник. Используется при генерации одного файла в запросе.
      • "filerow" — в этом случае вернется готовый row с ключами name и filestring. Name необходимо задать в параметре name. Используется при генерации одного файла в запросе.
      • "filerowlist" — в этом случае вернется готовый rowList с ключами name и filestring. Используется при генерации нескольких файлов в запросе.
        • name — необходимо задать как list в параметре name.
        • template — может быть задан как одно значение или список.
        • datarowList если нужно сгенерировать несколько файлов по одному шаблону или нескольким.
      • "filestringlist" — в этом случае вернется list из filestring. Редко используется при генерации нескольких файлов.
    • name — одно значение или list. Используется совместо с типами ответа filerow и filerowlist.

    • comment — комментарий для биллинга.

    • pdftrue, если ответ необходимо вернуть в pdf.

    servicePdfGenerator

    serviceXlsxParser

    =: serviceXlsxParser(file: ; withformats: ; withcolumns: )
    

    Только в PRO

    Возврящает rowlist из данных, содержащихся в .xlsx файле, отправленном в Cервис.

    Обязательные параметры

    • file — необходимо передать техническое имя файла на диске содержащееся в ключе file поля тип Файл.

    или (необходимо использовать один из этих параметров)

    • filestring — необходимо передать содержимое файла полученное функцией fileGetContent

    Необязательные параметры

    • withformats — если true, возвращает некоторые параметры форматированя для ячейки. Возвращает информацию по:

      • bold
      • italic
      • underline
      • color
      • background
    • withcolumns — если true, то будет добавлена строка с буквенным обозначением колонки.

    • comment — коментарий для системы логирования сервисов.

    serviceAskOpenaiList

    serviceAskOpenai