excelConvertRule

Конвертация полей базы для импорта-экспорта с Excel
Автор дополнения
touol
Пакетов
11
Закачек
940
Обычно отвечает в течение суток
Автор дополнения
Пакетов
11
Закачек
940
Обычно отвечает в течение суток
Версия 1.0.7-beta
Дата выпуска 12.09.2023
Загрузки 7
Просмотры 2 291
Внимание, этот компонент требует версию PHP 7.0 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.6 !
По работе приходиться с Excel подключаться к сайту на MODX и выгружать с него или загружать в него данные. Постепенно наработался лучший путь. В excelConvertRule редактируются правила конвертации колонки excel в колонку базы MODX. В модуле vba modx_main подготовлены функции LoadToBase для загрузки с excel в MODX и LoadToExcel обратно. В файле core/components/excelconvertrule/users_editor.xlsm, для примера, сделан редактор пользователей MODX. Используя этот пакет можно быстро сформировать нужную выгрузку(загрузку) из любых таблиц MODX.

# Использование

В админке MODX зайти в приложение excelConvertRule и настроить правила конвертации.

Для доступа к приложению пользователю назначить политику excelConvertRuleEdit. И нужен getTables. Приложение на нем сделано.
В приложении создаем имя правил конвертации:

Параметры pdoTools задают данные которые выгружаются в excel. Их можно оставить пустымыми и задавать из excel. loadModel — загружают модели базы. Обязательно при загрузке в базу, если модель не стандартная для MODX. class — в какую таблицу базы загружаются данные.
В правилах конвертации задется Тип правила, Поле базы, Колонка excel, Подпись поля, Параметры.

Типы правил:
  1. text — преобразует колонку excel в поле базы и обратно как есть.
  2. detType- устарело но мне пока на рабочем сайте нужно
  3. date- преобразует колонку excel вида 05.10.2020 в поле базы 2020-10-05 и обратно.
  4. datetime — преобразует колонки excel в поле базы и обратно как есть., например Колонка excel C,D поле базы data_otgruzki. В C 05.10.2020 в D 10:00 преобразуется в 2020-10-05 10:00
  5. manager — преобразует колонку excel с именем пользователя (fullname) в поле базы id юзера и обратно.
  6. beznal — устарело.
  7. boolean — Использую сейчас text_to_other_text .
  8. text_to_other_text — преобразует колонку excel в поле базы и обратно согластно Правилам заданным в Параметрах правила. Например поле gender Параметры
    {
        "1": "Мужской",
        "2": "Женский"
    }

В файле core/components/excelconvertrule/users_editor.xlsm, для примера, сделан редактор пользователей MODX.

В строке 15 страна изменена с США на Россия и эта строка подсвечивается. При нажатии кнопки «Отправить изменения в базу» страна у пользователя перезапишется.

Для использования в редакторе Visual Basic открыть модуль vba modx_main задать адрес сайта, логин и пароль пользователя MODX с разрешением use_excelconvertrule (политика excelConvertRule).



Function LoadToExcel(ConvertRuleName As String, SheetName As String, Optional startRow As Long = 5, _
    Optional endRow As Long = 3000, Optional myProtectSheet As String = "", _
    Optional pdoTools As Object) As Boolean
LoadToExcel — имеет параметры:
ConvertRuleName — имя правила конвертации.
SheetName — лист excel на который загружать данные.
startRow — начальная строка.
endRow — случайно затесалась, но уже удалить сложно.
myProtectSheet — пароль защиты листа.
pdoTools — параметры pdoTools для выгрузки из базы. (Кому попало разрешение use_excelconvertrule не давать!).

Function LoadToBase(ConvertRuleName As String, SheetName As String, Optional startRow As Long = 6, _
    Optional endRow As Long = 3000, _
    Optional startCol As String = "", Optional endCol As String = "", Optional testCol As String = "") As Boolean
LoadToBase — имеет параметры:
ConvertRuleName — имя правила конвертации.
SheetName — лист excel с которого выгружать данные.
startRow — начальная строка.
endRow — конечная строка.
Если не задано startCol, то в поле D1 листа имя колонки в которой проверяется на не пустое значение!!!
иначе:
startCol — начальная колонка
endCol — конечная
testCol — имя колонки в которой проверяется на не пустое значение.

Так же можно использовать getRangeToJson_All, getRangeToJson_OnlyEdited и postJsonModx

Function postJsonModx(action As String, Optional data As Variant = Nothing, Optional ShowResponse As Boolean = False) As Object
Функция делает запрос на assets/components/excelconvertrule/action.php с одним из 3
action: getConvertRule, LoadToExcel, LoadToBase.
Обьект data преобразует в json строку.
функция возращает ответ MODX.

Из админки в приложении excelConvertRule или в ecrUpLoad можно также напрямую выгрузить в excel таблицу с заданным правилом конвертации (нужно pdoTools и соответствие полей базы клонкам excel).

1.0.4-beta

  • Добавлена функция вычисления excel формулы.

1.0.3-beta

  • Добавлены связи в модели.
  • Добавлено копирование правил (Работает с getTables 1.5.8-alpha.).

1.0.2-beta

  • Исправлено конвертация со сниппетом.

1.0.1-beta

  • Исправлено демоправило.

Последние обсуждения в сообществе MODX.pro