Страница 1 из 1

Ошибка сортировки в отчетах

Добавлено: 24 янв 2025, 10:42
moks87
Создал общий отчет (из дополнений). При сортировке данных отчета по одному из полей возникает ошибка:

Database Error: 1052 - Column 'field_244' in order clause is ambiguous
Query: select e.* , (CASE WHEN e.field_262='74' THEN e.field_236-60*86400 WHEN e.field_262='75' THEN e.field_236-90*86400 WHEN e.field_262='76' THEN e.field_236-30*86400 WHEN e.field_262='77' THEN e.field_236-60*86400 END) as field_238, (CASE WHEN e.field_262='74' THEN 'не требуется' WHEN e.field_262='75' THEN e.field_236-60*86400 WHEN e.field_262='76' THEN 'не требуется' WHEN e.field_262='77' THEN 'не требуется' END) as field_240, (CASE WHEN e.field_262='74' THEN e.field_236-30*86400 WHEN e.field_262='75' THEN e.field_236-45*86400 WHEN e.field_262='76' THEN 'не требуется' WHEN e.field_262='77' THEN 'не требуется' END) as field_242, (e.field_236) as field_244, (if(e.field_230>0,e.field_230+5*86400,NULL)) as field_246 from app_entity_26 e where e.id>0 order by (field_244) asc limit 0, 50
Page: /index.php?module=items/listing
#0 includes\functions\database.php(99): mysqli_query()
#1 modules\items\actions\listing.php(215): db_query()
#2 index.php(31): require('C:\\OSPanel\\doma...')
#3 {main}

Видимо, происходит пересечение наименований полей таблицы и вновь создаваемых полей для запроса. Есть ли где-то ограничение на номер field_X для устранения этой ошибки?

Re: Ошибка сортировки в отчетах

Добавлено: 24 янв 2025, 17:54
moks87
Сам нашел, сам решил.

В файле \includes\classes\fieldstypes\fieldtype_formula.php: 437, 442 вместо "field_" ввести любое другое название. Я изменил на "fields_". Теперь пересечения имен нет, ошибка ушла.
Но обнаружился другой баг в отчете - если кто-то отсортирует отчет по столбцу, эта сортировка применяется к отчету и отображается для всех пользователей. Настройка сортировки в админке ничего не дает - сортировку сбрасывает любой воспользовавшийся ей пользователь. Как это решить - пока не нашел.