Аудит сайта на 1С-Битрикс после подрядчика нужен, чтобы до оплаты понять, можно ли этот сайт обновлять, поддерживать и передать другой команде. Главное, что проверяют: менялись ли файлы ядра в папке /bitrix, где лежат доработки, есть ли доступы ко всему коду и проходит ли сайт встроенный «Монитор качества». На базовую проверку уходит от одного до трех рабочих дней.
Обычно о проверке вспоминают слишком поздно. Сайт сдан, акт подписан, подрядчик пропал или поднял цену поддержки. Новая команда открывает проект и видит, что форма заказа работает через правленый системный компонент, а обновление платформы ломает каталог. Исправлять такое после приемки дороже, чем проверить до нее.
Что такое аудит кода сайта на 1С-Битрикс и чем он отличается от проверки дизайна
Аудит кода — это проверка того, как сайт устроен внутри: где лежат доработки, не тронуто ли ядро платформы, можно ли сайт обновлять и развивать без автора. Приемка по дизайну отвечает на вопрос «сайт выглядит и работает как в ТЗ». Аудит отвечает на вопрос «сколько будет стоить жить с этим сайтом следующие три года».
Два сайта могут одинаково выглядеть и одинаково открываться в браузере. При этом первый спокойно обновляется и передается любому разработчику на 1С-Битрикс, а второй держится на правках, о которых знает только автор. Разницу видно только в коде и в административной панели, поэтому заказчику без технического специалиста ее не заметить.
Общий порядок приемки сайта: тексты, формы, адаптивность, скорость, мы разбирали в чек-листе как принять сайт у подрядчика перед оплатой. Здесь речь только о том, что специфично для 1С-Битрикс и что обычно пропускают.
Почему правки ядра 1С-Битрикс опасны для бизнеса
Ядро 1С-Битрикс — это файлы платформы в папке /bitrix, которые производитель обновляет сам. Если подрядчик изменил их напрямую, при следующем обновлении платформы эти правки могут быть перезаписаны, а сайт потеряет часть функций или перестанет работать. Второй путь не лучше: сайт просто перестают обновлять, и он копит устаревший код и закрытые производителем, но не установленные исправления безопасности.
Почему подрядчики так делают? Чаще всего ради скорости. Поправить строку в системном компоненте быстрее, чем правильно скопировать его шаблон или написать свой компонент. На сдаче проекта разницы не видно. Она проявляется через полгода, когда нужно поставить обновление или поменять подрядчика.
Для бизнеса последствия выглядят так:
- обновления платформы откладываются, потому что «после них что-то ломается»;
- каждая доработка стоит дороже, ведь сначала нужно разобраться, что и где поменяно;
- новый подрядчик берет больше за вход в проект или отказывается от него;
- ошибки после обновления приходится чинить в спешке, иногда на работающем магазине.
Тему безопасного обновления мы отдельно разобрали в статье про обновление платформы 1С-Битрикс и откат без долгого простоя.
Где должны лежать доработки: папка /local
Собственный код проекта на 1С-Битрикс должен лежать в папке /local, папку /bitrix он трогать не должен. Папка /local появилась в главном модуле начиная с версии 14.0.1 и служит именно для доработок: компонентов, модулей, шаблонов сайта и шаблонов компонентов. Так файлы проекта отделены от файлов продукта.
Описание есть в уроке курса «Разработчик Bitrix Framework» о папке /local. Там же сказано, что у /local приоритет перед /bitrix: шаблон с тем же именем в /local/templates перекрывает одноименный шаблон из /bitrix/templates. Зачем папку ввели и как с ней работать при переносе проекта, объясняли и в блоге разработчиков 1С-Битрикс о поддержке папки /local.
Что должно быть на правильно сделанном сайте:
| Что доработано | Где должно лежать | Тревожный признак |
|---|---|---|
| Шаблон сайта | /local/templates/ | Нештатный шаблон лежит только в /bitrix/templates/ |
| Свой компонент | /local/components/свое_пространство_имен/ | Компонент лежит в /bitrix/components/bitrix/ рядом с системными |
| Шаблон системного компонента | Копия в шаблоне сайта, папка components/bitrix/ | Правки внесены прямо в шаблон в /bitrix/components/ |
| Свой модуль | /local/modules/id_модуля/ | Код модуля разбросан по init.php и папке /bitrix/modules/ |
| Обработчики событий, константы | /local/php_interface/ | Длинный init.php на сотни строк без структуры |
Последний пункт в таблице скорее повод присмотреться, чем нарушение. Небольшой init.php с подключением нескольких файлов нормален. Файл на тысячу строк, где перемешаны обработчики, интеграции и временные заплатки, говорит о том, что код писали в спешке.
Как проверить сайт на 1С-Битрикс встроенными инструментами
Быстрее всего начать с «Монитора качества». Это встроенный в 1С-Битрикс инструмент для проверки проекта перед сдачей заказчику. В нем есть автоматические и ручные тесты: интеграция дизайна, безопасность, производительность, настройки хостинга и целостность ядра. Порядок работы описан в главе о Мониторе качества в документации 1С-Битрикс.
Как использовать его при приемке:
- Попросите подрядчика пройти Монитор качества до сдачи и приложить отчет к акту.
- Откройте отчет сами или с независимым разработчиком. Смотрите на проваленные обязательные тесты и на комментарии к ручным.
- Отдельно проверьте результат теста на целостность ядра. Если он провален, попросите список измененных файлов и объяснение по каждому.
- Не принимайте формулировку «этот тест у всех падает» без разбора. Иногда это правда, но решать должен тот, кто будет поддерживать сайт.
Монитор качества полезен, но он не заменяет просмотр кода человеком. Он не скажет, что логика скидок продублирована в трех местах или что интеграция с 1С написана так, что при сбое теряет заказы. Это видно только при ручном аудите.
Чек-лист аудита кода перед приемкой
Перед оплатой последнего этапа проверьте сайт по списку ниже. Его можно отдать независимому разработчику на 1С-Битрикс как задание на аудит.
- Ядро: Есть ли измененные файлы в /bitrix, кроме служебных настроек. Сколько их и зачем.
- Папка /local: Лежат ли там все шаблоны, свои компоненты и модули. Нет ли доработок, размазанных между /local и /bitrix.
- Системные компоненты: Правились ли файлы компонентов из пространства имен bitrix напрямую.
- Версия платформы: Какая версия главного модуля и модулей стоит, когда сайт обновлялся последний раз, есть ли неустановленные обновления.
- Лицензия: На кого оформлен лицензионный ключ, до какого числа активна подписка на обновления.
- Сторонние модули: Какие решения из Маркетплейса установлены, кто их покупал и на кого они оформлены.
- Интеграции: Обмен с 1С, оплата, доставка, CRM. Где лежит код, есть ли журнал ошибок и что происходит при сбое.
- Репозиторий: Передан ли код в системе контроля версий с историей изменений или только архивом.
- Доступы: Хостинг, FTP или SSH, база данных, административная панель, домен, почта. Все ли записаны на компанию.
- Документация: Есть ли описание нестандартных доработок: что сделано, где лежит, как работает.
Каждый пункт стоит закрыть письменным ответом подрядчика. Ответ «все сделано по стандартам» без конкретики проверкой не считается.
Какие костыли чаще всего находят на сайтах 1С-Битрикс
Костыль — это временное решение, которое закрыло задачу на сдаче, но мешает дальше. По опыту аудитов B2BPRO.KZ, на сайтах после чужих подрядчиков чаще всего встречаются одни и те же вещи.
Первое: прямые правки шаблонов системных компонентов в /bitrix/components. Сайт выглядит правильно, но после обновления компонент может вернуться к стандартному виду, и каталог или корзина внезапно поменяются.
Второе: бизнес-логика в шаблонах. Расчет цены, скидки или наличия написан прямо в template.php. Такой код сложно найти, сложно проверить и легко сломать при смене дизайна.
Третье: запросы к базе в обход API платформы. Подрядчик пишет SQL вручную, потому что так быстрее. После изменения структуры таблиц в обновлении такие запросы начинают падать.
Четвертое: отключенное кеширование. Иногда его выключают, чтобы «не было проблем с обновлением данных». В итоге сайт тормозит под нагрузкой, а причину ищут на хостинге.
Пятое: тестовые и отладочные файлы на рабочем сайте. Скрипты выгрузок, копии страниц с припиской _old, файлы с выводом служебной информации. Часть из них доступна по прямой ссылке любому посетителю.
Ни один из этих пунктов не означает, что сайт плохой и его надо переделывать. Это перечень работ, которые нужно учесть в бюджете поддержки или потребовать исправить до оплаты.
Как подготовить сайт и доступы к аудиту
Для аудита исполнителю нужны доступ к административной панели, к файлам сайта и к базе данных, а лучше сразу полная копия проекта. Чем быстрее он все получит, тем меньше дней уйдет на проверку и тем меньше вы заплатите за ожидание.
Что подготовить заранее:
- Учетную запись администратора в панели 1С-Битрикс, лучше отдельную, на имя аудитора. После проверки ее можно отключить.
- Доступ к файлам по FTP или SSH, а если есть репозиторий, то доступ к нему на чтение.
- Свежую резервную копию сайта и базы. Многие проверки удобнее делать на копии, ничего не трогая на рабочем сайте.
- Техническое задание и переписку с подрядчиком по нестандартным доработкам. Без них аудитор не отличит задуманную логику от ошибки.
- Список интеграций: с чем сайт обменивается данными, кто отвечает за другую сторону обмена.
- Данные о лицензии: номер ключа, срок подписки на обновления, список купленных модулей Маркетплейса.
Если прежний подрядчик не дает доступы или тянет с ними, это уже результат аудита. Сайт, у которого заказчик не владеет файлами, базой и лицензией, по сути принадлежит подрядчику, сколько бы ни было оплачено по договору. Сначала решите вопрос с доступами, потом проверяйте код.
И еще одна практическая деталь. Договоритесь с аудитором, что он ничего не меняет на рабочем сайте без согласования. Задача аудита найти проблемы и описать их. Исправление идет отдельным этапом, с тестовой копией и проверкой.
Сколько стоит аудит и кто должен его делать
Аудит должен делать разработчик на 1С-Битрикс, который не участвовал в создании сайта. Автор кода редко видит в нем проблемы: для него правка ядра была разумным решением в тот момент. Независимый взгляд нужен так же, как при приемке ремонта нужен человек не из той же бригады.
Стоимость зависит от объема проекта. Корпоративный сайт на стандартных компонентах проверяется быстрее, чем интернет-магазин с обменом с 1С, своими модулями и интеграциями с оплатой и доставкой. Поэтому сначала договоритесь о составе: список пунктов из чек-листа выше, формат отчета и срок. Конкретную цену имеет смысл обсуждать после того, как исполнитель увидел проект.
Результат аудита — письменный отчет: что найдено, насколько это критично, сколько примерно займет исправление. С таким отчетом проще разговаривать и с прежним подрядчиком, и с новым.
Если сайт уже принят и вопросы появились позже, аудит все равно полезен: он покажет, что исправлять в первую очередь. Мы проводим такие проверки в рамках наших услуг по разработке сайтов на 1С-Битрикс и WordPress: смотрим код, ядро, обновления и доступы, а потом даем план работ с приоритетами.
Как закрепить требования к коду в договоре
Самый надежный способ избежать правок ядра — прописать требования к коду до начала работ. Подрядчику проще сделать правильно с первого дня, чем переделывать перед сдачей.
Что стоит включить в договор или техническое задание:
- запрет на изменение файлов ядра и системных компонентов без письменного согласования;
- размещение всех доработок в /local;
- прохождение Монитора качества с отчетом как условие приемки;
- передачу кода в репозитории с историей изменений;
- оформление лицензий платформы и модулей Маркетплейса на заказчика;
- описание нестандартных доработок в отдельном документе;
- право заказчика привлечь независимого специалиста для аудита до подписания акта.
Другие пункты, которые защищают заказчика при разработке сайта: этапы, права на код, правки, есть в статье про договор на разработку сайта в Казахстане. Для поддержки уже работающего сайта полезно заранее договориться о сроках реакции, об этом материал что должно быть в SLA техподдержки сайта на 1С-Битрикс.
Что делать, если правки ядра уже нашли
Если аудит показал правки ядра, не спешите все откатывать. Сначала нужно понять, что именно делает каждая правка, иначе вместе с ней пропадет нужная функция.
Порядок работ обычно такой:
- Сделайте полную резервную копию файлов и базы и разверните тестовую копию сайта.
- Получите список измененных файлов и сравните их с оригинальными файлами той же версии платформы.
- По каждой правке определите, какую задачу она решает: внешний вид, логика заказа, интеграция.
- Перенесите доработку в правильное место: шаблон компонента в шаблон сайта, логику в свой компонент или модуль в /local, обработку событий в php_interface.
- Верните оригинальные файлы ядра на тестовой копии и проверьте, что сайт работает как раньше.
- Установите обновления платформы на тестовой копии, проверьте ключевые сценарии и только потом повторите на рабочем сайте.
Срок зависит от числа правок. Пара измененных шаблонов переносится за день. Десятки правленых модулей, особенно в магазине с обменом с 1С, превращаются в отдельный проект на несколько недель. В этом случае важно не останавливать продажи: работы идут на копии, а рабочий сайт меняется одним заранее проверенным переносом.
Есть и обратная ситуация: правок мало, но платформа не обновлялась годами. Тогда начинают с поэтапного обновления на тестовой копии. Перепрыгивать через много версий за один раз рискованно, ошибки сложно найти.
Что учесть компаниям в Казахстане
Для казахстанского бизнеса к общим вопросам добавляются локальные интеграции. Оплата через Kaspi и банки Казахстана, службы доставки, обмен с 1С с казахстанскими конфигурациями часто дорабатываются под конкретный проект, и именно здесь подрядчики чаще всего лезут в системный код. При аудите эти места стоит смотреть первыми: от них напрямую зависят деньги.
Второй момент касается лицензии. Проверьте, что ключ 1С-Битрикс и подписка на обновления оформлены на вашу компанию и вы знаете, где лежат закрывающие документы. Если лицензию покупал подрядчик на себя, при смене команды могут возникнуть вопросы с продлением и обновлениями.
Третий момент: хостинг. Многие компании держат сайт у местного провайдера, и настройки сервера под 1С-Битрикс там бывают разными. Монитор качества проверяет и настройки хостинга, поэтому его отчет пригодится при разговоре с провайдером, если сайт работает медленно или обновления не ставятся из-за ограничений сервера. Сохраните этот отчет вместе с актом приемки.
Хороший аудит обычно занимает меньше времени, чем исправление последствий одного неудачного обновления. Если договориться о проверке до подписания акта, у заказчика остается главный аргумент: оплата последнего этапа.
Частые вопросы
Как понять, менял ли подрядчик ядро 1С-Битрикс?
Проще всего запустить встроенный Монитор качества: в нем есть тест на целостность ядра. Затем попросите подрядчика список измененных файлов в папке /bitrix с объяснением по каждому. Для точного ответа независимый разработчик сравнивает файлы сайта с оригинальными файлами той же версии платформы.
Можно ли вообще не трогать ядро при доработках?
Да, для большинства задач платформа это позволяет. Свои компоненты, модули и шаблоны размещают в папке /local, шаблоны системных компонентов копируют в шаблон сайта, а логику подключают через обработчики событий. Правка ядра нужна в редких случаях, и тогда ее стоит согласовать письменно и задокументировать.
Сколько времени занимает аудит сайта на 1С-Битрикс?
Базовая проверка корпоративного сайта обычно укладывается в один-три рабочих дня. Интернет-магазин с обменом с 1С, своими модулями и интеграциями с оплатой и доставкой проверяется дольше. Точный срок исполнитель называет после того, как получил доступы и посмотрел объем кода.
Что делать, если сайт уже принят, а проблемы нашлись потом?
Закажите аудит и получите письменный отчет с приоритетами. Критичные проблемы, например уязвимости или правки, ломающие обновления, исправляют в первую очередь на тестовой копии. Остальное включают в план поддержки. Если в договоре была гарантия, отчет поможет предъявить претензии прежнему подрядчику.
Нужен ли аудит, если сайт сделан на готовом решении из Маркетплейса?
Нужен, хотя и короче. Готовое решение само по себе обновляется разработчиком модуля, но подрядчик мог доработать его файлы напрямую. Тогда при обновлении решения правки пропадут. Проверьте, где лежат изменения, на кого оформлена лицензия решения и до какого числа действуют обновления.
