Таблицы в учетных системах

    Когда-то давным давно угораздило меня попасть в мир учетных систем, да не просто учетных, а работающих через Web. Много воды утекло с тех пор, много систем родилось, некоторые из них уже погибли. Это очень динамичный мир. В этом мире множество систем, от брутальной, умудренной сединами , до совсем молодой Acumatica. Есть гламурненькие Эльба с FinoBox, есть и крутой Мегаплан, есть мой любимый, суровый, но симпатишный Oreodor. Во всех них очень умные формы, ещё более умная (чем пользователь) навигация, ну, и таблицы! Давайте подойдем ещё ближе.

    Все это Web, все это работает, все функционально, а функционала много.

    Не так давно, по долгу службы, я делал обзор различных платформ и ERP систем. Моей задачей было разобраться в особенностях реализации интерфейсов, понять почему было сделано так, а не иначе. Обзор был полезен по работе, теперь я им смело тыкаю в коллег, когда те хотят что-то испортить. Не долго думая я решил адаптировать свой обзор в статью, дополнить, обрезать и поделиться с вами, уважаемые Хабровчане.

    Сортировка


    Как правило, она реализуется кликом по заголовку колонки, как, например, в 1C, Мегаплан или Oreodor. При этом на колонке появляется указатель на направление сортировки. Бывает опция дублируется в меню колонки, если такое есть (как в Oreodor). Впрочем в некоторых системах (например FinoBox) сортировка естественная — по датам расходов, элементов управления ею нет, и не нужно.

    Кстати, большинство систем дают возможность задавать сортировку из интерфейса лишь по одной колонке единовременно. Удобное управление множественной сортировкой увы, задача нетривиальная, и никто её не осилил. Если сортировать множественно и можно, то это задается из настроек списка, как в 1С.

    Навигация по списку


    Три самых распространенных пути:
    1. Постраничный просмотр (paging). Такой путь у Acumatica и Oreodor. Главный плюс постраничного просмотра — возможность быстро перейти к нужной позиции в списке.

      Все данные разбиты на страницы, известно общее количество записей, известно окно просмотра. Настолько классика, что и добавить нечего, разве что окно просмотра можно рассчитывать динамически, по размеру области отображения списка. Это позволяет избавиться от вертикального скроллинга на совсем.
    2. Бесконечный скролл (Infinity Scroll) — это когда данные подгружаются и отображаются в процессе скроллинга. Т.е. фактически позиция начала (skip) выборки определяется текущим положением скорлла, а размер выборки (limit) — размером области отображения, вроде этого. Замечен в 1С. Штука крайне крутая, позволяет экономить трафик, разгрузить DOM браузера, и все такое. Но, увы, требует очень много усилий для хорошей реализации. И ввиду своей бесконечности порождает проблемы перехода на конкретную позицию в списке (этот недостаток компенсируется фильтрацией).

      Способ хорош если данных не много (2-3 окна просмотра), или очень много, но они либо фильтруются в процессе просмотра до двух-трех окон просмотра, или каждая запись сама по себе не так важна, а важна обобщенная информация, тенденция (поток задач в багтрекере к примеру).

      Вообще суть этого метода в облегчении DOM за счет уменьшения одновременно отображаемых элементов на странице. В один момент времени рендерятся только записи в окне, что позволяет создать иллюзию единовременного отображения огромного объема данных за счет полосы прокрути и быстрого отклика на её перемещение.

      Так же способ благодатен на кеширование, эвристику и серверную оптимизацию.
    3. Нативный скролл браузера — путь тех, кто не спорит с браузером. Это когда мы скролим не конкретно этот список, а целиком страницу. При этом может быть какая-то реализация Infinity Scroll. Этот вариант используют в FinoBox, Эльба, Мегаплан. Если верстка и организация системы позволяет избавиться от горизонтального скроллинга, или же если горизонтальный скроллинг не приносит проблем с ориентированием в системе — это лучший выбор. Он очевиден, прозрачен и быстр. Минусом метода является то, что активно скроллить можно только один список, и вообще, одну панель (форму, меню, таблицу).

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


    Быстрое открытие и выделение


    Открытие по двойному клику (это стандарт). Не стоит путать двойной клик с открытием ссылки, т.к. ссылки, как правило, открываются на значение ячейки, как в Oreodor, Мегаплан, Эльба.

    В некоторых системах есть выделение, в том числе и множественное Тут есть два подхода в интерфейсе — галочки и выделение. Не так важно как это делается, важно зачем. Множественное выделение позволяет реализовать групповые операции над указанными записями, например одновременная проводка множества документов.

    Выделение Мегаплана, Oreodor, 1С реализовано подобно таковому в настольных приложениях (с зажатым Ctrl помечаются записи):
    FinoBox же идет по пути галочек. В общем-то это более наглядно, но чуть менее удобно при большом количестве колонок (нежелателен горизонтальный скроллинг):

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

    Контекстное меню


    Вообще, есть два типа ERP систем в Web — те, что пытаются быть браузерными, и те, что пытаются вести себя как настольные. Контекстное меню это нативный браузерный элемент управления, перехватывать его дерзко, но многие этим грешат, к примеру 1С и Oreodor.

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

    Фильтрация и поиск


    Сердце любого списка, гоняющее в венах данные — это фильтрация, ну, и поиск. Эти штуки уже сами по себе нетривиальные. Дело в том, что на фильтрах сходится два противоречия — функциональность и простота. Простота — это удобство, функциональность — это возможность получить то, что нужно. В некоторых системах, как таковых, пользовательских фильтров нет. В смысле совсем нет. В них список открывается уже подфильтрованный по какому-то признаку, допустим активные счета, или пассивные счета, список называется “Мои активы”, “Мои пассивы”, или же переключатель режима где-то в списке “Показать документы”, “Показать акты”. С одной стороны это белый флаг, капитуляция перед лицом заведомо нерешаемой задачи легкого в использовании и функционального фильтра. С другой же — это отточенный бизнесс процесс, который за счет минимизации позволил отказаться от произвольных фильтров в принципе. Хорошим примером хорошей реализации этого является Эльба.

    Те же, кто решился сделать фильтры, а это FinoBox, 1C, Oreodor, Мегаплан, разделились на две группы — фильтры через форму и фильтры через меню.

    Фильтры через форму


    Фильтр задается на форме, где-то рядом со списком. Форма сложная. Клинический случай развития идеи — использование формы с табличной частью для полноценного дерева выражений, приводящего в ужас гуманитарно-экономический склад ума. Но даже форма (за исключением формы с деревом выражений) не позволяет сложно сочитать условия объединения фильтров. И главная проблема — эта форма занимает безумно много места. Пространство, выделенное под неё, прямо пропорционально возможностям фильтров из интерфейса и сложности установленного фильтра. Наиболее красиво и изящно этот подход реализован в Мегаплан, им удалось сделать полноценную динамическую форму с хорошим откликом. Чуть по брутальнее сделано в FinoBox. Картинка для сравнения:


    Фильтры через меню


    Это попытка решить задачу элегантно ценою функционала. Как правило жертвуют условиями объединения фильтров, объединяя все фильтры через “И”. При этом появляется возможность фильтровать из разных мест, ведь элементы управления фильтром так же упрощаются. Например фильтр можно встроить в меню колонки, или контекстное меню ячейки. Вот как это выглядит в Oreodor:

    Отказ от условий объединения влечет перемещение этой логики в сам фильтр, т.е. некоторые типы данных, например мультилинки, могут объединяться через ИЛИ, хотя все прочие фильтры через И.

    Практически все системы позволяют сохранять преднастроенные фильтры, а некоторые и делиться ими с коллегами по системе. Особенно хорошо это сделано в Atlassian JIRA, хоть это и другая тема, но отличный пример для подражания.

    Цвета, иконки, выделения


    Типовая задача — выделить запись в списке цветом. Это может быть акцент на новой записи, подсвечивание аннулированной и т.п. Как правило, это выделение документа на том, или ином статусе. Возможность довольно распространенная и встречается везде, где это может понадобиться. Когда цвета мало — используют пиктограмму, которая призвана символизировать душевное состояние строки в текущий момент времени. Примеры этого в разных системах:

    В некоторых системах дополнительно используют разные шрифты, кегли и ДЕКОР. Все, чем можно сделать нечитаемой любую таблицу, или убить эпилепсика. Однако, при умеренном использовании это незаменимый функционал для выделения записи среди её подруг.

    Агрегации и группировки


    Что может быть милее бухгалтеру строки “Итого”? А если ещё и с красной циферкой “- 0 руб. 17 коп.”… Бурю эмоций вызывает эта строка у чувственных, прекрасных повелительниц дебета и кредита. Большинство ERP систем умеет строить итоговую строку с различными функциами агрегации. Важной фичей является её динамическое перестроение по фильтру. Вот как это выглядит в Эльбе:

    Пожалуй Эльба тут всех заткнула за пояс по удобству и осмысленности. В FinoBox все гораздо суровее:

    Ну, и Oreodor совсем сурово:

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

    Отображение данных


    Любопытно посмотреть плотность отображаемых данных на квадратный сантиметр экрана в разных системах:


    Заметно четкое разделение двух лагерей — тех кто пытается показать как можно больше (more, more, MORE DATA!!!), и тех, кто пытается показать как можно меньше понятнее. Вообще не все данные воспринимаются пользователем, по этому нет большого смысла показать сразу все, гораздо важнее сколько информации будет усвоено.

    Логичным продолжением этой тенденции будет развитие вариаций отображения данных. Красивый рендер на денежные типы, красивый на даты, на картинки и иконки. Особенно в этом хорош Мегаплан, но и FinoBox не уступает. В Oreodor есть реверанс в эту сторону. А вот Acumatica и 1С в этом плане сильно стиснены (в прямом смысле этого слова). Красиво и развернуто что-то показать там — проблематично.

    Особое отображение данных в таблице — это первый шаг на пути к редактируемости этой таблицы. Поясню, чтоб красиво отобразить что-то рано или поздно потребуется отделить данные от их представления. А когда мы отделяем данные от представления — у нас появляется возможность работать с данными по разному, ведь они уже не являются сами по себе представлением этих данных. Т.е. теперь мы передаем не строку даты, красиво оформленную, а объект даты, с которым вполне себе можно что-то сделать. Редактируемая таблица вообще очень сложная штука, полная ограничений, костылей и условностей. Чем проще система, тем легче она дается и в большей мере реализуется. Например в FinoBox это выглядит так:



    Любопытно как выделяются ячейки, которые доступны для редактирования. Очень красивый эффект. А вот в Oreodor все достаточно аскетично (красным уголком помечаются ещё не сохраненные изменения):

    В 1С тоже есть редактируемые таблицы, но их возможности несколько ограничены:


    Не таблицами едиными живет список


    По сути таблица — это лишь один из вариантов представления набора данных. Накладывая на данные какой-то интерфейс, контракт, мы можем отобразить их в другом виде. Например имея диапазон дат в наборе, мы можем представить набор в виде календаря, а имея ссылку на родительский элемент — в иерархии. Эти два вида наиболее распространенные, хотя список можно показать и на карте, и вообще в полном 3D, графиком с зелеными пятнами на фоне (которые тоже что-то, да значат).
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 59

      +7
      Ваш Oreodor использует полностью все стандартные элементы ExtJS. Вплоть до иконок и пометки поля красным уголком. Так что все вопросы скорее к Sencha, нежели к Oreodor. Хотя они могли бы и подадаптировать, я думаю.
        –1
        Ага! Только это не совсем ExtJS, это Ext.NET, обертка компонентов для ASP.NET. Пока небыло необходимости как-то перегружать стили.

        Сила не в компонентах, сила в том, как их организовать и граматно применить ;) Ну и чуток расширить, где надо.
          +2
          … и грамотно писать слово «грамотно» :)
        0
        image
        Вы перепутали мегаплан и 1с на картинках :)
          +6
          Oh Shit!!! Спасибо! :) Только прошу в личку, пожалуйста…
            +6
            Ну что вы, человек хочет показать свою внимательность в публику :)
          +1
          > Удобное управление множественной сортировкой увы, задача нетривиальная, и никто её не осилил. Если сортировать множественно и можно, то это задается из настроек списка, как в 1С.

          По-моему, самый простой способ сделать интерфейс сортировки по нескольким полям — это нарисовать для каждого сортируемого поля дополнительную «булавку» — «зафиксировать порядок сортировки» и поместить её рядом со стрелкой-указателем текущей сортировки. Все зафиксированные поля сохраняют свой порядок при изменении порядка сортировки других полей.
            +1
            Хорошее решение. Нужно ещё добавить снятие всех сортировок, и как-то показывать пользователю что хоть одна сортировка установлена (как кнопка фильтры). Тогда даже если колонка прокручена горизонтальным скролом, видно что где-то что-то отсортировано.

            Но при множественной сортировке важнее порядок, в котором были установлены сортировки. Вот это показать, сложнее (чтоб выглядело просто). А самое сложное — управлять порядком, ведь все сводится к Order by «Field1» then by «Field2» then by «Field3»… типа того.

            И вот тут затык получается, и, в конечном итоге, выносят это все в отдельное окно настройки :\ Я пробовал много вариантов, интуитивно и легко для пользователя не вышло.
              0
              Визуально, порядок сортируемых полей можно осуществлять через drag-n-drop самих колонок таблицы. Те, что левее, являются отсортированными данными высшего порядка, чем те, что правее.

              Это естественное представление для европейцев. Для других народностей, которые пишут справа-налево, порядок «правый — первый, левый — последний» можно указать в настройках приложения.
                0
                У нас есть такая фича, как закрепляемые колонки. Если в списке 50 колонок (и аналитикам никто руки не оторвал), то юзеру сложно ориентировать при горизонтальной прокрутке. Можно закрепить колонки, тогда они не будут прокручиваться, останутся на месте, а прокручиваться будут незакрепленные. В общем-то можно было бы попробовать вашу идею (надеюсь вы её ещё не запатентовали?) :) Во всяком случае я опустил руки перед этой задачей… Хотя может и сработает %)
                +1
                По поводу множественной сортировки удобно сделано в DevExpress-овских контролах.
                Простой клик по шапке сортирует по колонке(по возрастанию/убыванию), и сбрасывает предыдущую сортировку.
                Клик по шапке с Shift-ом добавляет данную колонку к списку сортируемых. Очень просто, и мало кликать.

                Еще хорошая вещь придумана с фильтрацией. В шапке таблицы следующей строкой после имён идёт строка с пустыми input-полями для фильтрации — т.е. под каждым именем колонки есть input для поиска по данной колонке. Поэтому не нужно никаких дополнительных открывающихся окон (аля 1С) для фильтрации — вписал в поле, нажал Enter — пошла фильтрация. Фильтрация будет простая — т.е. для строк '..%', для остального — просто сравнение. В отдельном окне можно задать кастомную фильтрацию со всеми плюшками. Такое решение обеспечивает гибкость и достаточную быстроту выполнения типовых операций.

                По поводу порядка — при фильтрации понятное дело разницы нет, а при сортировке — можно помечать цифирьками sub/sup-скриптом около имени сортируемой колонки в шапке. Изменять порядок конечно не очень понятно как, я согласен, но отобразить максимально понятно можно.
                  0
                  Клик с Shift — это круто. Спасибо! Может вам будет интересно в демках Oreodor посмотреть на менюшку фильтрации вживую.
                    +1
                    Всегда пожалуйста :)

                    Да, конечно посмотрю, интересно.
              +1
              Блин, отличный обзор!
              А было бы круто, если бы была сводная таблица в конце. Типа:
              Множественная сортировка: 1С-да, Остальные — нет.
              Контекстное меню: 1С, Ореодор — да, Остальные — нет.
              Изменение порядка колонок: — Скрытие колонок: — …
              ну и т.д.
              Интересно было бы посмотреть…
                +1
                А в 1с это разве не просто Axtive X? там теперь реально html?
                  +1
                  Хехе, чистый HTML + JS! Я бы даже сказал отборный. Потыкайтесь, там интересно организованы окна в отдельном браузере. У них это уже года 2-3 как работает, в этой самой демке. Ребята молодцы, у них много интересных решений.
                    0
                    Я восхищён. Вот молодцы! Видимо, давно сделали ставку на облака.
                      0
                      Спасибо! Сейчас много систем метит в облака, мы (я один из ведущих разработчиков Oreodor, делаю View) в этом направлении года 3-4 работаем. Текущая итерация (3-я версия платформы) почти два делается. Не знаю точно сколько 1С свой веб клиент разрабатывают, но у них, судя по моему анализу, есть некоторые сложности с преемственностью предыдущих версий, в том числе и настольных.

                      В общем на этом направлении много чего интересного происходит, война за рыкон только начинается.
                        0
                        пока некоторые только «метят», другие уже вовсю продают: 1cfresh.com/solutions
                  +1
                  В 1С тоже есть редактируемые таблицы, но их возможности несколько ограничены

                  Можно поподробней, чего конкретно не хватает в этом плане 1С, по сравнению с приведенными конкурентами?
                    +1
                    Редактируемость гридов вообще штука сложная. Там нет ПУЗ-ов, ограничения на DataBinding-и, на неатомарные операции, не все типы данных можно редактировать. Редактируемая сущность должна быть простой. Вообще куча ограничений на это везде. Я не хочу сказать что 1С плохой, а FinoBox хороший, вовсе нет. Просто обозначил сложный момент. Ни одна система, из тех что я видел, не реализовала полноценный редактируемый грид, везде есть мирриады ограничений навроде тех, что я перечислил.
                      +1
                      Ни в коем случае не обвиняю вас в предвзятости. Просто раньше не задумывался особо, все устраивало, вот и хочется получить мнение со стороны — чего же там не хватает.
                        0
                        Сложно тут сказать что-то совсем конкретное. В целом есть два этапа ввода редактируемого грида (как по мне):
                        1) Отделение данных от представления. На клиент приходят сырые данные и на клиенте они уже красиво показываются. Это можно увидеть в HTTP запросах от грида. Теперь можно использовать поля редактирования, слегка адаптированные, но в целом как на форме.
                        2) Интеграция событий полей и всего с ней связанного в поля редактирования на гриде. Для этого нужно как-то использовать богатые механизмы формы, на которых реализованы события поле, ПУЗ-ы, изменения данных с сервера в ответ на изменение состояния записи.

                        И тут возникает куча нюансов, типа динамическое изменение доступности, видимости редактируемого поля.

                        Есть ещё вариант всё брать с сервера, т.е. грид фактически не редактируемый. Из него вызывается событие редактирования, с сервера приходит значение редактируемой ячейки, и все управляется на сервере. Тут будет много проблем далее по пути. Как хранить изменяемую запись на сервере в промежутках между изменениями, если никак, то что делать с неатомарными изменениями.

                        Вот ориентируясь на такие моменты можно понять насколько полная реализация в той, или иной системе. Боюсь отвечать совсем конкретно, т.к. я могу что-то упустить и принизить достоинства других систем. Хотя все они очень крутые и хорошо делают свое дело (плохие я в обзор не включал).
                        0
                        есть там всё, вплоть до динамического изменения типа данных в редактируемом поле в зависимости от значений других реквизитов. Более того, редактирование таблицы невозможно без привязки к некоторому объекту. Таким образом, целостность, непротиворечивость и прочая, и прочая реализуется на уровне объекта в целом, а не отдельной таблицы, причём как на уровне описания метаданных, так и на уровне кода. А от редактирования собственно объектов в табличном виде в управляемом приложении ушли сознательно: объекты редактируются только в формах.
                          0
                          Вот самое интересное — это «А от редактирования собственно объектов в табличном виде в управляемом приложении ушли сознательно: объекты редактируются только в формах.». Остальное я и назвал — «ограничения». Слишком много терминологии в обсуждении таких вопросов возникает. За ней теряется логика :\
                            0
                            ну так и приведите без лишних слов конкретные примеры того, чего нельзя отредактировать в таблицах в 1С. Пока все утверждения об ущербности 1С достаточно беспочвенны.
                              0
                              Да вы, батенька, тролль. Я уж было хотел ответить, но понял что ответ вас не интересует. Кратко — 1С крутые ребята, проблемы описаны в комментах выше. В этой ветке больше не отвечу.
                                0
                                когда возразить нечего, начинаются обзывательства и уход от темы. в иных кругах это носит название «критиканство»
                      0
                      Кстати, большинство систем дают возможность задавать сортировку из интерфейса лишь по одной колонке единовременно. Удобное управление множественной сортировкой увы, задача нетривиальная, и никто её не осилил. Если сортировать множественно и можно, то это задается из настроек списка, как в 1С.

                      я осилил в моем ERP, правда статистика показывает что пользователи почти никогда не сортируют больше чем по одной колонке.
                        0
                        потому что никто не предлагает
                        меня отсутствие очевидной реализации этого весьма бесит, в том же phpMyAdmin, приходится писать sql-запрос ручками каждый раз
                          0
                          я предлагаю, пока что клиентов мало.
                            0
                            У вас скриншоты мелкие, ничего разглядеть невозможно. Это еще я программист, а пользователи выставляют шрифты побольше
                              0
                              Там есть PDF файл с презентацией, а если перейдете на русскую версию сайта, то еще и презентация, которую я на Ленэкспо давал в апреле. Если вас интересует, могу показать демо, но наверное в личке?
                                0
                                Нет, не интересует на самом деле, просто хотел посмотреть, как сделана мультисортировка.
                                  0
                                  Сделано просто, на каждой колонке ссылка 'не сортировано', при нажатии изменяется на 'по возрастанию', при следующем нажатии изменяется на 'по убыванию' и при следующем нажатии изменяется на 'не сортировано'.

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

                                  1. Имя — по возрастанию.
                                  2. Год — по убыванию.

                                  В общем так, и если сортировку изменить на 'не сортировано', то название колонки из этого списка уйдет; и еще есть клавиша для очистки всех сортировок и фильтров.
                                    +1
                                    как то так я и представлял
                                    хоть и требует всегда это выглядит удобно и красиво, но все же достаточно юзабельно, а главное, имхо, востребовано

                                    статистика использования рядовыми юзерами может быть интересна разработчикам, но не мне

                                    я, кстати, замечал, что не зная очередного ПО, за счет только использования стандартных навыков (хоткеи, контекстные меню, хинты, умение вычленять нужное взглядом, логика, в конце концов) разбирался в ситуациях быстрее, чем бухгалтеры/экономисты, которые в этом ПО уже годами работали
                                      0
                                      Проблема с пользователями систем намного глубже, это все-таки еще не те люди, которые сегодня вырасли с iPhone и iPad в руках. Они буквально не знают чем отличается программа, в которой они работают от визуального shell операционной системы. Им приходится обьяснять как выглядит гнездо CAT5 кабеля и они совсем неуверенно используют меню. Для них любое действие в компьютере кажется финальным и опасным, то есть перейти из одного окна в другое это проблема, даже детали окна (где клавиша минимизировать, где меню в окне, где титул, как окно передвинуть и т.п.) это все для них является проблемой.

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

                                      А ведь сначала такие простые казалось бы понятия как: «часть слова и еще одна часть слова напечатанные вместе определенным образом выведут на экран все продукты с названием, где содержаться обе эти части в любом порядке и не оглавление не имеет роли» — это было чем-то вроде черной магии.

                                      Просто чтобы что-то выучить берет какое-то время.
                        +1
                        Это все очень круто. А нет чего попроще, что бы тупо пару таблиц в sql через web редактировать.
                          +2
                          phpMyAdmin
                            0
                            Непригоден совершенно.
                              +2
                              зато именно то, что вы спросили
                                –2
                                Это совсем не то, что я спросил. Даже если вырвать мои слова из контекста, что вы и попытались сделать.
                                  +3
                                  То что вы спросили вам и дали. Совершенно точно подходит под ваш запрос. Если «непригоден совершенно» то аргументируйте и дополните ваш запрос новыми требованиями, тогда помогут более конкретно
                                    0
                                    phpMyAdmin как следует из названия предназначен для администрирования СУБД, но никак не для работы с ними.
                                    Сейчас информация хранится в excel, но это
                                    1. неудобно
                                    2. нет проверки целостности данных
                                    3. о работе нескольrих пользователей можно забыть

                                    Варианты типа libreoffice base тоже малопригодны, формы там слишком убогие.
                                      +1
                                      ну в общем, как обычно приходиться «вытягивать требования из заказчика» :)

                                      картина становится уже более ясной что вам требуется.
                                      если используете excel и вроде как не устраивает, что то не то, но тем не менее используете, может попробовать access? :))

                                      Опять же уточните предметную область и что конкретно требуется от продукта, кроме того что известно:
                                      1. Манипуляция данными
                                      2. Проверка целостности данных. Тут конечно не очень понятно что вы под этим понимаете/подразумеваете.
                                      3. Мульти-пользовательская система.
                                        0
                                        access не годится, так как нужна кроссплатформенность. web тут позволяет править данные хоть с телефона с андроидом.
                                        Манипуляции — самые простые действия, ввод, правка, удаление.
                                        Целостность — как в реляционных СУБД, например проверка на уникальность или наличие данных в других таблицах
                                        Многопользовательсткая — значит пользователи работают, а не бегают к админу или орут на весь офис «кто залочил файл».
                                        0
                                        На саммо деле, вы можете взять и установить и использовать нашу систему(Oreodor) бесплатно. Мы, в свою очередь, окажем вам всяческую поддержку
                                          0
                                          Позволяет ли ваша система описывать некую логику к данным?
                                          Банальный пример: учет IP адресов. Нужна проверка на вхождение в префикс, маски и прочих мелочей.
                                            0
                                            Может, и не только это
                                              +1
                                              Вы крутые. Но Oreodor, как я понял из сайта, требует IIS и MSSQL. А у нас как-то винды нет. Совсем нет.
                                                0
                                                это прискорбно (с) :)
                              0
                              ASP.NET MVC. Я проще ничего не знаю для этого.
                                0
                                не через веб попробуйте mysql workbench
                                +1
                                >Что интересно, в 1С ссылок нет (возможно это обусловлено их оконной организацией).

                                В 1с ссылки есть, только ими почему-то не пользуются в стандартных конфигурациях.
                                  0
                                  Хмм, не заметил. Т.е. можно перейти на запись или форму в рамках одного окна, или открыть запись в другому окне по ссылке? *ссылка в смысле тег A
                                    +1
                                    Ссылка может быть как элементом формы, так и использоваться в HTML блоке. Может указывать как на внутренний объект, так и на любой другой адрес.

                                    image

                                    image
                                      0
                                      Спасибо! Поправил топик. Честно сказать я облазил только демку, так что мог что-то упустить. С точки зрения написания решения я с 1С не разбирался.
                                  0
                                  Кстати, большинство систем дают возможность задавать сортировку из интерфейса лишь по одной колонке единовременно. Удобное управление множественной сортировкой увы, задача нетривиальная, и никто её не осилил. Если сортировать множественно и можно, то это задается из настроек списка, как в 1С.
                                  — тривиально. У меня как часть платформы идет генератор кода, который создает большую часть кода во всех уровнях (DAO, VO, Business Delegate, Filters, Actions, Forms, Web Beans, JSP) и по умолчанию после генерации можно сортировать по всем заданным колонкам, даже сразу. Под названием каждой колонки слово «не сортировано», нажимаешь, получаешь «по возрастающей», нажимаешь еще раз и получаешь " по убывающей", рядом с клавишей «сформировать» появляется название колонки и выбранная сортировка. После выбора первого уровня сортировки, нажимаешь на «не сортировано» на следующей колонке и т.д. Потом нажимаешь на клавишу «сформировать» и выдаются данные сортированные по всем заданным колонкам сразу по порядку их выбора в выбранном направлении (ascending / descending).
                                    0
                                    Фильтрация у меня в платформе решена несколькими путями сразу, на каждой колонке можно задать фильтры. Для дат используются 'от' и 'до' поля, для чисел тоже, для текста урезанные регулярные выражения (об этом немного здесь). Кроме того можно фильтровать по динамическим структурам, созданным на ходу путем обьединения ярлыков, прицепленных к записям. Что интересно, используется 'гуманитариями' успешно.

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

                                    Самое читаемое