×

Закрытый раздел для скачивания технической документации по препаратам. Кейс

Россия +7 (909) 261-97-71
Шрифт:
0 98
Подпишитесь на нас в MAX

Исходная задача

Клиенту требовалось создать на сайте закрытый раздел с технической документацией по препаратам. Раздел должен был быть доступен по отдельной ссылке и закрыт от публичного доступа, чтобы документы могли получать только авторизованные пользователи с подтвержденными правами.

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

Клиент хотел получить удобный интерфейс, похожий на структуру файлового хранилища: пользователь заходит на страницу, видит список препаратов, выбирает нужный препарат или несколько препаратов и скачивает документы архивом.

Цель проекта

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

Основные задачи:

  • ограничить доступ к разделу только для разрешенной группы пользователей;
  • вывести список препаратов с документами;
  • дать возможность скачать все документы по одному препарату ZIP-архивом;
  • дать возможность выбрать отдельные документы внутри препарата;
  • реализовать массовое скачивание документов по нескольким препаратам;
  • сформировать общий архив по всем препаратам;
  • сохранить понятную структуру файлов внутри архива: документы должны раскладываться по папкам с названиями препаратов;
  • защитить прямой доступ к файлам и выдавать документы только после проверки прав.

Пользователи раздела

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

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

Для проекта настроена проверка доступа по группе пользователей: работать с разделом могут администраторы и пользователи группы №7.

Структура закрытого раздела

Раздел реализован на странице:

/docs/

Раздел на сайте "Документы"

На странице выводится список препаратов. Для каждого препарата доступны действия:

  • скачать все документы по препарату ZIP-архивом;
  • открыть модальное окно и выбрать отдельные документы;
  • отметить препарат чекбоксом для массового скачивания документов по нескольким препаратам.

В верхней части страницы размещены массовые действия:

  • «Скачать документы на все препараты одним архивом»;
  • «Скачать документы выбранных препаратов ZIP».

Кнопка скачивания выбранных препаратов изначально скрыта. Когда пользователь отмечает хотя бы один препарат, кнопка общего архива скрывается, а вместо нее появляется кнопка скачивания выбранных препаратов.

Работа с документами

Документы хранятся в свойствах элементов инфоблока. Каждый препарат является отдельным элементом, а документы привязываются к нему через файловое свойство DOCS.

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

Пользователь может работать с документами несколькими способами:

  1. Скачать все документы по конкретному препарату.
  2. Открыть список документов препарата в модальном окне.
  3. Скачать один конкретный файл.
  4. Отметить несколько документов внутри препарата и скачать только выбранные.
  5. Отметить несколько препаратов и скачать все документы по ним одним архивом.
  6. Скачать документы по всем препаратам одним общим архивом.

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

Модальное окно выбора документов

Чтобы не перегружать страницу, список файлов по каждому препарату не выводится сразу при загрузке. Документы подгружаются AJAX-запросом только после клика на кнопку «Выбрать документы».

Раздел "Документы" на сайте

В модальном окне пользователь видит список файлов выбранного препарата. Если документов несколько, рядом с каждым отображается чекбокс. Пользователь может отметить только нужные документы и скачать их архивом через кнопку «Скачать выбранные».

Раздел на сайте "Документы"

Если у препарата только один документ, кнопка «Скачать выбранные» не выводится, так как выбор не требуется. В этом случае пользователь может скачать файл напрямую через кнопку «Скачать документ».

Массовое скачивание по препаратам

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

Раздел на сайте "Документы"

Если пользователь не выбрал ни одного препарата, ему доступна кнопка «Скачать документы на все препараты одним архивом». При нажатии система формирует ZIP-архив со всеми документами по всем препаратам.

Если пользователь выбирает один или несколько препаратов, кнопка общего архива скрывается и появляется кнопка «Скачать документы выбранных препаратов ZIP». В этом случае в архив попадают только документы отмеченных препаратов.

Внутри архива документы группируются по папкам:

Общий архив.zip

  Препарат 1/

    документ 1.pdf

    документ 2.docx

  Препарат 2/

    декларация.pdf

    паспорт безопасности.pdf

Предупреждение при большом количестве выбранных препаратов

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

Раздел на сайте "Документы"

Когда пользователь выбирает 10-й препарат, появляется сообщение о том, что формирование и скачивание архива может занять много времени. В модальном окне доступны две кнопки:

  • «Скачать выбранное» – сразу запускает скачивание архива по выбранным препаратам;
  • «Продолжить выбор» – закрывает предупреждение и позволяет выбирать препараты дальше.

Предупреждение повторяется при выборе 20-го, 30-го, 40-го препарата и далее каждые 10 выбранных позиций. Логика учитывает текущее количество выбранных чекбоксов при каждом изменении: если пользователь снял часть отметок, а затем снова дошел до порогового значения, предупреждение появится повторно.

Техническая реализация

Раздел реализован на сайте под управлением 1С-Битрикс. Для вывода списка препаратов используется компонент bitrix:news.list.

В целях оптимизации файловое свойство DOCS не загружается сразу для всех элементов списка. На странице может быть до 1000 препаратов, поэтому предварительная загрузка всех документов могла бы замедлять работу раздела. Вместо этого реализована ленивая AJAX-загрузка: список документов конкретного препарата запрашивается только при открытии модального окна.

Для проекта разработаны отдельные серверные обработчики:

  • /docs/get_documents.php – получает список документов конкретного препарата для модального окна;
  • /docs/download_file.php – скачивает один документ;
  • /docs/download_zip.php – формирует ZIP по одному препарату или выбранным документам;
  • /docs/download_zip_bulk.php – формирует ZIP по всем или выбранным препаратам.

ZIP-архивы формируются стандартными средствами PHP без сторонних библиотек. Временные архивы создаются в каталоге /docs/zipfile и удаляются после скачивания, чтобы не занимать место на сервере.

Безопасность

Раздел закрыт от неавторизованных пользователей. Доступ к странице и ко всем AJAX-обработчикам проверяется отдельно.

Перед просмотром или скачиванием документов система проверяет:

  • авторизован ли пользователь;
  • входит ли пользователь в разрешенную группу;
  • является ли пользователь администратором;
  • корректна ли сессия Битрикс;
  • корректна ли подпись переданных параметров;
  • относится ли запрошенный файл к выбранному препарату.

Прямые ссылки на файлы из /upload/iblock/ не используются для скачивания. Одиночные документы отдаются через защищенный PHP-обработчик /docs/download_file.php. Это позволяет не открывать документы публично и исключить скачивание файла без проверки прав.

Даже если пользователь узнает технический ID файла, он не сможет скачать его через обработчик, если этот файл не привязан к выбранному препарату в свойстве DOCS.

Оптимизация производительности

Так как раздел может содержать большое количество препаратов и документов, особое внимание было уделено скорости загрузки страницы.

Основные решения:

  • документы не загружаются вместе со списком препаратов;
  • список файлов подгружается только по клику;
  • результат AJAX-загрузки кешируется на стороне браузера в рамках текущей страницы;
  • ZIP формируется на диске, а не в оперативной памяти;
  • временные архивы удаляются после скачивания;
  • для массового скачивания добавлено предупреждение при выборе большого количества препаратов.

Такой подход позволяет сохранить быструю загрузку основной страницы и при этом поддерживать работу с большим объемом файлов.

Управление документами

Сотрудники клиента могут управлять документами через административную панель сайта. Документы привязаны к конкретным препаратам через файловое свойство элемента инфоблока.

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

Участие программиста для стандартного добавления или замены документов не требуется.

Результат для клиента

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

Что изменилось после внедрения:

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

Функционал решил исходную бизнес-задачу: упростил передачу документов партнерам и клиентам, сократил ручные операции и повысил контроль над доступом к технической документации.

Возможности развития

В дальнейшем раздел можно расширить дополнительными возможностями:

  • добавить поиск по названию препарата или документа;
  • вывести дату загрузки и срок действия документа;
  • добавить статусы актуальности сертификатов;
  • реализовать уведомления об истечении срока действия документов;
  • добавить журнал скачиваний;
  • настроить статистику по пользователям и документам;
  • реализовать разные уровни доступа для отдельных групп пользователей;
  • добавить интеграцию с CRM, 1С или внутренней системой клиента.

Есть о чем рассказать? Тогда присылайте свои материалы в редакцию.


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
Как ChatGPT выбирает компании для рекомендаций: что уже известно и как бизнесу подготовиться к эпохе AI Search
Игорь Антонов
1
комментарий
0
читателей
Полный профиль
Игорь Антонов - Для молодых сайтов в YMYL-тематиках я бы добавил отдельный блок про согласованность сущности: одинаковые название, телефон, адрес и перечень услуг на сайте, в картах, каталогах и профильных публикациях. Мы сейчас проверяем это на новом медицинском проекте narkologmsk.ru — без массовых анкорных ссылок, через подтверждённые карточки и содержательные материалы. Было бы полезно увидеть в продолжении сравнение источников, которые чаще цитируют Google AI Overviews и ChatGPT именно для локальных запросов.
Мы сократили рутину SEO-специалиста на 95% – вот архитектура, которая это сделала
Гостьkorayaskin
2
комментария
0
читателей
Полный профиль
Гостьkorayaskin - Можно также посмотреть разбор инструментов типа KeywordKick — помогает быстрее понять, где именно конфликт сигналов.
Конференция GEO 2026: как брендам попасть в ответы нейросетей
Дмитрий Севальнев
0
комментариев
0
читателей
Полный профиль
Дмитрий Севальнев - Мощно, мощно!
Яндекс открыл продажи через Алису и Поиск для продавцов без сайтов
Дмитрий Орлов
1
комментарий
0
читателей
Полный профиль
Дмитрий Орлов - Прикольно, покупать через колонку-))
Яндекс выложил в опенсорс языковую модель, которая лежит в основе быстрых ИИ-ответов в Поиске
Роман Каржонков
1
комментарий
0
читателей
Полный профиль
Роман Каржонков - Молодцы! Такие AI-модели могут широко используется в корпоративных, обучающих и научных АI-enabled платформах.
Сервисы для создания квизов: сравнение по конверсии, гибкости сценариев и интеграциям
Виктор
1
комментарий
0
читателей
Полный профиль
Виктор - Без сервиса FormDesigner.ru эта подборка будет не полной. Удивлен, почему вы его не включили в список?
5 полезных сервисов для работы с учебными текстами
Anna B.
2
комментария
0
читателей
Полный профиль
Anna B. - Отличный разбор, очень своевременно!
Сайт компании в 2026 году: что проверяет Роскомнадзор и как не получить штраф
Олег Черников
1
комментарий
0
читателей
Полный профиль
Олег Черников - Дима спасибо, отличный обзор! За ГОСТ Р 52872-2019 спасибо! Давно около него ходил.
Рейтинг GEO-агентств для ecom в России: как продвигать интернет-магазин в нейросетях
Игорь
6
комментариев
0
читателей
Полный профиль
Игорь - Как раз сейчас пытаемся продвинуть свой интернет-магазин спортивных товаров для нейросетей, чтоб почаще нас упоминали. Работаем с Zenlink. Привлекло то, что у них есть реальные кейсы и к работе адекватно подходят. Сначала заказали просто анализ, чтоб они проверили, как нас вообще нейросети упоминают. Интересовала Алиса, ЧатГпт, и ДипСик. Там конечно все довольно печально было... Упоминаний мало. Но после того как мы свой сайт оптимизировали по их советам и они выполнили аутрич, плюс GERM, упоминаться стали чаще. В Алисе и ГПТ особенно, в ДипСик поменьше рост, но тоже есть. Это воодушевляет, конечно. И даже было пару клиентов, которые нас именно через нейросеть нашли. Сейчас опрос проводим, чтоб реальную пользу для себя понять. И вот, она уже есть. На мой взгляд эта услуга подходит тем бизнесам у кого большой средний чек, тогда даже пару клиентов с лихвой отбивают затраты на такое продвижение.
Рынок безалкогольных напитков в 2026 году: как категория продает через доверие к бренду
Алексей
1
комментарий
0
читателей
Полный профиль
Алексей - Все бы хорошо, но это в прошлом. В 2026 г. о росте 2020-2025 гг. остается только мечтать. Рынок БАН перешел к снижению. К серьезному снижению.
ТОП КОММЕНТАТОРОВ
Комментариев
910
Комментариев
834
Комментариев
554
Комментариев
540
Комментариев
483
Комментариев
393
Комментариев
373
Комментариев
262
Комментариев
249
Комментариев
171
Комментариев
156
Комментариев
142
Комментариев
130
Комментариев
121
Комментариев
100
Комментариев
97
Комментариев
97
Комментариев
96
Комментариев
80
Комментариев
77
Комментариев
74
Комментариев
67
Комментариев
66
Комментариев
60
Комментариев
59

Отправьте отзыв!
Отправьте отзыв!