<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CRM - Portfolio</title>
	<atom:link href="https://shknv.ru/category/crm/feed/" rel="self" type="application/rss+xml" />
	<link>https://shknv.ru</link>
	<description>Евгений Шикунов</description>
	<lastBuildDate>Sat, 25 Apr 2026 15:36:20 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shknv.ru/wp-content/uploads/2024/12/web-app-manifest-512x512-1-150x150.png</url>
	<title>CRM - Portfolio</title>
	<link>https://shknv.ru</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Почему внедрение Битрикс24 проваливается: 7 ошибок со стороны бизнеса</title>
		<link>https://shknv.ru/why-bitrix24-implementation-fails/</link>
		
		<dc:creator><![CDATA[post]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[битрикс24]]></category>
		<category><![CDATA[Гайд]]></category>
		<category><![CDATA[процессы]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=585</guid>

					<description><![CDATA[<p>Большинство проблем с внедрением Битрикс24 связаны не с самой платформой, а с ожиданиями, постановкой задач и отсутствием ownership внутри компании. Разбираем семь типовых ошибок, которые дорого обходятся бизнесу.</p>
<p>The post <a href="https://shknv.ru/why-bitrix24-implementation-fails/">Почему внедрение Битрикс24 проваливается: 7 ошибок со стороны бизнеса</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-group">
<p><strong>Коротко:</strong> Большинство проблем с внедрением Битрикс24 связаны не с самой платформой, а с ожиданиями, постановкой задач и отсутствием ownership внутри компании. Разбираем семь типовых ошибок, которые дорого обходятся бизнесу.</p>
<ul>
<li>Время чтения: 11 минут</li>
<li>Формат: практический разбор без лишней теории</li>
</ul>
</div>
<div class="wp-block-group">
<p><strong>Что внутри:</strong></p>
<ul>
<li><a href="#why-bitrix24-implementation-fails-1">Ошибка 1. Ждать, что CRM сама наведёт порядок</a></li>
<li><a href="#why-bitrix24-implementation-fails-2">Ошибка 2. Автоматизировать то, что ещё не описано</a></li>
<li><a href="#why-bitrix24-implementation-fails-3">Ошибка 3. Не назначить владельца продукта внутри компании</a></li>
<li><a href="#why-bitrix24-implementation-fails-4">Ошибка 4. Сразу пытаться охватить всё</a></li>
<li><a href="#why-bitrix24-implementation-fails-5">Ошибка 5. Игнорировать вопрос данных</a></li>
<li><a href="#why-bitrix24-implementation-fails-6">Ошибка 6. Не продумать интеграции заранее</a></li>
<li><a href="#why-bitrix24-implementation-fails-7">Ошибка 7. Считать обучение второстепенной задачей</a></li>
<li><a href="#why-bitrix24-implementation-fails-8">Что обычно работает лучше</a></li>
</ul>
</div>
<p>У Битрикс24 репутация противоречивая. Одни считают его универсальным комбайном, который &#171;может всё&#187;. Другие уверены, что проблема любой неудачной автоматизации — это сам продукт. На практике правда обычно посередине.</p>
<p>Большинство провалов происходит не потому, что компания выбрала &#171;не ту систему&#187;, а потому, что подошла к внедрению как к установке коробки, а не к пересборке работающего процесса.</p>
<p>Вот семь ошибок, которые мы видим чаще всего.</p>
<h2 id="why-bitrix24-implementation-fails-1">Ошибка 1. Ждать, что CRM сама наведёт порядок</h2>
<p>Иногда руководство смотрит на внедрение как на способ дисциплинировать отдел продаж без серьёзной внутренней работы. Логика понятна: поставим CRM, и менеджеры начнут работать по правилам.</p>
<p>Но CRM не создаёт правила из воздуха. Если нет договорённости:</p>
<ul>
<li>что считается лидом;</li>
<li>как выглядит стадия сделки;</li>
<li>когда сделка считается потерянной;</li>
<li>кто отвечает за качество данных,</li>
</ul>
<p>то система быстро превращается в ещё одно место, где царит хаос.</p>
<h2 id="why-bitrix24-implementation-fails-2">Ошибка 2. Автоматизировать то, что ещё не описано</h2>
<p>Битрикс24 хорошо помогает, когда бизнес хотя бы в черновике понимает, как должен идти процесс. Когда этого понимания нет, внедрение превращается в бесконечную настройку, где каждый участник защищает свою локальную привычку.</p>
<p>Итог обычно одинаковый: система перегружается лишними полями, стадиями и роботами, а пользоваться ей становится неудобно.</p>
<h2 id="why-bitrix24-implementation-fails-3">Ошибка 3. Не назначить владельца продукта внутри компании</h2>
<p>Одна из самых недооценённых тем. Если в компании нет человека, который отвечает за результат внедрения на стороне бизнеса, проект почти наверняка уйдёт в бесконечные обсуждения.</p>
<p>Подрядчик не может заменить внутренний ownership. Он помогает спроектировать и внедрить, но решения о приоритетах, компромиссах и правилах должны приниматься внутри компании.</p>
<h2 id="why-bitrix24-implementation-fails-4">Ошибка 4. Сразу пытаться охватить всё</h2>
<p>Продажи, сервис, маркетинг, внутренние заявки, склад, документы, HR и аналитика — всё это хочется включить в одну инициативу. Но такие проекты часто перегреваются ещё до первого результата.</p>
<p>Рабочий путь обычно другой: выбрать первый критичный контур, запустить его качественно, получить эффект, а затем расширять.</p>
<h2 id="why-bitrix24-implementation-fails-5">Ошибка 5. Игнорировать вопрос данных</h2>
<p>Плохие данные убивают CRM быстрее, чем неудобный интерфейс. Дубли клиентов, неконсистентные стадии, ручные комментарии вместо структурированных полей, несвязанные справочники — всё это делает аналитику бессмысленной.</p>
<p>Если воронка в системе не соответствует реальной работе отдела, руководитель очень быстро перестаёт доверять цифрам.</p>
<h2 id="why-bitrix24-implementation-fails-6">Ошибка 6. Не продумать интеграции заранее</h2>
<p>Битрикс24 редко живёт в одиночестве. Обычно рядом уже есть 1С, телефония, сайт, email, склад, BI и ещё несколько внутренних сервисов.</p>
<p>Если вопрос интеграций откладывается &#171;на потом&#187;, у команды появляются обходные ручные процессы. Именно они потом разрушают доверие к системе.</p>
<p>Поэтому до старта стоит честно ответить:</p>
<ul>
<li>какие данные должны приходить в CRM автоматически;</li>
<li>какие статусы и документы должны уходить наружу;</li>
<li>где источник истины для клиента, сделки, счёта и оплаты.</li>
</ul>
<h2 id="why-bitrix24-implementation-fails-7">Ошибка 7. Считать обучение второстепенной задачей</h2>
<p>Даже хорошая конфигурация не заработает, если пользователи не понимают, зачем она устроена именно так. Обучение — это не формальная демонстрация кнопок. Это объяснение новой логики работы.</p>
<p>Люди легче принимают систему, когда видят:</p>
<ul>
<li>зачем нужна дисциплина данных;</li>
<li>как это помогает им самим;</li>
<li>какие действия обязательны, а какие нет;</li>
<li>как система экономит время, а не только требует что-то заполнять.</li>
</ul>
<h2 id="why-bitrix24-implementation-fails-8">Что обычно работает лучше</h2>
<p>У хорошего внедрения Битрикс24 почти всегда есть несколько общих черт:</p>
<ul>
<li>у проекта есть владелец внутри компании;</li>
<li>первый контур ограничен и понятен;</li>
<li>процесс описан до автоматизации;</li>
<li>интеграции продуманы заранее;</li>
<li>руководитель получает прозрачную аналитику;</li>
<li>пользователи понимают, зачем им новая логика работы.</li>
</ul>
<p>Именно поэтому мы почти всегда советуем начинать не с &#171;какие модули включим&#187;, а с бизнес-сценария: какую проблему компания хочет убрать прямо сейчас.</p>
<h2 id="why-bitrix24-implementation-fails-9">Когда Битрикс24 действительно подходит</h2>
<p>Платформа хорошо работает там, где нужно быстро собрать контур продаж, коммуникаций, базовой автоматизации и задач без немедленного ухода в дорогую кастомную разработку. Особенно полезен Битрикс24, если компании важны:</p>
<ul>
<li>единое пространство для отдела продаж и руководителя;</li>
<li>автоматизация типовых переходов между этапами;</li>
<li>контроль дисциплины работы с клиентами;</li>
<li>быстрый запуск.</li>
</ul>
<p>Но даже здесь платформа даёт результат только при нормальной постановке проекта.</p>
<h2 id="why-bitrix24-implementation-fails-10">Вывод</h2>
<p>Провал внедрения Битрикс24 почти никогда не начинается с фразы &#171;мы выбрали плохой продукт&#187;. Чаще он начинается с другой фразы: &#171;давайте быстро поставим CRM, а детали разберём потом&#187;.</p>
<p>Если компания хочет получить от внедрения не очередной стресс, а рабочий инструмент, нужно сначала договориться о процессе, ролях, данных и границах первой итерации. Тогда Битрикс24 становится не источником споров, а нормальным управленческим инструментом.</p>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/struktura-raboty-v-it-otdele-na-baze-bit/">Структура работы в It отделе на базе Битрикс24</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/bitrix24-dashboard-real-time-monitoring/">Bitrix24 Dashboard: Real-Time мониторинг</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/rabota-s-incidentami-v-it-otdele-sistem/">Работа с инцидентами в it отделе (Система тикетов)</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/prepare-company-for-1c-crm-integration/">Как подготовить компанию к интеграции 1С, CRM и внутренних сервисов</a> — связанный кейс или практический разбор из блога</li>
<li><a href="https://shknv.ru/choose-dev-automation-contractor/">Как выбрать подрядчика на разработку и автоматизацию без лишнего риска</a> — связанный кейс или практический разбор из блога</li>
</ul>
</section>
<p><!-- shknv-related:end --></p><p>The post <a href="https://shknv.ru/why-bitrix24-implementation-fails/">Почему внедрение Битрикс24 проваливается: 7 ошибок со стороны бизнеса</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Как подготовить компанию к интеграции 1С, CRM и внутренних сервисов</title>
		<link>https://shknv.ru/prepare-company-for-1c-crm-integration/</link>
		
		<dc:creator><![CDATA[post]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[1c]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[Интеграции]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[Гайд]]></category>
		<category><![CDATA[интеграции]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=587</guid>

					<description><![CDATA[<p>Большая часть проблем в интеграционных проектах возникает не в коде, а до него: в справочниках, ролях, статусах и договорённостях о том, где живёт источник истины. Разбираем, что нужно подготовить компании до старта интеграции.</p>
<p>The post <a href="https://shknv.ru/prepare-company-for-1c-crm-integration/">Как подготовить компанию к интеграции 1С, CRM и внутренних сервисов</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-group">
<p><strong>Коротко:</strong> Большая часть проблем в интеграционных проектах возникает не в коде, а до него: в справочниках, ролях, статусах и договорённостях о том, где живёт источник истины. Разбираем, что нужно подготовить компании до старта интеграции.</p>
<ul>
<li>Время чтения: 11 минут</li>
<li>Формат: практический разбор без лишней теории</li>
</ul>
</div>
<div class="wp-block-group">
<p><strong>Что внутри:</strong></p>
<ul>
<li><a href="#prepare-company-for-1c-crm-integration-1">Сначала нужно ответить: зачем вообще интегрируем</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-2">Шаг 1. Определите источник истины</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-3">Шаг 2. Разберите справочники до старта</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-4">Шаг 3. Согласуйте статусы и жизненный цикл данных</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-5">Шаг 4. Определите идентификаторы и ключи сопоставления</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-6">Шаг 5. Назначьте владельцев данных и правил</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-7">Шаг 6. Сразу договоритесь об ошибках и мониторинге</a></li>
<li><a href="#prepare-company-for-1c-crm-integration-8">Шаг 7. Запускайте поэтапно, а не сразу всё</a></li>
</ul>
</div>
<p>Когда компания говорит &#171;нам нужно интегрировать 1С и CRM&#187;, большинство сразу думает про API, разработку и сроки. Но самые болезненные проблемы таких проектов обычно рождаются до написания первого запроса.</p>
<p>Интеграция ломается не потому, что разработчик не умеет вызвать endpoint. Она ломается потому, что бизнес не договорился, какие данные являются эталонными, как называются статусы, кто владеет справочниками и что считать успешным обменом.</p>
<p>Поэтому хорошая интеграция начинается не с кода, а с подготовки.</p>
<h2 id="prepare-company-for-1c-crm-integration-1">Сначала нужно ответить: зачем вообще интегрируем</h2>
<p>Это звучит очевидно, но на практике цель часто формулируют слишком абстрактно: &#171;чтобы всё было связано&#187;. Такой цели недостаточно.</p>
<p>Нужно понять конкретные бизнес-сценарии:</p>
<ul>
<li>заказы из CRM должны попадать в 1С;</li>
<li>менеджер должен видеть актуальный статус отгрузки;</li>
<li>остатки и цены должны возвращаться в CRM;</li>
<li>финансовый блок должен получать корректные документы;</li>
<li>руководитель должен видеть единый отчёт без ручной склейки.</li>
</ul>
<p>Пока таких сценариев нет, интеграция рискует превратиться в дорогой обмен &#171;чем-то с чем-то&#187;.</p>
<h2 id="prepare-company-for-1c-crm-integration-2">Шаг 1. Определите источник истины</h2>
<p>Это первый вопрос, который экономит месяцы споров. Для каждой сущности нужно честно ответить: где живёт правильная версия данных.</p>
<p>Например:</p>
<ul>
<li>клиент — в CRM или 1С;</li>
<li>договор — в 1С;</li>
<li>лид и коммуникации — в CRM;</li>
<li>номенклатура и остатки — чаще в 1С;</li>
<li>статусы документооборота — в 1С;</li>
<li>задачи по клиенту — в CRM.</li>
</ul>
<p>Если этого разделения нет, обе системы начинают &#171;переигрывать&#187; друг друга, а сотрудники перестают понимать, где нужно смотреть правду.</p>
<h2 id="prepare-company-for-1c-crm-integration-3">Шаг 2. Разберите справочники до старта</h2>
<p>Интеграции очень плохо переносят хаотичные справочники. Если в CRM один и тот же клиент может называться по-разному, а в 1С номенклатура живёт в другой логике, обмен будет наполнять систему дубликатами и конфликтами.</p>
<p>Что стоит проверить заранее:</p>
<ul>
<li>контрагенты и филиалы;</li>
<li>номенклатура и единицы измерения;</li>
<li>менеджеры, подразделения и роли;</li>
<li>типы документов и статусы;</li>
<li>валюты, ставки, типы оплат.</li>
</ul>
<p>Это скучная, но критически важная часть работы. Без неё интеграция становится фабрикой расхождений.</p>
<h2 id="prepare-company-for-1c-crm-integration-4">Шаг 3. Согласуйте статусы и жизненный цикл данных</h2>
<p>Один из самых частых конфликтов в проектах — одинаковые слова означают разное в разных системах. Например, &#171;сделка закрыта&#187; для продаж и &#171;заказ проведён&#187; для учёта — не одно и то же.</p>
<p>Поэтому нужно заранее зафиксировать:</p>
<ul>
<li>какие события в CRM порождают запись в 1С;</li>
<li>какие статусы из 1С возвращаются обратно;</li>
<li>когда допускается ручная корректировка;</li>
<li>какие поля можно менять после обмена, а какие нет.</li>
</ul>
<p>Без такого соглашения пользователи начинают жить в логике &#171;мы думали, что это значит другое&#187;.</p>
<h2 id="prepare-company-for-1c-crm-integration-5">Шаг 4. Определите идентификаторы и ключи сопоставления</h2>
<p>Это техническая тема, но у неё прямое бизнес-значение. Если системы не умеют надёжно понимать, что речь идёт об одном и том же объекте, дальше начнётся хаос с дублями и неверными связями.</p>
<p>Хорошая практика — заранее определить:</p>
<ul>
<li>по какому ключу сопоставляется клиент;</li>
<li>как связаны карточка сделки и заказ;</li>
<li>где хранится внешний ID;</li>
<li>что происходит при конфликте.</li>
</ul>
<p>Это особенно важно, если у компании уже есть старые данные и история ручной работы.</p>
<h2 id="prepare-company-for-1c-crm-integration-6">Шаг 5. Назначьте владельцев данных и правил</h2>
<p>Интеграцию нельзя отдать только разработчику или подрядчику. На стороне бизнеса нужны люди, которые отвечают:</p>
<ul>
<li>за коммерческий процесс;</li>
<li>за учётный контур;</li>
<li>за правила обмена;</li>
<li>за разбор ошибок;</li>
<li>за приоритеты изменений.</li>
</ul>
<p>Если владельцев нет, любой спор по данным зависает между отделами. В этот момент технический проект становится организационной проблемой.</p>
<h2 id="prepare-company-for-1c-crm-integration-7">Шаг 6. Сразу договоритесь об ошибках и мониторинге</h2>
<p>Ни одна интеграция не живёт без ошибок. Вопрос не в том, будут ли они, а в том, как компания узнает о них и кто будет реагировать.</p>
<p>До запуска полезно определить:</p>
<ul>
<li>какие ошибки критичны;</li>
<li>кто получает уведомления;</li>
<li>как выглядит повторная отправка;</li>
<li>кто разбирает спорные случаи;</li>
<li>где хранится журнал обменов.</li>
</ul>
<p>Бизнесу не нужен &#171;идеальный обмен&#187;. Ему нужен предсказуемый обмен, который можно контролировать.</p>
<h2 id="prepare-company-for-1c-crm-integration-8">Шаг 7. Запускайте поэтапно, а не сразу всё</h2>
<p>Попытка интегрировать весь контур за один раз обычно приводит к длинному и нервному проекту. Рабочий подход — идти по очереди:</p>
<ol>
<li>Один основной сценарий.</li>
<li>Проверка на реальных пользователях.</li>
<li>Отладка ошибок и пограничных случаев.</li>
<li>Только потом расширение периметра.</li>
</ol>
<p>Это особенно важно, если компания впервые проходит через серьёзный интеграционный проект.</p>
<h2 id="prepare-company-for-1c-crm-integration-9">Что бизнес часто недооценивает</h2>
<p>Интеграция — это не &#171;фоновая техническая работа&#187;. Она меняет поведение людей. Когда данные начинают синхронизироваться автоматически, приходится по-новому относиться к дисциплине ввода, владению полями и ответственности за корректность записей.</p>
<p>Поэтому такие проекты всегда находятся на стыке технологий и операционного управления.</p>
<h2 id="prepare-company-for-1c-crm-integration-10">Вывод</h2>
<p>Подготовка к интеграции 1С, CRM и внутренних сервисов — это не бюрократия ради бюрократии. Это способ сделать так, чтобы интеграционный проект не развалился на противоречиях в данных и ожиданиях.</p>
<p>Если компания заранее определила источник истины, привела в порядок справочники, согласовала статусы и назначила владельцев, сама разработка проходит спокойнее и быстрее. А результат получается не &#171;формально связанным&#187;, а действительно полезным для бизнеса.</p>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/kejs-sozdanie-umnoj-crm-dlja-territorial/">(Кейс) Создание Умной CRM для Территориальных Менеджеров Полный Путь от Идеи до Реализации</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/beton-crm-novye-fishki/">Бетон CRM: Новые фишки</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/beton-crm-dinamicheskaja-forma-dlja-oformlenija/">Beton-CRM: Динамическая форма для оформления заявок.</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/why-bitrix24-implementation-fails/">Почему внедрение Битрикс24 проваливается: 7 ошибок со стороны бизнеса</a> — дополняет тему IT-процессов и контроля</li>
<li><a href="https://shknv.ru/choose-dev-automation-contractor/">Как выбрать подрядчика на разработку и автоматизацию без лишнего риска</a> — помогает принять решение по формату автоматизации</li>
</ul>
</section>
<p><!-- shknv-related:end --></p><p>The post <a href="https://shknv.ru/prepare-company-for-1c-crm-integration/">Как подготовить компанию к интеграции 1С, CRM и внутренних сервисов</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Бетон CRM: Новые фишки</title>
		<link>https://shknv.ru/beton-crm-novye-fishki/</link>
		
		<dc:creator><![CDATA[Evgeniy Shikunov]]></dc:creator>
		<pubDate>Sat, 11 Oct 2025 19:19:49 +0000</pubDate>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[Разработка]]></category>
		<category><![CDATA[автоматизация]]></category>
		<category><![CDATA[разработка]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=409</guid>

					<description><![CDATA[<p>Обзор новых функций Beton CRM: как доработки помогают оформлять заявки, управлять процессом и снижать ручной труд.</p>
<p>The post <a href="https://shknv.ru/beton-crm-novye-fishki/">Бетон CRM: Новые фишки</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><span style="font-size: 2.25em; font-weight: 800;">Beton CRM: От идеи до production — как мы создали современную систему управления заказами</span></p>
<article>
<p class="lead">Расскажу о разработке полнофункциональной CRM-системы для управления заказами бетона с интеграцией Bitrix24.<br />
В процессе создания проекта мы внедрили множество интересных технических решений, включая Elasticsearch для<br />
молниеносного поиска, периодические заявки, динамические формы и многое другое.</p>
<h2>Что мы построили</h2>
<p><strong>Beton CRM</strong> — это полноценная система управления заказами на бетон с веб-интерфейсом,<br />
которая решает реальные бизнес-задачи:</p>
<ul>
<li>Прием и обработка заказов через динамические формы</li>
<li>Интеграция с Bitrix24 для управления сделками</li>
<li>Молниеносный поиск по всей базе заказов и клиентов</li>
<li>Создание периодических заявок (например, ежедневные поставки на месяц)</li>
<li>Адаптивный интерфейс для мобильных устройств и десктопа</li>
</ul>
<h2>Elasticsearch: Умный поиск на стероидах</h2>
<p>Одна из самых интересных фич проекта — это система поиска на базе <strong>Elasticsearch</strong>.<br />
Мы не просто добавили поиск, а создали интеллектуальную систему с множеством продвинутых возможностей.</p>
<h3>Что умеет наш поиск:</h3>
<h4>1. Адаптивные стратегии поиска</h4>
<p>Система автоматически выбирает оптимальную стратегию поиска в зависимости от длины запроса:</p>
<ul>
<li><strong>Короткие запросы (&lt;5 символов):</strong> Агрессивный fuzzy-поиск с автокомплитом и высокой толерантностью к опечаткам</li>
<li><strong>Средние запросы (5-20 символов):</strong> Сбалансированный подход с точным совпадением, wildcard-поиском и multi-match</li>
<li><strong>Длинные запросы (&gt;20 символов):</strong> Оптимизированный поиск по длинным текстам с точным фразовым совпадением</li>
</ul>
<h4>2. Специальные анализаторы для русского языка</h4>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>product_search: {
    type: 'custom',
    tokenizer: 'standard',
    filter: [
        'lowercase',
        'russian_stop',      // Фильтрация стоп-слов
        'russian_stemmer',   // Стемминг для русского
        'product_synonyms',  // Синонимы для товаров
        'product_edge_ngram' // N-граммы для частичного совпадения
    ]
}</code></pre>
<h4>3. Умные синонимы для строительной отрасли</h4>
<p>Система понимает отраслевую специфику и обрабатывает синонимы:</p>
<ul>
<li>бетон <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> цемент <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> смесь</li>
<li>В25 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> В-25 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> бетон В25 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> марка В25</li>
<li>М300 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> М-300 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> марка 300 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> бетон М300</li>
<li>фундамент <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> основание <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> база <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> фундаментный</li>
</ul>
<h4>4. Интеллектуальный скоринг результатов</h4>
<p>Elasticsearch не просто находит документы, но и умно ранжирует их:</p>
<ul>
<li><strong>Boost ×2.0</strong> для точных совпадений марок бетона (В25, М300)</li>
<li><strong>Boost ×1.3</strong> для заявок с высоким приоритетом</li>
<li><strong>Boost ×1.2</strong> для недавно созданных документов (последние 30 дней)</li>
<li><strong>Boost ×1.15</strong> для активных статусов (NEW, IN_PROCESS, PENDING)</li>
<li><strong>Min score 0.5</strong> для фильтрации нерелевантных результатов</li>
</ul>
<h4>5. Встроенное кэширование поисковых запросов</h4>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>// In-memory кэш с TTL 2 минуты
private searchCache = new Map&lt;string, {
    data: SearchResult[];
    timestamp: number
}&gt;()
private readonly CACHE_TTL = 2 * 60 * 1000
private readonly MAX_CACHE_SIZE = 500</code></pre>
<h4>6. Подсветка найденных фрагментов</h4>
<p>Результаты поиска отображаются с подсветкой найденных фрагментов в HTML-формате:</p>
<pre style="background: #f5f5f5; padding: 10px; border-radius: 5px;"><code>&lt;mark&gt;бетон В25&lt;/mark&gt; для фундамента с доставкой</code></pre>
<h2>Периодические заявки: Автоматизация рутины</h2>
<p>Еще одна инновационная фича — <strong>система периодических заявок</strong>. Представьте: клиенту нужна<br />
ежедневная поставка бетона на месяц. Вместо создания 30 заявок вручную, система делает это автоматически!</p>
<h3>Как это работает:</h3>
<ol>
<li><strong>Выбор периода:</strong> Пользователь включает режим &#171;Периодические заявки&#187; и выбирает диапазон дат</li>
<li><strong>Заполнение формы:</strong> Все поля (кроме даты доставки) заполняются один раз</li>
<li><strong>Магия транзакций:</strong> Система создает по одной заявке на каждый день выбранного периода</li>
<li><strong>Синхронизация с Bitrix24:</strong> Для каждой заявки автоматически создается сделка в CRM</li>
<li><strong>Атомарность:</strong> Если хоть одна заявка не создалась — откатывается вся транзакция</li>
</ol>
<h3>Технические детали:</h3>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>// Создание периодической группы с транзакцией
const queryRunner = AppDataSource.createQueryRunner()
await queryRunner.startTransaction()

try {
    // Генерируем массив дат
    const dates = this.generateDateRange(startDate, endDate)

    // Создаем группу периода
    const periodGroup = queryRunner.manager.create(SubmissionPeriodGroup, {
        startDate, endDate,
        totalSubmissions: dates.length,
        status: PeriodGroupStatus.ACTIVE
    })

    // Создаем заявки для каждой даты
    for (const date of dates) {
        // Создаем сделку в Bitrix24
        const bitrixDealId = await bitrix24Service.createDeal(dealData)

        // Создаем заявку в БД
        const submission = await queryRunner.manager.save(...)
    }

    await queryRunner.commitTransaction()
} catch (error) {
    await queryRunner.rollbackTransaction()
    throw error
}</code></pre>
<p>Система также умеет:</p>
<ul>
<li>Массово обновлять все заявки периода (кроме даты)</li>
<li>Отменять весь период одной кнопкой</li>
<li>Отслеживать прогресс выполнения периода</li>
<li>Хранить метаданные для аудита</li>
</ul>
<h2> Динамический конструктор форм</h2>
<p>В CRM реализован мощный <strong>drag-and-drop конструктор форм</strong> с административной панелью:</p>
<h3>Возможности конструктора:</h3>
<ul>
<li><strong>15+ типов полей:</strong> текст, число, дата, время, выпадающий список, автокомплит, чекбокс, радио, файлы, заголовки, разделители</li>
<li><strong>Секционная организация:</strong> Поля группируются в разделы с аккордеонами</li>
<li><strong>Drag &amp; Drop:</strong> Перетаскивание полей между секциями и изменение порядка</li>
<li><strong>Связанные поля:</strong> Автозаполнение данных из Bitrix24 по выбранному клиенту</li>
<li><strong>Условная логика:</strong> Поля могут показываться/скрываться в зависимости от других полей</li>
<li><strong>Валидация:</strong> Кастомные правила проверки на фронте и бэкенде</li>
<li><strong>Bitrix24 mapping:</strong> Автоматическое связывание полей формы с полями Bitrix24</li>
</ul>
<h3>Адаптивность:</h3>
<p>Формы автоматически переключаются между десктопной и мобильной версией:</p>
<ul>
<li><strong>Desktop:</strong> Аккордеоны с секциями, кнопки управления, прогресс заполнения</li>
<li><strong>Mobile:</strong> Упрощенная версия с touch-friendly элементами и оптимизацией под экраны смартфонов</li>
</ul>
<h2> Миграция с MongoDB на PostgreSQL</h2>
<p>Проект изначально использовал MongoDB, но мы провели полную миграцию на PostgreSQL с TypeORM. Почему?</p>
<ul>
<li><strong>ACID-транзакции:</strong> Критично для периодических заявок и финансовых операций</li>
<li><strong>Сложные связи:</strong> Множество отношений между сущностями (формы → поля → заявки → пользователи)</li>
<li><strong>Миграции схемы:</strong> TypeORM предоставляет удобный механизм версионирования БД</li>
<li><strong>Производительность JOIN:</strong> Эффективная работа со связанными данными</li>
</ul>
<h3>Ключевые сущности:</h3>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>User ← (1:N) → Submission ← (N:1) → Form ← (1:N) → FormField
                    ↓
              (N:1) SubmissionPeriodGroup
                    ↓
            (1:N) Submission (periodic)</code></pre>
<h2>Интеграция с Bitrix24</h2>
<p>Система плотно интегрирована с <strong>Bitrix24 CRM</strong> через webhook API:</p>
<h3>Что интегрировано:</h3>
<ul>
<li><strong>Автоматическое создание сделок:</strong> При отправке формы создается сделка в Bitrix24</li>
<li><strong>Синхронизация статусов:</strong> Двусторонняя синхронизация статусов сделок</li>
<li><strong>Подгрузка справочников:</strong> Автокомплит клиентов, компаний, товаров из Bitrix24</li>
<li><strong>Связанные поля:</strong> При выборе клиента автоматически заполняются телефон, email, адрес</li>
<li><strong>Кэширование:</strong> Redis-кэш для API-ответов Bitrix24 (TTL: 30 минут &#8212; 2 часа)</li>
<li><strong>Обратная связь:</strong> ID заявки записывается в пользовательское поле Bitrix24</li>
</ul>
<p><span style="font-size: 1.5em; font-weight: bold;">In-Memory кэширование</span></p>
<p>Для оптимизации производительности реализована <strong>многоуровневая система кэширования</strong>:</p>
<h3>1. CacheService (базовый)</h3>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>const memoryCache = new Map&lt;string, {
    data: any;
    expires: number
}&gt;()

// Паттерн get-or-set
async getOrSet&lt;T&gt;(
    key: string,
    setter: () =&gt; Promise&lt;T&gt;,
    options?: CacheOptions
): Promise&lt;T | null&gt;</code></pre>
<h3>2. BitrixCacheService (специализированный)</h3>
<ul>
<li>Категории сделок: TTL 2 часа</li>
<li>Стадии сделок: TTL 1 час</li>
<li>Динамические опции (клиенты, товары): TTL 30 минут</li>
</ul>
<h3>3. FormCacheService (для форм)</h3>
<ul>
<li>Формы с полями: TTL 30 минут</li>
<li>Список активных форм: TTL 10 минут</li>
</ul>
<h3>4. Elasticsearch SearchCache</h3>
<ul>
<li>Результаты поиска: TTL 2 минуты</li>
<li>Максимальный размер: 500 записей</li>
<li>Auto-cleanup устаревших записей</li>
</ul>
<h2>Docker-инфраструктура</h2>
<p>Весь проект упакован в Docker с продакшн-оптимизацией:</p>
<h3>Сервисы в docker-compose:</h3>
<ul>
<li><strong>PostgreSQL 16 Alpine:</strong> Компактная БД с health checks</li>
<li><strong>Redis 7 Alpine:</strong> Кэш с AOF persistence</li>
<li><strong>Elasticsearch 8.11:</strong> Поисковый движок с ограниченной памятью (512MB)</li>
<li><strong>Backend:</strong> Node.js API с multi-stage build</li>
<li><strong>Frontend:</strong> Nginx + статика React с оптимизацией</li>
</ul>
<h3>Особенности конфигурации:</h3>
<pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 5px; overflow-x: auto;"><code>services:
  postgres:
    ports:
      - '127.0.0.1:5489:5432'  # Доступ только через localhost
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready']

  elasticsearch:
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
      - 'ES_JAVA_OPTS=-Xms512m -Xmx512m'

  backend:
    depends_on:
      postgres: { condition: service_healthy }
      redis: { condition: service_healthy }
      elasticsearch: { condition: service_healthy }</code></pre>
<h2>E2E тестирование с Playwright</h2>
<p>Для обеспечения качества реализованы E2E-тесты на <strong>Playwright</strong>:</p>
<ul>
<li>Тестирование аутентификации (вход/выход)</li>
<li>Создание и отправка заявок</li>
<li>Административные функции</li>
<li>Тесты API endpoints</li>
<li>Интеграция с Bitrix24</li>
</ul>
<h2>Производительность и оптимизации</h2>
<h3>Backend оптимизации:</h3>
<ul>
<li><strong>Connection pooling</strong> для PostgreSQL</li>
<li><strong>Индексы БД</strong> на часто запрашиваемые поля</li>
<li><strong>Lazy loading</strong> связанных сущностей в TypeORM</li>
<li><strong>Background jobs</strong> для тяжелых операций (синхронизация с Bitrix24)</li>
<li><strong>Elasticsearch refresh_interval: 30s</strong> для лучшей производительности индексации</li>
</ul>
<h3>Frontend оптимизации:</h3>
<ul>
<li><strong>React Query</strong> для кэширования серверных данных</li>
<li><strong>Code splitting</strong> на уровне роутов</li>
<li><strong>Debouncing</strong> для автокомплита и поиска</li>
<li><strong>Виртуализация</strong> длинных списков в таблицах</li>
<li><strong>Lazy loading</strong> компонентов форм</li>
</ul>
<h2>Безопасность</h2>
<ul>
<li><strong>JWT токены</strong> с refresh механизмом (access: 7 дней, refresh: 30 дней)</li>
<li><strong>Bcrypt хэширование</strong> паролей с солью</li>
<li><strong>Role-based access control</strong> (user/admin)</li>
<li><strong>CORS</strong> с белым списком доменов</li>
<li><strong>Input validation</strong> на фронте (Yup) и бэкенде (class-validator)</li>
<li><strong>SQL injection protection</strong> через TypeORM query builder</li>
<li><strong>Rate limiting</strong> для API endpoints</li>
</ul>
<h2>Мобильная адаптация</h2>
<p>Система полностью адаптирована для мобильных устройств:</p>
<ul>
<li><strong>Responsive breakpoints:</strong> xs, sm, md, lg, xl</li>
<li><strong>Touch-friendly:</strong> Увеличенные кнопки и поля ввода</li>
<li><strong>Упрощенные формы:</strong> Автопереключение на SimpleMobileBetoneForm</li>
<li><strong>Progressive disclosure:</strong> Секции открываются по одной</li>
<li><strong>Оптимизация трафика:</strong> Сжатие данных, ленивая загрузка</li>
</ul>
<h2>Чему я научился</h2>
<p>Этот проект был отличным опытом работы с современным стеком технологий:</p>
<ul>
<li>Настройка и тонкая настройка <strong>Elasticsearch</strong> для русскоязычного контента</li>
<li>Проектирование <strong>сложных транзакций</strong> с TypeORM</li>
<li>Оптимизация производительности с <strong>многоуровневым кэшированием</strong></li>
<li>Интеграция с внешними API (<strong>Bitrix24 webhook</strong>)</li>
<li>Создание <strong>type-safe</strong> приложений с TypeScript</li>
<li><strong>Docker-оркестрация</strong> для продакшен-окружения</li>
<li>E2E тестирование с <strong>Playwright</strong></li>
<li>Работа с <strong>Material-UI</strong> и создание адаптивных интерфейсов</li>
</ul>
<h2>Что дальше?</h2>
<p>Планы по развитию проекта:</p>
<ul>
<li>Внедрение <strong>WebSocket</strong> для real-time уведомлений</li>
<li>Добавление <strong>аналитики и отчетов</strong> (дашборды, графики)</li>
<li>Интеграция с <strong>1C</strong> для учета</li>
<li>Мобильное приложение на <strong>React Native</strong></li>
<li>Система <strong>уведомлений</strong> (email, SMS, push)</li>
<li>AI-ассистент для <strong>предсказания спроса</strong></li>
</ul>
<h2>Заключение</h2>
<p><strong>Beton CRM</strong> — это пример того, как современные технологии могут решать реальные бизнес-задачи.<br />
Мы создали систему, которая не только автоматизирует процессы, но и делает работу с заказами приятной и эффективной.</p>
<p>Особенно горжусь реализацией <strong>Elasticsearch</strong> с умным поиском, системой <strong>периодических заявок</strong><br />
с транзакциями и <strong>динамическим конструктором форм</strong>. Эти фичи действительно выделяют проект среди типовых CRM.</p>
<p style="margin-top: 40px; font-style: italic; color: #666;">Если у вас есть вопросы по реализации каких-то частей или хотите обсудить архитектурные решения —<br />
пишите! Буду рад поделиться опытом.</p>
<hr style="margin: 40px 0; border: none; border-top: 2px solid #e0e0e0;" />
<p style="text-align: center; color: #888;"><strong>Технологии:</strong> React 19, TypeScript, Node.js, Express, PostgreSQL, TypeORM,<br />
Elasticsearch 8.11, Redis, Docker, Material-UI 7, React Query, Bitrix24 API, Playwright</p>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/beton-crm-dinamicheskaja-forma-dlja-oformlenija/">Beton-CRM: Динамическая форма для оформления заявок.</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/kejs-sozdanie-umnoj-crm-dlja-territorial/">(Кейс) Создание Умной CRM для Территориальных Менеджеров Полный Путь от Идеи до Реализации</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/bitrix24-dashboard-real-time-monitoring/">Bitrix24 Dashboard: Real-Time мониторинг</a> — дополняет тему IT-процессов и контроля</li>
<li><a href="https://shknv.ru/397-2/">Кейс: Разработка системы автоматического мониторинга цен конкурентов</a> — связанный практический материал из блога</li>
</ul>
</section>
<p><!-- shknv-related:end --><br />
</article>
<p>&nbsp;</p><p>The post <a href="https://shknv.ru/beton-crm-novye-fishki/">Бетон CRM: Новые фишки</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bitrix24 Dashboard: Real-Time мониторинг</title>
		<link>https://shknv.ru/bitrix24-dashboard-real-time-monitoring/</link>
		
		<dc:creator><![CDATA[Evgeniy Shikunov]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 16:26:31 +0000</pubDate>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Автоматизация]]></category>
		<category><![CDATA[dashboard]]></category>
		<category><![CDATA[битрикс24]]></category>
		<category><![CDATA[мониторинг]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=388</guid>

					<description><![CDATA[<p>Как Bitrix24 Dashboard помогает мониторить показатели в реальном времени и быстрее видеть отклонения в работе команды.</p>
<p>The post <a href="https://shknv.ru/bitrix24-dashboard-real-time-monitoring/">Bitrix24 Dashboard: Real-Time мониторинг</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<article>
<header>
<h2>Bitrix24 Dashboard: Real-Time мониторинг для повышения эффективности команды</h2>
<p><strong>Роль в проекте:</strong> Full-Stack разработчик (от идеи до реализации)</p>
</header>
<section>
<h3><img fetchpriority="high" decoding="async" class="aligncenter size-large wp-image-389" src="https://shknv.ru/wp-content/uploads/2025/07/CleanShot-2025-07-30-at-19.20.22-1024x592.png" alt="" width="1024" height="592" srcset="https://shknv.ru/wp-content/uploads/2025/07/CleanShot-2025-07-30-at-19.20.22-1024x592.png 1024w, https://shknv.ru/wp-content/uploads/2025/07/CleanShot-2025-07-30-at-19.20.22-300x173.png 300w, https://shknv.ru/wp-content/uploads/2025/07/CleanShot-2025-07-30-at-19.20.22-768x444.png 768w, https://shknv.ru/wp-content/uploads/2025/07/CleanShot-2025-07-30-at-19.20.22-1536x887.png 1536w, https://shknv.ru/wp-content/uploads/2025/07/CleanShot-2025-07-30-at-19.20.22-2048x1183.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></h3>
<h3>О проекте</h3>
<p><strong>Bitrix24 Dashboard</strong> — это веб-приложение, созданное для визуализации ключевых показателей работы отдела в реальном времени. Основная цель — предоставить сотрудникам и руководству наглядный инструмент для отслеживания задач, нагрузки и эффективности прямо в офисе, на большом экране. Проект решает проблему отсутствия быстрой и прозрачной обратной связи о динамике работы, превращая сухие цифры из CRM в понятную и мотивирующую инфографику.</p>
</section>
<section>
<h3>Проблема, которую решает проект</h3>
<p>В большинстве компаний, использующих Bitrix24, информация о задачах и проектах скрыта в недрах CRM. Сотрудникам сложно оценить общую картину, а руководителям — быстро выявить проблемы. Стандартные отчеты требуют времени на формирование и не всегда наглядны.</p>
<p>Дашборд решает эти проблемы, агрегируя и визуализируя данные по всему отделу:</p>
<ul>
<li><strong>Для сотрудников:</strong> создает здоровую конкуренцию через систему рейтинга, показывает персональную загрузку и помогает сфокусироваться на приоритетах.</li>
<li><strong>Для руководителей:</strong> предоставляет &#171;пульс&#187; отдела, подсвечивая просроченные задачи, неактивность сотрудников и общую производительность без необходимости погружаться в отчеты.</li>
</ul>
</section>
<section>
<h3>Ключевые технические решения и их обоснование</h3>
<dl>
<dt><strong>Next.js и React</strong></dt>
<dd>Выбран для быстрой разработки интерактивного UI и использования преимуществ серверного рендеринга (SSR) для быстрой первоначальной загрузки. Компонентный подход React позволил создать переиспользуемые элементы для различных виджетов дашборда.</dd>
<dt><strong>TypeScript</strong></dt>
<dd>Внедрен для обеспечения строгой типизации и повышения надежности кода. Особенно это важно при работе со сложными структурами данных, получаемыми от Bitrix24 API, так как это минимизирует ошибки во время выполнения.</dd>
<dt><strong>Bitrix24 REST API</strong></dt>
<dd>Сердце проекта — интеграция с API Битрикс24. Была реализована логика для пакетных запросов (batch), чтобы уменьшить количество обращений к API и ускорить получение данных. Также реализован механизм постраничной загрузки для обработки больших объемов задач.</dd>
<dt><strong>Tailwind CSS</strong></dt>
<dd>Использован для быстрой и утилитарной стилизации. Это позволило легко адаптировать интерфейс для больших экранов (ТВ-режим) и обеспечить консистентный дизайн.</dd>
<dt><strong>Recharts</strong></dt>
<dd>Библиотека для создания графиков и диаграмм. Выбрана за простоту использования и широкие возможности кастомизации, что позволило создать наглядные и информативные виджеты статистики.</dd>
<dt><strong>Vercel &amp; Docker</strong></dt>
<dd>Проект полностью готов к развертыванию как на serverless-платформе Vercel для простоты и масштабируемости, так и в виде Docker-контейнера для универсальности и контроля над окружением.</dd>
</dl>
</section>
<section>
<h3>Архитектура приложения</h3>
<p>Приложение имеет четкую клиент-серверную архитектуру, где Frontend (Next.js/React) отвечает за отображение, а Backend (Next.js API Routes) — за взаимодействие с Bitrix24 API и кеширование данных.</p>
<ul>
<li><code>/app/dashboard</code> — Основная страница дашборда, оптимизированная для ТВ.</li>
<li><code>/app/api/bitrix</code> — API-маршруты, которые выступают в роли прокси между клиентом и Bitrix24, добавляя логику обработки и кеширования.</li>
<li><code>/lib/bitrix</code> — Изолированная логика для работы с API: клиент, сервисы для получения задач, пользователей, и т.д.</li>
<li><code>/components/Dashboard</code> — Переиспользуемые React-компоненты (карточки статистики, графики, таблицы).</li>
</ul>
</section>
<section>
<h3>Что я сделал в этом проекте</h3>
<ul>
<li>Спроектировал и реализовал архитектуру приложения с нуля.</li>
<li>Разработал клиентскую часть на Next.js, включая все UI-компоненты.</li>
<li>Написал серверную логику для взаимодействия с Bitrix24 REST API, включая оптимизацию запросов.</li>
<li>Реализовал формулу расчета рейтинга и других метрик эффективности.</li>
<li>Настроил проект для развертывания на Vercel.</li>
</ul>
</section>
<section>
<h3>Результаты и потенциал для развития</h3>
<p>Текущая версия дашборда успешно решает поставленные задачи и используется для мониторинга работы отдела. Проект показал, как с помощью современных веб-технологий можно кардинально улучшить внутренние процессы в компании.</p>
<p><strong>Возможные направления для развития:</strong></p>
<p>&nbsp;</p>
<ul>
<li>Более глубокая аналитика: выявление трендов, предиктивный анализ нагрузки.</li>
<li>Геймификация: добавление достижений, наград за выполнение KPI.</li>
<li>Мобильная версия для руководителей.</li>
</ul>
</section>
<p>Публичный репозиторий с проектом &#8212; https://github.com/Roughriver74/bitrix-dash</p>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/struktura-raboty-v-it-otdele-na-baze-bit/">Структура работы в It отделе на базе Битрикс24</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/rabota-s-incidentami-v-it-otdele-sistem/">Работа с инцидентами в it отделе (Система тикетов)</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/transformacija-it-otdela/">Трансформация IT отдела</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/beton-crm-novye-fishki/">Бетон CRM: Новые фишки</a> — связанный кейс или практический разбор из блога</li>
</ul>
</section>
<p><!-- shknv-related:end --><br />
</article><p>The post <a href="https://shknv.ru/bitrix24-dashboard-real-time-monitoring/">Bitrix24 Dashboard: Real-Time мониторинг</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beton-CRM: Динамическая форма для оформления заявок.</title>
		<link>https://shknv.ru/beton-crm-dinamicheskaja-forma-dlja-oformlenija/</link>
		
		<dc:creator><![CDATA[Evgeniy Shikunov]]></dc:creator>
		<pubDate>Sun, 22 Jun 2025 08:52:29 +0000</pubDate>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[Разработка]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[битрикс24]]></category>
		<category><![CDATA[разработка]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=318</guid>

					<description><![CDATA[<p>Как динамическая форма в Beton CRM упрощает оформление заявок и снижает ошибки при работе менеджеров.</p>
<p>The post <a href="https://shknv.ru/beton-crm-dinamicheskaja-forma-dlja-oformlenija/">Beton-CRM: Динамическая форма для оформления заявок.</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-4" class="markdown-section" data-markdown-raw=" # **Beton-CRM: Комплексная CRM-система для бетонной промышленности**" data-section-index="4">
<h1><img decoding="async" class="size-full wp-image-466" src="https://shknv.ru/wp-content/uploads/2025/06/image.png" alt="" width="1536" height="1024" srcset="https://shknv.ru/wp-content/uploads/2025/06/image.png 1536w, https://shknv.ru/wp-content/uploads/2025/06/image-300x200.png 300w, https://shknv.ru/wp-content/uploads/2025/06/image-1024x683.png 1024w, https://shknv.ru/wp-content/uploads/2025/06/image-768x512.png 768w" sizes="(max-width: 1536px) 100vw, 1536px" /></h1>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-5" class="markdown-section" data-markdown-raw=" ### **Введение**" data-section-index="5">
<h3><span class="markdown-bold-text">Введение</span></h3>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-7" class="markdown-section" data-markdown-raw=" Beton-CRM — это специализированная веб-система, разработанная для оптимизации и автоматизации процесса приёма и обработки заказов в компании по производству бетона. Проект был создан с нуля для решения уникальных задач бизнеса, требующих гибкости и высокой производительности, недоступных в стандартных &quot;коробочных&quot; решениях." data-section-index="7">Beton-CRM — это специализированная веб-система, разработанная для оптимизации и автоматизации процесса приёма и обработки заказов в компании по производству бетона. Проект был создан с нуля для решения уникальных задач бизнеса, требующих гибкости и высокой производительности, недоступных в стандартных &#171;коробочных&#187; решениях.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-9" class="markdown-section" data-markdown-raw=" Основная цель проекта — предоставить интуитивно понятный инструмент для клиентов и мощную административную панель для менеджеров. Система построена на современном технологическом стеке: **React** и **TypeScript** на фронтенде, **Node.js** и **Express** на бэкенде, с базой данных **MongoDB** и глубокой интеграцией с корпоративной CRM **Bitrix24**." data-section-index="9">Основная цель проекта — предоставить интуитивно понятный инструмент для клиентов и мощную административную панель для менеджеров. Система построена на современном технологическом стеке: <span class="markdown-bold-text">React</span> и <span class="markdown-bold-text">TypeScript</span> на фронтенде, <span class="markdown-bold-text">Node.js</span> и <span class="markdown-bold-text">Express</span> на бэкенде, с базой данных <span class="markdown-bold-text">MongoDB</span> и глубокой интеграцией с корпоративной CRM <span class="markdown-bold-text">Bitrix24</span>.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-10" class="markdown-section" data-markdown-raw=" --- " data-section-index="10">
<hr />
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-11" class="markdown-section" data-markdown-raw=" ## **Ключевая особенность: Динамический конструктор форм**" data-section-index="11">
<h2><span class="markdown-bold-text">Ключевая особенность: Динамический конструктор форм</span></h2>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-13" class="markdown-section" data-markdown-raw=" Сердцем Beton-CRM является мощный и гибкий конструктор форм. В отличие от статичных форм, где каждое поле жестко закодировано, наша система позволяет администраторам полностью управлять структурой формы заказа без привлечения разработчиков." data-section-index="13">Сердцем Beton-CRM является мощный и гибкий конструктор форм. В отличие от статичных форм, где каждое поле жестко закодировано, наша система позволяет администраторам полностью управлять структурой формы заказа без привлечения разработчиков.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-14" class="markdown-section" data-markdown-raw=" #### **Возможности административной панели:**" data-section-index="14">
<h4><span class="markdown-bold-text">Возможности административной панели:</span></h4>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-15" class="markdown-section" data-markdown-raw=" * **Полное управление полями:** Создание, редактирование и удаление полей различных типов: текст, число, выпадающий список, дата, чекбокс и умное поле с автозаполнением. * **Структурирование формы:** Организация полей в логические разделы (например, &quot;Информация о компании&quot;, &quot;Детали заказа&quot;, &quot;Технические параметры&quot;) с помощью специальных полей-заголовков. * **Интуитивное управление порядком:** Удобный **Drag-and-Drop интерфейс** для изменения порядка полей и целых разделов, позволяющий быстро адаптировать форму под меняющиеся бизнес-требования. Система автоматически пересчитывает порядок всех затронутых элементов, поддерживая целостность данных." data-section-index="15">
<ul>
<li data-indent="0"><span class="markdown-bold-text">Полное управление полями:</span> Создание, редактирование и удаление полей различных типов: текст, число, выпадающий список, дата, чекбокс и умное поле с автозаполнением.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Структурирование формы:</span> Организация полей в логические разделы (например, &#171;Информация о компании&#187;, &#171;Детали заказа&#187;, &#171;Технические параметры&#187;) с помощью специальных полей-заголовков.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Интуитивное управление порядком:</span> Удобный <span class="markdown-bold-text">Drag-and-Drop интерфейс</span> для изменения порядка полей и целых разделов, позволяющий быстро адаптировать форму под меняющиеся бизнес-требования. Система автоматически пересчитывает порядок всех затронутых элементов, поддерживая целостность данных.</li>
</ul>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-17" class="markdown-section" data-markdown-raw=" Эта гибкость гарантирует, что форма всегда будет актуальной и будет содержать только необходимые поля, что упрощает процесс заполнения для конечного пользователя." data-section-index="17">Эта гибкость гарантирует, что форма всегда будет актуальной и будет содержать только необходимые поля, что упрощает процесс заполнения для конечного пользователя.</section>
<section data-markdown-raw=" Эта гибкость гарантирует, что форма всегда будет актуальной и будет содержать только необходимые поля, что упрощает процесс заполнения для конечного пользователя." data-section-index="17"><img decoding="async" class="aligncenter wp-image-312 size-large" src="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.36.10@2x-1024x931.png" alt="" width="1024" height="931" srcset="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.36.10@2x-1024x931.png 1024w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.36.10@2x-300x273.png 300w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.36.10@2x-768x698.png 768w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.36.10@2x-1536x1397.png 1536w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.36.10@2x-2048x1863.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-21" class="markdown-section" data-markdown-raw=" --- " data-section-index="21">
<hr />
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-22" class="markdown-section" data-markdown-raw=" ## **Глубокая интеграция с Bitrix24**" data-section-index="22">
<h2></h2>
<h2><span class="markdown-bold-text">Глубокая интеграция с Bitrix24</span></h2>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-24" class="markdown-section" data-markdown-raw=" Одной из важнейших задач была бесшовная интеграция с существующей в компании CRM-системой — Bitrix24. Beton-CRM не заменяет её, а расширяет, автоматизируя поток данных." data-section-index="24">Одной из важнейших задач была бесшовная интеграция с существующей в компании CRM-системой — Bitrix24. Beton-CRM не заменяет её, а расширяет, автоматизируя поток данных.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-25" class="markdown-section" data-markdown-raw=" #### **Как это работает:**" data-section-index="25">
<h4><span class="markdown-bold-text">Как это работает:</span></h4>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-26" class="markdown-section" data-markdown-raw=" 1. **Синхронизация данных в реальном времени:** Поля с автозаполнением (например, &quot;Название компании&quot; или &quot;Продукт&quot;) напрямую запрашивают данные из Bitrix24. Когда пользователь начинает вводить текст, система мгновенно предлагает релевантные варианты из базы данных компании. Это устраняет ошибки и дубликаты. *Ключевой доработкой стала интеллектуальная система поиска: если пользователь вводит цифры, поиск идет по ID, если текст — по названию.* 2. **Автоматическое создание сделок:** После того как пользователь отправляет заполненную форму, система автоматически создает новую сделку в Bitrix24 в нужной воронке, прикрепляя все введенные данные и корректно указывая ответственного менеджера. Это избавляет менеджеров от необходимости вручную переносить информацию. 3. **Обновление статусов:** Система синхронизирует статусы заявок между Beton-CRM и Bitrix24 с учетом категорий сделок, обеспечивая прозрачность процесса для всех участников. Это было достигнуто благодаря правильной передаче &#96;categoryId&#96; и формированию &#96;STAGE_ID&#96; с префиксом категории." data-section-index="26">
<ol>
<li value="1" data-indent="0"><span class="markdown-bold-text">Синхронизация данных в реальном времени:</span> Поля с автозаполнением (например, &#171;Название компании&#187; или &#171;Продукт&#187;) напрямую запрашивают данные из Bitrix24. Когда пользователь начинает вводить текст, система мгновенно предлагает релевантные варианты из базы данных компании. Это устраняет ошибки и дубликаты. <span class="markdown-italics-text">Ключевой доработкой стала интеллектуальная система поиска: если пользователь вводит цифры, поиск идет по ID, если текст — по названию.</span></li>
</ol>
<ol>
<li value="2" data-indent="0"><span class="markdown-bold-text">Автоматическое создание сделок:</span> После того как пользователь отправляет заполненную форму, система автоматически создает новую сделку в Bitrix24 в нужной воронке, прикрепляя все введенные данные и корректно указывая ответственного менеджера. Это избавляет менеджеров от необходимости вручную переносить информацию.</li>
<li value="3" data-indent="0"><span class="markdown-bold-text">Обновление статусов:</span> Система синхронизирует статусы заявок между Beton-CRM и Bitrix24 с учетом категорий сделок, обеспечивая прозрачность процесса для всех участников. Это было достигнуто благодаря правильной передаче <span class="markdown-inline-code leading-[1.4]">categoryId</span> и формированию <span class="markdown-inline-code leading-[1.4]">STAGE_ID</span> с префиксом категории.</li>
</ol>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-313 size-large" src="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.39.02@2x-779x1024.png" alt="" width="779" height="1024" srcset="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.39.02@2x-779x1024.png 779w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.39.02@2x-228x300.png 228w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.39.02@2x-768x1009.png 768w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.39.02@2x-1169x1536.png 1169w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.39.02@2x.png 1332w" sizes="auto, (max-width: 779px) 100vw, 779px" /></p>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-30" class="markdown-section" data-markdown-raw=" --- " data-section-index="30">
<hr />
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-31" class="markdown-section" data-markdown-raw=" ## **Интеллектуальные функции и пользовательский опыт (UX)**" data-section-index="31">
<h2><span class="markdown-bold-text">Интеллектуальные функции и пользовательский опыт (UX)</span></h2>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-33" class="markdown-section" data-markdown-raw=" Мы уделили особое внимание тому, чтобы сделать работу с формой максимально удобной." data-section-index="33">Мы уделили особое внимание тому, чтобы сделать работу с формой максимально удобной.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-34" class="markdown-section" data-markdown-raw=" * **Связанные поля (Linked Fields):** Эта функция позволяет одним кликом копировать информацию между разными разделами формы (например, данные из раздела &quot;Заказчик&quot; в раздел &quot;Получатель&quot;). Это значительно ускоряет заполнение и минимизирует вероятность ошибок. *Мы решили сложную проблему копирования значений в полях с автозаполнением, где система теперь корректно переносит как ID, так и отображаемое значение.* * **Удобная навигация:** Длинная форма разделена на сворачиваемые разделы (аккордеоны). Пользователь может сосредоточиться на текущем блоке, а не теряться в большом количестве полей. *Изначально была проблема, когда поля без раздела не отображались, но мы это исправили, сделав такие группы всегда раскрытыми по умолчанию.* * **Управление доступом на основе ролей:** * **Пользователи:** Могут создавать заявки и отслеживать статусы только своих заказов. * **Администраторы:** Имеют полный доступ к системе — управляют структурой формы, пользователями, видят все заявки и могут настраивать интеграции." data-section-index="34">
<ul>
<li data-indent="0"><span class="markdown-bold-text">Связанные поля (Linked Fields):</span> Эта функция позволяет одним кликом копировать информацию между разными разделами формы (например, данные из раздела &#171;Заказчик&#187; в раздел &#171;Получатель&#187;). Это значительно ускоряет заполнение и минимизирует вероятность ошибок. <span class="markdown-italics-text">Мы решили сложную проблему копирования значений в полях с автозаполнением, где система теперь корректно переносит как ID, так и отображаемое значение.</span></li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Удобная навигация:</span> Длинная форма разделена на сворачиваемые разделы (аккордеоны). Пользователь может сосредоточиться на текущем блоке, а не теряться в большом количестве полей. <span class="markdown-italics-text">Изначально была проблема, когда поля без раздела не отображались, но мы это исправили, сделав такие группы всегда раскрытыми по умолчанию.</span></li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Управление доступом на основе ролей:</span></li>
</ul>
<ul class="nested">
<li class="nested" data-indent="4"><span class="markdown-bold-text">Пользователи:</span> Могут создавать заявки и отслеживать статусы только своих заказов.</li>
</ul>
<ul class="nested">
<li class="nested" data-indent="4"><span class="markdown-bold-text">Администраторы:</span> Имеют полный доступ к системе — управляют структурой формы, пользователями, видят все заявки и могут настраивать интеграции.</li>
</ul>
<p><img loading="lazy" decoding="async" class="alignnone size-large wp-image-314" src="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.41.40@2x-941x1024.png" alt="" width="941" height="1024" srcset="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.41.40@2x-941x1024.png 941w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.41.40@2x-276x300.png 276w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.41.40@2x-768x836.png 768w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.41.40@2x.png 1244w" sizes="auto, (max-width: 941px) 100vw, 941px" /> <img loading="lazy" decoding="async" class="alignnone wp-image-315 size-large" src="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.44.38@2x-1024x781.png" alt="" width="1024" height="781" srcset="https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.44.38@2x-1024x781.png 1024w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.44.38@2x-300x229.png 300w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.44.38@2x-768x586.png 768w, https://shknv.ru/wp-content/uploads/2025/06/CleanShot-2025-06-22-at-11.44.38@2x.png 1524w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-38" class="markdown-section" data-markdown-raw=" --- " data-section-index="38">
<hr />
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-39" class="markdown-section" data-markdown-raw=" ## **Оптимизация производительности: фокус на Android и мобильных устройствах**" data-section-index="39">
<h2><span class="markdown-bold-text">Оптимизация производительности: фокус на Android и мобильных устройствах</span></h2>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-41" class="markdown-section" data-markdown-raw=" Одной из самых сложных и интересных задач была оптимизация производительности. Первоначальные тесты показали, что на мобильных устройствах (особенно на Android) форма работала медленно, с заметными задержками при вводе текста." data-section-index="41">Одной из самых сложных и интересных задач была оптимизация производительности. Первоначальные тесты показали, что на мобильных устройствах (особенно на Android) форма работала медленно, с заметными задержками при вводе текста.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-42" class="markdown-section" data-markdown-raw=" #### **Принятые меры:**" data-section-index="42">
<h4><span class="markdown-bold-text">Принятые меры:</span></h4>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-43" class="markdown-section" data-markdown-raw=" * **Миграция с Formik на React Hook Form:** Этот стратегический шаг позволил избавиться от проблемы &quot;лишних&quot; перерисовок компонентов (re-renders) и значительно повысить отзывчивость интерфейса. Это решило критическую ошибку &#96;Maximum update depth exceeded&#96;. * **Адаптивная оптимизация ввода:** Была внедрена &quot;умная&quot; система с использованием техник &#96;debounce&#96; и &#96;throttle&#96;. Запросы на поиск в полях с автозаполнением отправляются не при каждом нажатии клавиши, а с задержкой (например, 1000 мс), что кардинально снизило нагрузку. * **Создание легковесных компонентов:** Разработан специальный компонент &#96;FastAutocompleteInput&#96;, оптимизированный для быстрой работы на медленных устройствах. Вся система оптимизации была вынесена в отдельный хук &#96;useAndroidOptimization&#96;." data-section-index="43">
<ul>
<li data-indent="0"><span class="markdown-bold-text">Миграция с Formik на React Hook Form:</span> Этот стратегический шаг позволил избавиться от проблемы &#171;лишних&#187; перерисовок компонентов (re-renders) и значительно повысить отзывчивость интерфейса. Это решило критическую ошибку <span class="markdown-inline-code leading-[1.4]">Maximum update depth exceeded</span>.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Адаптивная оптимизация ввода:</span> Была внедрена &#171;умная&#187; система с использованием техник <span class="markdown-inline-code leading-[1.4]">debounce</span> и <span class="markdown-inline-code leading-[1.4]">throttle</span>. Запросы на поиск в полях с автозаполнением отправляются не при каждом нажатии клавиши, а с задержкой (например, 1000 мс), что кардинально снизило нагрузку.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Создание легковесных компонентов:</span> Разработан специальный компонент <span class="markdown-inline-code leading-[1.4]">FastAutocompleteInput</span>, оптимизированный для быстрой работы на медленных устройствах. Вся система оптимизации была вынесена в отдельный хук <span class="markdown-inline-code leading-[1.4]">useAndroidOptimization</span>.</li>
</ul>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-44" class="markdown-section" data-markdown-raw=" #### **Результаты:**" data-section-index="44">
<h4><span class="markdown-bold-text">Результаты:</span></h4>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-46" class="markdown-section" data-markdown-raw=" Проведенное профилирование показало впечатляющие улучшения:" data-section-index="46">Проведенное профилирование показало впечатляющие улучшения:</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-47" class="markdown-section" data-markdown-raw=" * **INP (Interaction to Next Paint) снизился на 51%:** с 3,720 мс до 1,824 мс. * **Отклик на ввод с клавиатуры ускорился до 75%.**" data-section-index="47">
<ul>
<li data-indent="0"><span class="markdown-bold-text">INP (Interaction to Next Paint) снизился на 51%:</span> с 3,720 мс до 1,824 мс.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Отклик на ввод с клавиатуры ускорился до 75%.</span></li>
</ul>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-49" class="markdown-section" style="font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; border-radius: 4px; margin: 6px 0px; position: relative; scroll-margin-bottom: 40px; scroll-margin-top: 40px; color: #bec6d0; font-family: -apple-system, system-ui, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2; background-color: #0c0f11; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;" data-markdown-raw=" &gt; Это доказывает, что даже сложные и тяжелые формы могут быть быстрыми и отзывчивыми на любом устройстве." data-section-index="49">&gt; Это доказывает, что даже сложные и тяжелые формы могут быть быстрыми и отзывчивыми на любом устройстве.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-50" class="markdown-section" data-markdown-raw=" --- " data-section-index="50">
<hr />
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-51" class="markdown-section" data-markdown-raw=" ## **Техническая архитектура и процесс разработки**" data-section-index="51">
<h2><span class="markdown-bold-text">Техническая архитектура и процесс разработки</span></h2>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-53" class="markdown-section" data-markdown-raw=" Проект построен на надежном и масштабируемом стеке технологий." data-section-index="53">Проект построен на надежном и масштабируемом стеке технологий.</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-54" class="markdown-section" data-markdown-raw=" * **Frontend:** React, TypeScript, React Hook Form, Axios. * **Backend:** Node.js, Express, Mongoose (для работы с MongoDB), JWT (для аутентификации). * **База данных:** MongoDB. * **Инфраструктура:** Nginx для проксирования запросов, PM2 для управления процессами Node.js." data-section-index="54">
<ul>
<li data-indent="0"><span class="markdown-bold-text">Frontend:</span> React, TypeScript, React Hook Form, Axios.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Backend:</span> Node.js, Express, Mongoose (для работы с MongoDB), JWT (для аутентификации).</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">База данных:</span> MongoDB.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Инфраструктура:</span> Nginx для проксирования запросов, PM2 для управления процессами Node.js.</li>
</ul>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-55" class="markdown-section" data-markdown-raw=" #### **Ключевые моменты процесса разработки:**" data-section-index="55">
<h4><span class="markdown-bold-text">Ключевые моменты процесса разработки:</span></h4>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-56" class="markdown-section" data-markdown-raw=" * **Целостность данных:** С самого начала был сделан акцент на надежности. Была разработана система автоматической валидации базы данных при старте сервера, которая проверяет целостность связей между сущностями (например, что у каждого поля есть форма) и может автоматически исправлять некоторые проблемы. Это предотвратило множество трудноуловимых багов, таких как &quot;исчезающие&quot; поля. * **Итеративное решение проблем:** В ходе разработки было решено множество нетривиальных задач: от исправления ошибок рендеринга в React до отладки сложных сценариев взаимодействия с API Bitrix24 и проблем с позиционированием элементов при Drag-and-Drop. * **Строгая типизация:** Использование TypeScript на всех уровнях проекта позволило минимизировать количество ошибок во время выполнения и сделало кодовую базу более понятной и поддерживаемой." data-section-index="56">
<ul>
<li data-indent="0"><span class="markdown-bold-text">Целостность данных:</span> С самого начала был сделан акцент на надежности. Была разработана система автоматической валидации базы данных при старте сервера, которая проверяет целостность связей между сущностями (например, что у каждого поля есть форма) и может автоматически исправлять некоторые проблемы. Это предотвратило множество трудноуловимых багов, таких как &#171;исчезающие&#187; поля.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Итеративное решение проблем:</span> В ходе разработки было решено множество нетривиальных задач: от исправления ошибок рендеринга в React до отладки сложных сценариев взаимодействия с API Bitrix24 и проблем с позиционированием элементов при Drag-and-Drop.</li>
</ul>
<ul>
<li data-indent="0"><span class="markdown-bold-text">Строгая типизация:</span> Использование TypeScript на всех уровнях проекта позволило минимизировать количество ошибок во время выполнения и сделало кодовую базу более понятной и поддерживаемой.</li>
</ul>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-57" class="markdown-section" data-markdown-raw=" --- " data-section-index="57">
<hr />
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-58" class="markdown-section" data-markdown-raw=" ## **Итоги проекта**" data-section-index="58">
<h2><span class="markdown-bold-text">Итоги проекта</span></h2>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-60" class="markdown-section" data-markdown-raw=" Beton-CRM — это успешный пример того, как индивидуальная разработка может решить специфические задачи бизнеса гораздо эффективнее универсальных инструментов. В результате была создана быстрая, надежная и гибкая CRM-система, которая:" data-section-index="60">Beton-CRM — это успешный пример того, как индивидуальная разработка может решить специфические задачи бизнеса гораздо эффективнее универсальных инструментов. В результате была создана быстрая, надежная и гибкая CRM-система, которая:</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-61" class="markdown-section" data-markdown-raw=" * Автоматизировала рутинные задачи менеджеров. * Упростила и ускорила процесс заказа для клиентов. * Обеспечила полную синхронизацию данных с основной корпоративной системой. * Продемонстрировала возможность достижения высокой производительности на сложных формах даже на мобильных устройствах." data-section-index="61">
<ul>
<li data-indent="0">Автоматизировала рутинные задачи менеджеров.</li>
</ul>
<ul>
<li data-indent="0">Упростила и ускорила процесс заказа для клиентов.</li>
</ul>
<ul>
<li data-indent="0">Обеспечила полную синхронизацию данных с основной корпоративной системой.</li>
</ul>
<ul>
<li data-indent="0">Продемонстрировала возможность достижения высокой производительности на сложных формах даже на мобильных устройствах.</li>
</ul>
</section>
<section id="markdown-section-992ec2aa-bb70-483e-9ced-3bc80ebc4285-63" class="markdown-section" data-markdown-raw=" Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами." data-section-index="63">Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами.</section>
<section data-markdown-raw=" Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами." data-section-index="63"></section>
<section data-markdown-raw=" Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами." data-section-index="63">Видео, в котором обьясняется как был реализован этот кейс<br />
<a href="https://vkvideo.ru/video-232474128_456239020?list=ln-H2plhthryXQoyFQgZH">https://vkvideo.ru/video-232474128_456239020?list=ln-H2plhthryXQoyFQgZH</a></section>
<section data-markdown-raw=" Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами." data-section-index="63"></section>
<section data-markdown-raw=" Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами." data-section-index="63"></section>
<section data-markdown-raw=" Этот проект является отличным дополнением к портфолио, демонстрирующим навыки в full-stack разработке, решении сложных архитектурных задач, оптимизации производительности и интеграции со сторонними сервисами." data-section-index="63"></section>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/beton-crm-novye-fishki/">Бетон CRM: Новые фишки</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/kejs-sozdanie-umnoj-crm-dlja-territorial/">(Кейс) Создание Умной CRM для Территориальных Менеджеров Полный Путь от Идеи до Реализации</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/bitrix24-dashboard-real-time-monitoring/">Bitrix24 Dashboard: Real-Time мониторинг</a> — дополняет тему IT-процессов и контроля</li>
</ul>
</section>
<p><!-- shknv-related:end --></p><p>The post <a href="https://shknv.ru/beton-crm-dinamicheskaja-forma-dlja-oformlenija/">Beton-CRM: Динамическая форма для оформления заявок.</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>(Кейс) Создание Умной CRM для Территориальных Менеджеров Полный Путь от Идеи до Реализации</title>
		<link>https://shknv.ru/kejs-sozdanie-umnoj-crm-dlja-territorial/</link>
		
		<dc:creator><![CDATA[Evgeniy Shikunov]]></dc:creator>
		<pubDate>Sun, 09 Feb 2025 10:50:38 +0000</pubDate>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[Автоматизация]]></category>
		<category><![CDATA[кейс]]></category>
		<category><![CDATA[полевые команды]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=298</guid>

					<description><![CDATA[<p>Кейс умной CRM для территориальных менеджеров: путь от идеи до реализации и автоматизации работы в поле.</p>
<p>The post <a href="https://shknv.ru/kejs-sozdanie-umnoj-crm-dlja-territorial/">(Кейс) Создание Умной CRM для Территориальных Менеджеров Полный Путь от Идеи до Реализации</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<h3>Создание Умной CRM для Территориальных Менеджеров: Полный Путь от Идеи до Реализации</h3>
<h4>Введение</h4>
<p>В современном бизнесе автоматизация процессов и эффективное управление данными играют ключевую роль в успехе компании. Особенно это важно, когда речь идет о территориальных менеджерах, которые ежедневно взаимодействуют с клиентами на местах. Наш проект начался как попытка найти решение для управления базой компаний и контроля работы менеджеров. Однако он превратился в комплексную систему, которая не только собирает данные, но и помогает анализировать их, планировать работу и повышать эффективность.</p>
<p>Эта статья подробно рассказывает о нашем пути — от идеи до реализации, включая все сложности, с которыми мы столкнулись, и решения, которые помогли нам добиться желаемого результата. Мы надеемся, что наш опыт окажется полезным для тех, кто также стремится оптимизировать процессы в своей компании.</p>
<hr />
<h3>1. Сбор Базы Данных: От Простого к Сложному</h3>
<h4><strong>Шаг 1: Парсинг 2GIS</strong></h4>
<p>Первым шагом стало исследование потенциальных клиентов через сервис 2GIS. Мы решили отказаться от официального инструмента платформы и использовать сторонние методы сбора данных. Это позволило нам получить таблицу с более чем 20 тысячами записей, содержащих адреса, телефоны, названия компаний и даже ссылки на социальные сети.</p>
<p>Однако вскоре выяснилось, что недостаточно только контактной информации — для полноценной работы необходимы реквизиты компаний. Это привело нас к следующему этапу.</p>
<h4><strong>Шаг 2: Парсинг RusProfile</strong></h4>
<p>Для получения реквизитов компаний мы обратились к <strong>RusProfile</strong>, где собрали данные около 16 тысяч организаций. Теперь возникла проблема — как связать эти данные с уже имеющимися в базе?</p>
<ul>
<li><strong>Проблема:</strong> Юр. адрес и фактический адрес часто различаются.</li>
<li><strong>Решение:</strong> Мы выбрали связывание данных по телефону через Excel. В итоге удалось объединить около 8 тысяч компаний.</li>
</ul>
<h4><strong>Шаг 3: Поиск INN через Фрилансеров</strong></h4>
<p>Оставшиеся записи требовали дополнительного исследования. Для этого мы разделили базу на таблицы по 400–500 записей и выложили задачи на фриланс-биржи. Фрилансеры искали ИНН компаний через открытые источники, используя телефон, email или сайт.</p>
<ul>
<li><strong>Процесс:</strong> Каждый фрилансер работал над своей частью базы, а результаты проверялись случайным выбором (около 10% каждой таблицы).</li>
<li><strong>Результат:</strong> За две недели была обработана вся база из 16–17 тысяч записей. Общие затраты составили чуть меньше 30 тысяч рублей.</li>
</ul>
<h4><strong>Дополнительные Этапы Оптимизации</strong></h4>
<p>После первичной обработки данных мы столкнулись с рядом проблем:</p>
<ul>
<li><strong>Дубликаты:</strong> Некоторые компании оказались занесены в базу несколько раз с разными форматами написания адресов или телефонов.</li>
<li><strong>Неактуальные данные:</strong> Частично информация о компаниях оказалась устаревшей. Чтобы решить эту проблему, мы добавили регулярную проверку актуальности данных через API сервисов проверки юридических лиц.</li>
</ul>
<hr />
<h3>2. Создание Инструментов для Работы с Базой</h3>
<p>Собранная база данных стала основой для дальнейшей работы. Однако информация о компаниях сама по себе не давала возможности проводить глубокий анализ рынка. Необходимо было внедрить механизмы для сбора профильной информации.</p>
<h4><strong>Территориальные Менеджеры: Анализ Существующих Процессов</strong></h4>
<p>Мы провели интервью с территориальными менеджерами и выяснили следующее:</p>
<ul>
<li>Каждый заполнял свои таблицы по-разному, что усложняло централизованное управление.</li>
<li>Некоторые использовали Google Forms для заполнения информации после визитов.</li>
<li>Отсутствие единого стандарта приводило к потерям данных и ошибкам.</li>
</ul>
<p>На основе этих наблюдений мы приняли решение создать единый инструмент для фиксации посещений и сбора данных.</p>
<h4><strong>Шаг 1: Создание Смарт-Процессов в Bitrix24</strong></h4>
<p>Мы разработали два ключевых смарт-процесса:</p>
<ol>
<li><strong>Посещения:</strong> Карточки, содержащие информацию о том, куда, когда и зачем планируется поход.
<ul>
<li><strong>Автоматизация:</strong> Карточки &#171;Посещения&#187; создавались автоматически через бизнес-процессы, связанные с компаниями.</li>
<li><strong>Стадии:</strong> Посещения могли находиться на разных стадиях: &#171;Запланировано&#187;, &#171;Выполнено&#187;, &#171;Отложено&#187; и т.д.</li>
</ul>
</li>
<li><strong>Анкеты:</strong> Отдельные формы для сбора детальной информации во время визитов.
<ul>
<li><strong>Формат:</strong> Анкеты содержали около 30 вопросов, зависящих от типа посещения (например, первичный контакт, повторный визит, переговоры о контракте).</li>
<li><strong>Хранение:</strong> Чтобы избежать перегрузки информацией, мы создали отдельную сущность для хранения ответов.</li>
</ul>
</li>
</ol>
<h4><strong>Шаг 2: Разработка Анкет</strong></h4>
<p>Анкеты содержали следующие разделы:</p>
<ul>
<li><strong>Контактная информация:</strong> Подтверждение актуальности данных о компании.</li>
<li><strong>Продуктовый интерес:</strong> Какие продукты или услуги интересуют клиента.</li>
<li><strong>Условия сотрудничества:</strong> Предпочтения клиента по ценам, условиям доставки и оплаты.</li>
<li><strong>Замечания:</strong> Комментарии менеджера о состоянии компании, ее готовности к сотрудничеству и других важных моментах.</li>
</ul>
<p>Чтобы избежать путаницы, мы создали систему правил для каждого типа анкеты, которая автоматически определяла, какие поля обязательны для заполнения.</p>
<h4><strong>Шаг 3: Автоматизация Отчетности</strong></h4>
<p>После создания анкеты система автоматически генерировала отчет для руководителя регионального отдела. Этот отчет включал:</p>
<ul>
<li>Сводку по всем выполненным посещениям за неделю.</li>
<li>Аналитику по типам клиентов (новые, существующие, потенциальные).</li>
<li>Рекомендации по следующим шагам для каждой компании.</li>
</ul>
<hr />
<h3>3. Визуализация Данных: От Таблиц к Карте</h3>
<p>Большая база компаний требует удобного способа просмотра и анализа. Мы решили добавить картографическую составляющую.</p>
<h4><strong>Интеграция с Яндекс.Картами</strong></h4>
<p>С помощью разработчиков мы создали страницу в Bitrix24, где компании отображались на карте:</p>
<ul>
<li><strong>Метки:</strong> Желтые метки означают наличие информации, зеленые — отсутствие.</li>
<li><strong>Кластеры:</strong> Группировка меток для удобства восприятия.</li>
<li><strong>Фильтры:</strong> Возможность выбрать конкретный регион и показать только его метки.</li>
<li><strong>Маршруты:</strong> Функция создания маршрутов прямо на карте с последующим экспортом в мобильное приложение.</li>
</ul>
<p>Затраты на разработку составили около 50 часов, но результат оправдал себя. Теперь мы можем наглядно видеть зоны влияния дистрибьюторов и контролировать их работу.</p>
<h4><strong>Дополнительные Возможности</strong></h4>
<ul>
<li><strong>Тепловая карта:</strong> Показывает плотность клиентов в разных районах города.</li>
<li><strong>История изменений:</strong> Каждая метка содержит информацию о последних изменениях в данных о компании.</li>
<li><strong>Уведомления:</strong> Система автоматически отправляет уведомления, если компания из одного региона заказывает продукцию у другого дистрибьютора.</li>
</ul>
<hr />
<h3>4. Мобильность и Удобство Работы</h3>
<p>Основная сложность заключалась в обеспечении мобильности территориальных менеджеров. Они редко находятся в офисе, поэтому им нужен был удобный инструмент для работы в полевых условиях.</p>
<h4><strong>Планирование Посещений</strong></h4>
<p>Мы внедрили систему, где менеджер:</p>
<ol>
<li>Создает план посещений один раз в неделю.</li>
<li>Получает ссылку на форму анкеты для каждого визита.</li>
<li>Добавляет событие в календарь с адресом и ссылкой.</li>
</ol>
<h4><strong>Неупланированные Посещения</strong></h4>
<p>Для ситуаций, когда менеджер обнаруживает новую компанию во время визита, мы создали специальную форму. Она автоматически генерирует карточку посещения и проверяет базу на наличие аналогичных компаний по адресу с помощью интеграции DaData.</p>
<h4><strong>Решение Проблемы Повторных Посещений</strong></h4>
<p>Основная проблема заключалась в отсутствии поддержки смарт-процессов в мобильном приложении Bitrix24. Это делало невозможным редактирование данных с телефона.</p>
<p>Чтобы преодолеть это ограничение, мы разработали собственное мобильное приложение с использованием конструктора <strong>Bubble.io</strong>:</p>
<ul>
<li>Приложение подключается к базе данных Bitrix24 через API.</li>
<li>Позволяет просматривать список посещений, открывать информацию о компаниях и редактировать данные.</li>
<li>Включает функции геолокации и отслеживания меток.</li>
</ul>
<h4><strong>Дополнительные Функции Мобильного Приложения</strong></h4>
<ul>
<li><strong>Геотегging:</strong> Автоматическая отметка местоположения менеджера при создании нового посещения.</li>
<li><strong>Фотоотчеты:</strong> Возможность прикреплять фотографии объектов или документов.</li>
<li><strong>Онлайн-поддержка:</strong> Менеджеры могут оперативно связаться с офисом для уточнения информации.</li>
</ul>
<hr />
<h3>5. Анализ Эффективности и Результаты</h3>
<p>После внедрения системы мы провели анализ её эффективности:</p>
<ul>
<li><strong>Увеличение количества посещений:</strong> На 25% больше компаний были посещены за тот же период времени.</li>
<li><strong>Снижение количества ошибок:</strong> Автоматизация процессов снизила количество ошибок при вводе данных на 40%.</li>
<li><strong>Улучшение аналитики:</strong> Теперь руководители могут быстро получать информацию о работе своих команд и принимать взвешенные решения.</li>
</ul>
<hr />
<h3>6. Будущие Планы</h3>
<p>Мы продолжаем совершенствовать систему, сосредотачиваясь на следующих направлениях:</p>
<ul>
<li><strong>Автоматизация:</strong> Расширение возможностей бизнес-процессов для минимизации ручного ввода данных.</li>
<li><strong>Аналитика:</strong> Внедрение инструментов для анализа продаж и эффективности работы территориальных менеджеров.</li>
<li><strong>Улучшение UX:</strong> Совершенствование дизайна мобильного приложения и веб-версии системы.</li>
<li><strong>Машинное обучение:</strong> Внедрение алгоритмов прогнозирования спроса и анализа поведения клиентов.</li>
</ul>
<hr />
<h3>Заключение</h3>
<p>Наш проект показывает, что даже с ограниченным бюджетом можно создать эффективную систему управления базой компаний и контролировать работу территориальных менеджеров. Главное — правильно расставить приоритеты, использовать доступные инструменты и быть готовым к экспериментам.</p>
<p>Если у вас есть вопросы или предложения по улучшению нашей системы, пишите! Будем рады обсудить ваш опыт и поделиться своим.</p>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/sistema-uchjota-vizitov-medicinskih-predstavitelej/">Система учёта визитов медицинских представителей</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/320-2/">Портфолио: Система учёта визитов &quot;Visit&quot;</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/beton-crm-novye-fishki/">Бетон CRM: Новые фишки</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
<li><a href="https://shknv.ru/beton-crm-dinamicheskaja-forma-dlja-oformlenija/">Beton-CRM: Динамическая форма для оформления заявок.</a> — дополняет кластер CRM, визитов и работы полевых команд</li>
</ul>
</section>
<p><!-- shknv-related:end --></p><p>The post <a href="https://shknv.ru/kejs-sozdanie-umnoj-crm-dlja-territorial/">(Кейс) Создание Умной CRM для Территориальных Менеджеров Полный Путь от Идеи до Реализации</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Структура работы в It отделе на базе Битрикс24</title>
		<link>https://shknv.ru/struktura-raboty-v-it-otdele-na-baze-bit/</link>
		
		<dc:creator><![CDATA[Evgeniy Shikunov]]></dc:creator>
		<pubDate>Sun, 15 Dec 2024 11:17:06 +0000</pubDate>
				<category><![CDATA[CRM]]></category>
		<category><![CDATA[Автоматизация]]></category>
		<category><![CDATA[IT-аудит]]></category>
		<category><![CDATA[битрикс24]]></category>
		<category><![CDATA[процессы]]></category>
		<guid isPermaLink="false">https://shknv.ru/?p=199</guid>

					<description><![CDATA[<p>Как выстроить структуру работы IT-отдела на базе Битрикс24: заявки, роли, статусы и прозрачность выполнения.</p>
<p>The post <a href="https://shknv.ru/struktura-raboty-v-it-otdele-na-baze-bit/">Структура работы в It отделе на базе Битрикс24</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></description>
										<content:encoded><![CDATA[<h3 style="text-align: right;">Как выстроить работу IT-отдела на базе Битрикс24</h3>
<p>Сегодня я расскажу, как удалось выстроить работу IT-отдела с использованием Битрикс24, какие были ключевые моменты и что стоило бы сделать иначе на старте.</p>
<h4>Исходные данные</h4>
<p>В IT-отделе у нас:</p>
<ul>
<li>Несколько PHP-программистов, занимающихся разработкой собственной ERP-системы;</li>
<li>Программисты 1С;</li>
<li>Системный аналитик Битрикс24;</li>
<li>Бизнес-аналитик процессов компании.</li>
</ul>
<h3>Организация рабочих групп</h3>
<p>На каждое направление создаётся отдельная группа в Битрикс24, где регистрируются задачи:</p>
<ul>
<li><strong>UserStory</strong> — задачи от пользователей;</li>
<li><strong>Декомпозированные задачи</strong> — сложные задачи, требующие анализа;</li>
<li><strong>Инциденты</strong> — мелкие баги, которые требуют оперативного исправления.</li>
</ul>
<p>Начнём с примера организации работы группы разработки ERP, так как в её работе активно используется Scrum, а задачи ведутся в рамках спринтов.</p>
<h4>Пользователь создаёт задачу по шаблону:</h4>
<hr />
<p><strong>Какую проблему нужно решить?</strong></p>
<p><em>Краткое описание функционала или проблемы, контекст важен для реализации.</em><br />
<em>Что будет являться результатом?</em></p>
<p><strong>Детальное описание.</strong><br />
<em>С помощью каких данных будет производиться проверка?</em></p>
<p><strong>Пример данных.</strong><br />
<em>Сценарии тестирования:</em></p>
<hr />
<p>Этот шаблон оказался очень удобным и был заимствован у одной крупной IT-компании.</p>
<p>После создания задача попадает в Канбан группы. Системный аналитик или я, как руководитель, оцениваю её и выставляю приоритет.</p>
<h3>Приоритизация задач</h3>
<p>Приоритет задач определяется следующим образом:</p>
<ul>
<li>Если задача затрагивает процессы в двух и более отделах, она вносится в повестку собрания по приоритизации между руководителями отделов. Здесь обсуждается, двигаем ли текущие задачи или нет.</li>
<li>Если задача не требует изменения приоритетов, проводится быстрый анализ с разработчиком: можем ли мы включить запрос в уже существующую задачу.</li>
</ul>
<p>После оценки задача назначается конкретному разработчику. Он может привлекать коллег к реализации, если требуется, но в его обязанности входит декомпозиция задачи на подзадачи, оценка их сложности и перевод в статус «Анализ».</p>
<h4>Как выглядит Канбан группы разработки</h4>
<p><img loading="lazy" decoding="async" class="" src="https://shknv.ru/wp-content/uploads/2024/12/Pasted-image-20241215134048-2.png" alt="Pasted image 20241215134048.png" width="936" height="330" /></p>
<p>Перед каждым спринтом происходит:</p>
<ol>
<li>Просмотр задач User Story. Если они не разобраны, они анализируются и декомпозируются.</li>
<li>Все задачи в стадии «Квалификация» (новые User Story) проходят анализ.</li>
<li>Задачи в разделе «Анализ» уточняются, если требуется, и отправляются в стадию «В спринт на бэклог». Отсюда они перемещаются в другую группу (Scrum) через исходящий вебхук.</li>
</ol>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-278" src="https://shknv.ru/wp-content/uploads/2024/12/IMG_2134.jpeg" alt="Вебхук" width="2020" height="1454" srcset="https://shknv.ru/wp-content/uploads/2024/12/IMG_2134.jpeg 2020w, https://shknv.ru/wp-content/uploads/2024/12/IMG_2134-300x216.jpeg 300w, https://shknv.ru/wp-content/uploads/2024/12/IMG_2134-1024x737.jpeg 1024w, https://shknv.ru/wp-content/uploads/2024/12/IMG_2134-768x553.jpeg 768w, https://shknv.ru/wp-content/uploads/2024/12/IMG_2134-1536x1106.jpeg 1536w" sizes="auto, (max-width: 2020px) 100vw, 2020px" /></p>
<p>GROUP_ID &#8212; группа скрама</p>
<pre><code>https://$$$.bitrix24.ru/rest/TOKEN/tasks.task.update.json?taskId={{ID}}&amp;fields[GROUP_ID]=463
</code></pre>
<p>Так задачи автоматически попадают в бэклог Scrum-группы.<br />
<img loading="lazy" decoding="async" class="" src="https://shknv.ru/wp-content/uploads/2024/12/Pasted-image-20241215135412-2.png" alt="Pasted image 20241215135412.png" width="952" height="414" /></p>
<p>После попадания задачи в бэклог Scrum-группы, они проходят дополнительную аналитику. Для анализа эффективности методики я создал небольшой отчёт, который показывает, как система заработала с июля месяца. Вот пример:</p>
<p><img decoding="async" class="alignleft" src="https://shknv.ru/wp-content/uploads/2024/12/Pasted-image-20241215140005-2.png" alt="Pasted image 20241215140005.png" /></p>
<h3>Работа с другими направлениями</h3>
<p>Для других направлений используется похожая система, но без передачи задач в спринт. Здесь все задачи ведутся в одной группе.</p>
<p>В отдельной <a href="https://shknv.ru/rabota-s-incidentami-v-it-otdele-sistem/">статье</a> я расскажу, как регистрировать и отслеживать выполнение инцидентов в Битрикс24.</p>
<h3>Формирование правил работы</h3>
<p>На основании структуры были разработаны следующие правила работы:</p>
<h4>1. Глобальные задачи от пользователей</h4>
<ul>
<li>Задачи обозначаются тегом <code>#userstory</code>.</li>
<li>Находятся в статусе <strong>USERSTORY</strong>.</li>
<li>Каждая задача декомпозируется на подзадачи, представляющие конкретные действия.</li>
<li>Приоритизация задач обсуждается на ежемесячном собрании руководителей отделов.</li>
<li>Приоритеты фиксируются в таблице Google.</li>
<li>Каждая задача имеет ведущего разработчика, который может привлекать коллег или внешние ресурсы.</li>
</ul>
<h4>2. Работа с задачами</h4>
<ul>
<li>Сотрудник начинает и завершает задачу, меняя её статус. Это помогает отслеживать загруженность.</li>
<li>Мелкие задачи перемещаются на Канбан-доску <strong>USERSTORY</strong> в статус «В работе».</li>
<li>Все создаваемые задачи должны быть привязаны к <code>#userstory</code> как подзадачи.</li>
<li>Технические задачи (например, обновления или устранение долгов) привязываются к основной задаче для отслеживания.</li>
</ul>
<h4>3. Инциденты</h4>
<ul>
<li>Инциденты должны быть закрыты в течение 24 часов.</li>
<li>Если требуется больше времени:
<ul>
<li>Инцидент закрывается и преобразуется в задачу.</li>
<li>Задача привязывается к глобальной задаче <code>#userstory</code> или выполняется отдельно.</li>
</ul>
</li>
</ul>
<hr />
<p>Эти правила помогли структурировать работу IT-отдела и повысить эффективность процессов. Если вы хотите узнать больше о том, как организовать работу с инцидентами, следите за следующими публикациями!</p>
<p><!-- shknv-related:start --></p>
<section class="wp-block-group shknv-related-materials">
<h2>Связанные материалы</h2>
<p>Эти материалы дополняют статью и помогают перейти к соседним темам без повторения одного и того же материала.</p>
<ul>
<li><a href="https://shknv.ru/rabota-s-incidentami-v-it-otdele-sistem/">Работа с инцидентами в it отделе (Система тикетов)</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/transformacija-it-otdela/">Трансформация IT отдела</a> — дополняет тему IT-процессов, контроля и внедрения</li>
<li><a href="https://shknv.ru/bitrix24-dashboard-real-time-monitoring/">Bitrix24 Dashboard: Real-Time мониторинг</a> — дополняет тему IT-процессов, контроля и внедрения</li>
</ul>
</section>
<p><!-- shknv-related:end --></p><p>The post <a href="https://shknv.ru/struktura-raboty-v-it-otdele-na-baze-bit/">Структура работы в It отделе на базе Битрикс24</a> first appeared on <a href="https://shknv.ru">Portfolio</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
