Bitrix‑разработчик.
Код без компромиссов.
Highload-каталоги на D7 API, кастомные CRM-модули и интеграции с 1С, которые не ломаются. 10+ лет. 40+ проектов. Чистый код.
Специализируюсь на платформе 1С-Битрикс и Bitrix24
За более, чем 10 лет коммерческой разработки я прошел путь от базовой верстки до проектирования архитектуры компонентов D7 API для высоконагруженных e-commerce проектов.
Разрабатываю кастомные компоненты и CRM-решения с нуля. Грамотно выстраиваю интеграции между Битрикс и внешними системами (1С, CRM, платежные шлюзы, доставки), добиваясь того, чтобы данные синхронизировались надежно, а не просто «иногда работали».
Помимо бизнес-логики, я профилирую запросы БД, настраиваю кэширование и серверную инфраструктуру (Linux, Nginx), ускоряя загрузку страниц в разы.
Технологический Стек
Инструменты, которые я использую для решения бизнес-задач.
Опыт Работы
Ключевые этапы моей коммерческой карьеры
Антарес, ООО
Ведущий специалист по IT-инфраструктуре и Bitrix24. Развитие CRM, телефония, серверы.
DoWeb — Битрикс-разработчик
Разработка проектов под ключ, D7 API, SEO-улучшения.
CyberNevod
Highload E-commerce, синхронизация с 1С (остатки в реальном времени).
IQ MAXIMA
Запущено 8 сайтов e-commerce, оптимизация производительности БД.
HotHeads
Миграция legacy на D7, ведение клиентских порталов.
Demis Group
Техническая поддержка 30+ проектов.
Клик
Full-stack разработка и SEO-оптимизация.
Обучение / Навыки
Высшее профильное образование (IT).
Реализованные Проекты
Избранные кейсы из 40+ внедрений и интеграций
Под Капотом
Фрагменты реального production-кода из моих проектов
08 public static function onPageStart(): void
09 {
10 // Don't run in CLI or admin panel
11 if (php_sapi_name() === 'cli') return;
15
16 $request = Application::getInstance()->getContext()->getRequest();
17 $uri = $request->getRequestUri();
18
33 // 1. Check real URL → redirect 301 to custom SEO URL
34 $redirectRule = RuleTable::getList([
35 'filter' => ['=ACTIVE' => 'Y',
36 ['LOGIC' => 'OR',
37 ['=REAL_URL' => $uri],
38 ['=REAL_URL' => $decodedPath]]
39 ], 'limit' => 1
40 ])->fetch();
41
42 if ($redirectRule) {
43 header('Location: ' . $customUrl, true, 301);
44 exit;
45 }
20 class FormulaParser
21 {
22 /** @var array Whitelisted safe functions */
23 protected static array $allowedFunctions = [
24 'ceil', 'floor', 'round', 'min', 'max',
25 'sqrt', 'pow', 'abs', 'log', 'exp',
26 ];
27
48 public function evaluate(string $expression, array $variables)
49 {
50 $this->variables = $variables;
51 $expr = $this->substituteVariables($expression);
52 $this->tokens = $this->tokenize($expr);
53 $result = $this->parseTernary();
54
55 if ($this->pos < count($this->tokens)) {
56 throw new \InvalidArgumentException(
57 "Unexpected token: '".$this->tokens[$this->pos]['value']."'"
58 );
59 }
60 return $result;
61 }
09 class RuleTable extends Entity\DataManager
10 {
11 public static function getTableName(): string
12 {
13 return 'lamass_seofilter_rule';
14 }
15
16 public static function getMap(): array
17 {
18 return [
19 new Entity\IntegerField('ID', [
20 'primary' => true,
21 'autocomplete' => true,
22 ]),
23 new Entity\BooleanField('ACTIVE', [
24 'values' => ['N', 'Y'],
25 'default_value' => 'Y',
26 ]),
27 new Entity\StringField('CUSTOM_URL', [
28 'required' => true,
29 ]),
30 new Entity\StringField('REAL_URL', [
31 'required' => true,
32 ]),
33 new Entity\TextField('SEO_TEXT'),
34 ];
35 }
36 }
140 public static function onEndBufferContent(string&$content): void
141 {
147 $rules = RuleTable::getList([
148 'filter' => ['=ACTIVE' => 'Y']
149 ])->fetchAll();
150
158 foreach ($rules as $rule) {
159 // Direct, HTML-escaped, JSON-escaped URL variants
168 $search[] = '"' . $realUrl . '"';
169 $replace[] = '"' . $customUrl . '"';
175 $search[] = '"' . htmlspecialcharsbx($realUrl) . '"';
182 $search[] = '"' . str_replace('/', '\\/', $realUrl) . '"';
183 }
186 $content = str_replace($search, $replace, $content);
191
192 // Inject SEO text before </body>
193 $bodyPos = strripos($content, '</body>');
194 $content = substr_replace($content, $seoHtml, $bodyPos, 0);
195 }
URL Rewriting без потерь SEO
Перехват запроса на уровне Bitrix Context. Человекочитаемые SEO-URL с автоматическим 301 редиректом, сохранением query-параметров и инъекцией мета-тегов.
Recursive Descent Parser
Безопасный парсер математических формул для конструктора калькуляторов. Лексер, токенизатор, рекурсивный спуск. Whitelist функций, защита от инъекций.
Type-Safe ORM DataManager
Чистая реализация D7 ORM с декларативным маппингом полей. Типизация, валидация, автоинкремент — всё через Entity API без raw SQL.
Output Buffer Interceptor
Массовая замена URL во всём HTML-буфере страницы. Обрабатывает 3 контекста: прямые URL, HTML-escaped и JSON-escaped. Инъекция SEO-текста перед </body>.
Лицензии и Сертификаты
Подтвержденная профильная и академическая база


























