Мхитар Манасян › bestmdidi Паспорт верифицирован
Сайты, Telegram-боты и Mini Apps - Next.js, Nest.js, Node.js
Рейтинг
72 919
№ 9 в каталоге
Отзывы
Профессионализм
10/10
Коммуникация
9 /10
Город
Москва
Опыт работы
6 лет
На сайте с
2022 года
Юридический статус
Самозанятый
Эксперт
Национальной Гильдии Фрилансеров
Freelance.Boutique
Премиум-сервис для лучших исполнителей
Безопасная сделка
Деньги списываются после приёмки

Интернет-магазин ПрофиТекМед на 1С-Битрикс: доработка и запуск, опт для специалистов, обмен с 1С, ЮKassa, СДЭК, вход по SMS и переезд без потери адресов

Используемые навыки 1С 1с Bitrix MySQL PHP Интернет магазин

Описание

Заказчик - ПрофиТекМед, дистрибьютор профессиональной косметики, инъекционных препаратов и оборудования для косметологов, врачей и клиник. Продаёт в розницу и оптом специалистам через интернет-магазин, учёт ведёт в 1С.

Старый магазин на 1С-Битрикс работал и продавал. Новую версию начали на готовом шаблоне Kosmos из Маркетплейса Битрикса, моя задача - доработать её, запустить и перевести на неё основной домен.

Что нужно было сделать:
- три каталога, как в 1С и на старом сайте, чтобы адреса страниц не поменялись;
- опт для специалистов: оптовые цены по группам покупателей, а препараты для специалистов видят и покупают только врачи, медсёстры и клиники;
- регистрацию с выбором «Кто вы?», заявку специалиста с документами, личный кабинет и вход по коду из SMS;
- оплату картой, счёт для клиник и доставку СДЭК;
- обмен с 1С: из 1С приходят цены и остатки, а описания и фото, которые ведутся на сайте, обмен не должен затирать;
- перенос пользователей, заказов, отзывов и разделов со старого сайта и переезд домена с короткой паузой продаж.

Ограничения: старый сайт всё время продавал, поэтому тяжёлые операции на его сервере - только вне рабочего времени. Шаблон купленный, и правки не должны теряться при его обновлении. Сторону 1С настраивал специалист заказчика. Работа шла четырьмя этапами с фиксированным составом.

Решение

Я единственный исполнитель. Магазин работает на штатном каталоге и модуле магазина 1С-Битрикс, свой код - 25 классов-обработчиков событий на PHP и свой компонент формы специалиста. База MySQL, вспомогательные скрипты на Python.

Каталог и цены:
- три каталога, как в 1С: косметика, препараты для специалистов и каталог одного бренда;
- оптовые цены и «Цена по запросу» по группам покупателей. Гость видит цену звёздочками и приглашение войти, покупатель без права - «Цена по запросу» и кнопку заявки, врачи, медсёстры и клиники видят опт и покупают. Запрет проверяется на сервере, при расчёте цены и сохранении корзины, поэтому в обход вёрстки купить нельзя. Те же правила работают в подсказках поиска и в блоках главной;
- отметки «Хит», «Новинка», «Рекомендуем», товары без наличия в конце списка, поиск находит латинские названия;
- 27 брендов со своими страницами, главная по ТЗ с блоками из трёх каталогов, разделы и отзывы перенесены со старого сайта, демо-контент шаблона убран.

Покупатели:
- регистрация с выбором «Кто вы?»: розничный покупатель, врач, медсестра, косметолог-эстетист, клиника;
- форма специалиста с документами: заявка уходит на почту компании, доступ даёт сотрудник, добавив покупателя в группу, и тому сразу приходит письмо;
- вход по почте или по номеру телефона с кодом из SMS, вход через соцсети убран;
- личный кабинет по ТЗ: заказы, личный счёт, данные, реквизиты клиник.

Заказ, оплата и доставка:
- тип покупателя выбирается по группе, у специалистов есть оплата по счёту, галочка согласия стоит у кнопки;
- оплата картой через ЮKassa с онлайн-кассой, заказ сам становится оплаченным; счёт для клиник в PDF с печатью и подписями, чужой счёт открыть нельзя;
- СДЭК, курьер магазина и самовывоз; «Купить в 1 клик» работает и из корзины;
- цена доставки округляется до копеек: из-за двух наценок оплаченный картой заказ оставался «не оплачен».

Обмен с 1С:
- по CommerceML из 1С приходят названия, цены и остатки трёх каталогов, заказы уходят в 1С;
- описания и фото ведутся на сайте: обработчик убирает их из обновления во время обмена и пересобирает поисковый текст, проверено тестом на штатном импортёре;
- обмен не создаёт лишних каталогов и защищён.

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

SEO и переезд:
- старые адреса товаров и разделов сохранены, где адрес поменялся - 301 одним переходом, товар, переехавший в другой раздел, сам ведёт на новый адрес;
- мета-теги и заголовки по таблице SEO-специалиста, карта сайта, robots.txt, canonical, редиректы без «:443»;
- переезд: старый сайт закрыт заглушкой на 48 минут, за это время перенесены новые пользователи и заказы одной транзакцией со сверкой, включены боевые настройки, переключён домен и выпущен сертификат.

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

Каждое изменение на сервере - скриптом с проверочным режимом и резервной копией, в журнале изменений есть способ отката. Около 30 тестов, часть можно запускать на работающем магазине.

Результат

Магазин работает на основном домене с 14.10.2026: четыре этапа за 3,5 недели, с 22.09 по 14.10. Пауза продаж при переезде - 48 минут.

Что получилось:
- около 600 товаров в трёх каталогах, как в 1С, оптовые цены и покупка по группам специалистов;
- 27 брендов со своими страницами;
- оплата картой и счёт для клиник, доставка СДЭК, вход по SMS;
- обмен с 1С приносит цены и остатки и не затирает описания и фото;
- 717 старых адресов проверены на первом этапе; по таблице SEO-специалиста из 714 адресов 340 открываются, 167 ведут одним 301, 207 отдают 404 по решению SEO-специалиста;
- перед запуском обойдены 797 страниц карты сайта: код ответа, заголовок, описание, один h1.

Скорость (Lighthouse, лабораторный замер по 38 типам страниц, медианы): доступность 100 на телефоне и компьютере, скорость на телефоне 54 => 58,5, на компьютере 93 => 94,5. Фото в WebP: 189,9 => 16,3 МБ, шрифт: 1,16 МБ => 167 КБ.

В коде: 25 своих классов (около 4 100 строк), 98 скриптов миграций с проверочным режимом, около 30 тестов, 150+ коммитов, 196 записей в журнале изменений.

Сейчас идёт приёмка последнего этапа и 30 дней гарантии.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Личный кабинет покупателя для интернет-магазина Raschini на WooCommerce: вход по коду из SMS, карта лояльности со штрихкодом, синхронизация с retailCRM и 1С
Личный кабинет покупателя для интернет-магазина Raschini на WooCommerce: вход по коду из SMS, карта лояльности со штрихкодом, синхронизация с retailCRM и 1С
17
Веб-разработка и IT Битрикс24: две воронки продаж и смарт-процесс лаборатории. Два маршрута, обратная связь клиента с историей, PHP в бизнес-процессах, обработчики событий, запреты на этапах
Битрикс24: две воронки продаж и смарт-процесс лаборатории. Два маршрута, обратная связь клиента с историей, PHP в бизнес-процессах, обработчики событий, запреты на этапах
76
Веб-разработка и IT Визуальный редактор дашбордов мониторинга: npm-пакет на React и TypeScript со структурным редактированием, drag-and-drop, undo/redo и проверкой структуры
Визуальный редактор дашбордов мониторинга: npm-пакет на React и TypeScript со структурным редактированием, drag-and-drop, undo/redo и проверкой структуры
96
Веб-разработка и IT Trenergy - SaaS для фитнес-тренеров: Telegram Mini App, бот и панель управления. Тренировки, питание с КБЖУ, прогресс, чаты, оплата | React.js, Nest.js, Node.js
Trenergy - SaaS для фитнес-тренеров: Telegram Mini App, бот и панель управления. Тренировки, питание с КБЖУ, прогресс, чаты, оплата | React.js, Nest.js, Node.js
175