# Проект desk. Часть I

# Что за проект DESK?

DESK это своя база данных учёта заказов по перевозки товаров, которая потом выгружается в 1С.

До меня её начинал писать другой программист и досталась она мне с концепцией создания какого угодно количество полей, но отображаемые поля зависят от типа заявки. Конечно я бы отговорил от концепции "какого угодно количества полей", т.к. 2 раза попадал на такие проекты и везде поля были заранее известны, а новые добавлялись редко. Трудоёмкость создания индивидуальной БД, где можно создавать сколько угодно полей с разными типами, со своими приколами редактирования и удаления -- процесс очень трудоёмкий, долгий и всегда кривоработающей. Сроки были весьма сжаты и надо было работать с тем что есть, т.к. начинать с 0 времени не было.

# Что досталось на доработки?

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

На тот момент была кое-какая страница списка, страница просмотра и почти никакой страницы редактирования. Изначально было 5 типов заявок и предыдущий разработчик решил, что будет 5 инфоблоков под разные типы с пересекающимися свойствами. Т.е. если нужно будет добавить новое поле во все типы, то нужно будет создать в каждом инфоблоке новое свойство.

С учётом что выводить мы должны разные типы в один список, с учётом сортировки...

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

Уже досталась концепция описания детальной страницы заявки и её редактирования. Там всё плохо ...

# Детальная страница

Детальная DESK заявки

Как видим на детальной странице присутствуют:

  • верхняя панель для быстрых переходов к другим сервисам DESK (отчёты, задачи и т.д.);
  • табы для переходов к подсервисам самой заявки DESK. С указанием в табах количества записей закрепленных за заявкой;
  • форма детального просмотра.

Из интересного на детальной представлен блок компании. Внутри он запрашивает данные из CRM, 1С и других сервисов, например к модулю согласования договоров.

# Страница редактирования

Страница редактирования

Для подстановки пользователей используется стандартный виджет из Битрикс24. При смене компании карточка также поставляется актуальная для выбранной компании.

# Кнопки для быстрой фильтрации

Табы для быстрой фильтрации

Для быстрого доступа заявкам можно кликнуть на кнопки:

  • "Выполняю", там где авторизованный пользователь стоит автором заявки (1).
  • "Поручил", там где авторизованный пользователь ответственный (2).
  • "Наблюдаю", там где авторизованный пользователь наблюдатель (3).
  • "Заявки моего отдела", там где авторизованный пользователь состоит в отделе автора или ответственного по заявке (5).
  • "Все", все заявки из вышеперечисленных вкладок (4).

Выбранная кнопка запоминается для каждого пользователя, т.е. если вы закончили работать во вкладке, например, "Поручил", то после того, как снова перейдёте на страницу списка заявок "Поручил" уже будет выбрана.

У каждой заявки есть статусы. Тумблер "Показывать закр.заявки" (6) отвечает за то, чтобы показывать или не показывать заявки у которых статус в состоянии "заявка закрыта". Кружок (7) отвечает за обновление таблицы без перезагрузки страницы.

# Фильтры

Табы для быстрой фильтрации

Для фильтрации используется стандартный фильтр(компонент) из Битрикс24. Также работает быстрый поиск по многим полям в заявке.

# Множественные действия

Множественные действия

Для множественных действий так же используются стандартные возможности грида из Битрикс24. Для выбранных DESK заявок можно: удалить, изменить статус, сменить автора или ответственного.

Продолжение во второй части.