Zoho Creator: сортировка записей подформ в основных формах и представлениях / отчетах

Zoho Creator - отличная система для быстрого создания простых облачных приложений. Однако я столкнулся с проблемой с подформами: в настоящее время Zoho Creator не предоставляет функции для сортировки записей подформ по указанному столбцу. Вместо этого он сортирует записи в порядке их добавления.

Моя подформа - это форма Создателя, которая связана с другой формой Создателя (в основном, с двумя разными таблицами). Формы связаны с двунаправленными отношениями поиска.

Я видел и пытался реализовать эти "хаки", но ни один из них не подходит для моей ситуации:

  • [Zoho Forums, "Сортировка субформ строки"] [1]
  • [Zoho Forums, "Взломать сортировку строк подчиненной формы и предварительно заполнить поля строк, которые я хочу предварительно установить"][2]

Я также позвонил в службу технической поддержки Zoho, и, посмотрев на мое приложение, они сказали, что сортировка записей формы не возможна.

Есть другие идеи?

2 ответа

Решение

Мое проверенное решение все еще является хакерским, но до тех пор, пока Zoho не реализует метод для сортировки записей в форме с помощью графического интерфейса, это придется делать.

Сначала создайте функцию, которую вы можете вызывать из любого места (например, когда добавляется или изменяется новая запись формы)- для получения подробной информации об этом, перейдите по ссылке: http://www.zoho.com/creator/help/script/functions.html

Эта функция сначала продублирует записи субформы по идентификатору родительской записи (сортировка по соответствующему столбцу), а затем удалит все записи субформы, которые были вставлены до запуска скрипта:

int SubFormRecords_SortByAnything_ReturnCount(int ParentRecordID)
{
    scriptStartTime = zoho.currenttime;
    for each rSubFormRecord in SubFormRecords  [ParentFieldName = input.ParentRecordID] sort by FieldName1, FieldName3, FieldName2
    {
        NewSubFormRecordID = insert into SubFormRecords
        [
            FieldName1 = rSubFormRecord.FieldName1
            FieldName2 = rSubFormRecord.FieldName2
            FieldName3 = rSubFormRecord.FieldName3
        ];
    }
    delete from SubFormRecords[ (Series == input.ParentRecordID && Added_Time < scriptStartTime) ];
    return SubFormRecords[ParentFieldName == input.EventID].count();
}

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

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

Пожалуйста, дайте мне знать, работает ли это для вас, и если у вас есть идеи получше.

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

Благодарю.

      I have a a very simple workaround:
1) You have to add a Form Workflow
2)Record Event - Create OR Edit OR Create/Edit (As per your requirement)
3)Form Event - On successful form submission
4)Let Main_Form be the link name of the Main Form
4)Let Sub_Form be the Link name of the Sub Form (Not the link name you specify in the main form for the same sub form)
4)Let Field1 and Field2 are fields of subform on which you want to sort subform records
5)Let Link_ID be lookup field of Mainform ID in the subform
Workflow
1)Sub_Records = Sub_Form[Link_ID == input.ID] sort by Field1,Field2;
(sort by multiple fields, add asc/desc as per requirement)
2)delete from Sub_Form[Link_ID == input.ID];
3)for each sub_record in Sub_Records
{
insert into Sub_Form
[
Added_User = zoho.loginuser
Link_ID = input.ID
Field1 = sub_record.Field1
Field2 = sub_record.Field2
]
}
//Now you check the results in edit view of the main form
Другие вопросы по тегам