Применение в работе службы поддержки и технической диагностике
Это одно из самых классических и эффективных применений бинарного дерева. Представьте, что клиент обращается в службу поддержки с общей проблемой: "У меня не работает интернет". Оператор поддержки, особенно если он новичок, может растеряться. Однако, если у него есть сценарий, построенный по принципу бинарного дерева, процесс становится стандартизированным и безошибочным.
Как это работает:
Система (или сценарий для оператора) задает последовательность простых вопросов:
-
"Проверьте ваш роутер. Горит ли на нем индикатор питания?"
-
НЕТ: "Пожалуйста, убедитесь, что кабель питания плотно вставлен в роутер и в розетку. Загорелся ли индикатор?" (Это новая ветка дерева).
-
ДА: "Отлично. Посмотрите на индикатор с символом глобуса или надписью 'Internet'. Он горит или мигает?"
-
НЕТ: "Вероятно, проблема на линии у провайдера или с кабелем, идущим в квартиру. Давайте попробуем перезагрузить роутер..."
-
ДА: "Значит, связь с провайдером есть. Откройте браузер. Можете ли вы зайти на сайт google.com?"
-
-
Каждый ответ отсекает целые пласты возможных неисправностей (проблемы с питанием, проблемы с линией, проблемы с устройством клиента) и быстро ведет к наиболее вероятной причине. Такой подход позволяет не только ускорить решение проблемы, но и снизить требования к квалификации операторов первой линии, так как им не нужно держать в голове все возможные сценарии — им нужно лишь следовать по веткам дерева.
Игровые и развлекательные приложения
Это вторая большая область, где бинарные деревья раскрываются в полной мере. Самый известный пример — игра "Угадай животное", которую я реализовал, или популярное приложение Akinator, которое угадывает любого персонажа.
Как это работает:
В основе лежит та же логика: программа пытается идентифицировать объект из огромной базы данных, задавая вопросы, которые делят все возможные варианты на две группы.
-
"Ваш персонаж реальный человек?" (Отсекается половина базы данных — все вымышленные персонажи).
-
"Ваш персонаж женщина?" (Оставшаяся часть делится еще пополам).
-
"Ваш персонаж связан с политикой?"
Сила этого метода в том, что с каждым вопросом пространство поиска сужается вдвое. Чтобы выбрать один вариант из тысячи, в идеальном случае потребуется всего 10 вопросов (2^10 = 1024). Это делает игру быстрой и создает у пользователя "магическое" ощущение, что программа его понимает. Более того, такие игры могут "обучаться": если программа не угадала, она просит пользователя ввести правильный ответ и задать вопрос, который отличает его от неправильного предположения. Таким образом, программа добавляет в свое дерево новый узел и новую ветку, становясь "умнее".
Другие важные сферы применения:
-
Медицинская диагностика (экспертные системы): Простые системы помощи врачам могут быть построены на деревьях решений. "У пациента есть температура выше 38°C?" -> "Есть ли кашель?" -> "Кашель сухой или с мокротой?". Это помогает систематизировать сбор анамнеза и не упустить важные симптомы.
-
Подбор товаров и услуг (онлайн-магазины): Виджеты "Помочь с выбором?" на сайтах часто используют именно бинарную логику. "Вам нужен ноутбук для игр?" -> "Важен ли для вас вес менее 1.5 кг?" -> "Бюджет больше 100 000 рублей?". Это помогает покупателю не потеряться в огромном каталоге и быстро найти подходящий товар.
-
Системы кадрового отбора (HR): Первичный скрининг кандидатов можно автоматизировать. "У кандидата есть высшее техническое образование?" -> "Опыт работы в сфере более 3 лет?" -> "Владеет ли английским на уровне Upper-Intermediate?". Это позволяет автоматически отсеивать заведомо неподходящие резюме.
-
Это идеально подходит для реализации интерактивных помощников прохождения сценариев , например технической диагностики ("помощник по устранению неисправностей"), определения потребностей ("помощник по выбору продукта") или для прохождения интерактивных обучающих курсов.
Таким образом, бинарный тест — это не просто игра, а фундаментальный подход к решению задач классификации и диагностики, который делает сложные процессы простыми, управляемыми и эффективными. Надеюсь применить этот подход в CRM. Развитие точно будет. Пока что только альфа, очень много отладочной информации и отдельный модуль с очень большим количеством unit-тестов.
В моей конфигурации применяется модуль динамического формирования интерфейса //infostart.ru/1c/articles/1284403/
Фундамент, от которого я отталкивался, и от которого практически ничего не осталось в финале это Конфигурация "Тестирование респондентов" за которую большое спасибо Drak0nу. Интегрировать не стал, но оставил возможность.
Интерфейс пользователя и движок реализованы с нуля. Для второстепенных аспектов используется БСП. Редактирование базы основано исключительно на типовом функционале 1С.
Экскурс в детали
Пока я ознакомлю с правильным порядком действий, потому что в альфе всё что угодно у Вас может не получиться.
1. Заходим в справочник Шаблоны бинарных деревьев. В справочнике шаблонов вводим и систематизируем каталог бинарных деревьев, которые хранятся в нашей базе знаний.

2. В справочнике шаблонов реализованы шаблоны со ссылками на готовые деревья тестов (сами деревья хранятся в нормализованной базе знаний в регистрах сведений). Кнопка "Тест" создает структуру дерева "Угадай животное" и заносит её в базу. Записываем шаблон. Диагностической информации пока что много, извините, если неудобно.

3. Прокручиваем данную форму вниз - в ней выводится общая статистика и само шаблонное дерево вопросов и ответов в виде картинки.

4. В самом низу есть команды "Проверить целостность", "Экспорт в текстовый файл", "Статистика", "Обновить отображение". Мы нажимаем "Создать на основании - Назначение опроса".

5. В форме списка документов "Назначение опроса" выбираем тип респондента пользователь и нажимаем Подобрать. Опрос это административный документ, с помощью которого выполняем назначение теста конкретному пользователю.

6. Выбираем пользователя из списка, записываем и проводим документ Назначение опроса. Опрос появятся в списке доступных для выполнения на начальной странице программы у авторизованного пользователя.

7. Нажимаем опрос, который хотим пройти на начальной странице программы. Если пользователем будет оператор и назвать опросы "Не работает интернет", "Не работает почта"... то получится служба поддержки. Документ тест это экземпляр конкретных ответов пользователя в данный момент связанный с событием прохождения - выполнения теста, который создается на основании опроса.

8. Открывается документ "Тест бинарное дерево" (новый документ - экземпляр прохождения, привязанный к пользователю-исполнителю и ко времени выполнения) на корневом (начальном) узле дерева вопросов - пользователь видит свой первый вопрос. Внизу под вопросом выводится история ответов пользователя.

9. Отвечаем например "Да" и видим следующий вопрос, а прошлый ответ попадает в историю.

10. Когда потенциал базы знаний исчерпан и мы попадаем на лист дерева решений, вариантов для выбора больше нет, выводится итог - наименование листового узла.

11. обработка "Проверка тестов" позволяет ознакомиться с завершенными результатами. Она может быть запущена из интерфейса "Главное - Проверка тестов".
Основные возможности:
-
Выбор теста для анализа: В верхней части формы расположено поле "Тест", в котором пользователь может выбрать любой документ ТестБинарноеДерево из системы.
-
Просмотр точной последовательности шагов, которые прошел пользователь. Этот режим не предназначен для ручной оценки, а служит для анализа логического пути респондента.
-
Визуализация: На экране отображается хронологическая история ответов в виде простого списка. Каждая строка содержит:
-
Порядковый номер шага.
-
Текст вопроса, который был задан.
-
Ответ пользователя ("-> Да" или "-> Нет").
-
-
Отображение результата: Если тест был завершен (пользователь дошел до финального узла), в конце списка выводится итоговый результат, например: ИТОГ: Это кит?.
-
Интерфейс: В этом режиме элементы для ручной оценки (поле для выставления оценки "Правильность" и кнопка "Оценить") автоматически скрываются, так как они не применимы к бинарной логике.
Пример вывода:

Описанная система хорошо протестирована и работает. Приветствуются замечания и выявленные проблемы классического функционала. Развитие точно будет.
TODO-лист
Решается задача: Реализовать механизм самообучения дерева с модерацией.
Реализовано на платформе 1С:Предприятие 8.3 (8.3.27.1559) Версия для разработчиков.
Разработка (модуль) называется "Бинарные тесты - деревья решений", версия 1.0 (1.0.0.1)
(https:// infostart.ru/profile/318390/), на Инфостарт выложена для скачивания полная информационная база со всеми полученными в процессе разработки тестовыми данными.
Адрес проекта на Гитхаб (там можно ознакомиться с исходным кодом конфигурации и скачать ее БинарныеТестыДеревьяРешений.cf):
https://github.com/Menestre1/binary-tests-decision-trees
РЕЗЮМЕ
Рад представить Вам первую версию нового модуля "Бинарные тесты - деревья решений". Этот инструмент разработан для создания и прохождения интерактивных тестов и сценариев, построенных по принципу дерева решений с ответами "Да/Нет".
Основная цель модуля — предоставить гибкий инструмент для диагностики, обучения и проверки знаний, где каждый следующий шаг зависит от предыдущего ответа пользователя.
1. Вид тестирования "Бинарное дерево". В отличие от обычных тестов со списком вопросов, эти тесты представляют собой интерактивный диалог. Вы запускаете тест, и система задает вам первый вопрос. Вы отвечаете "Да" или "Нет". В зависимости от вашего ответа, система задает следующий уточняющий вопрос, и так далее, пока не придет к финальному выводу или результату.
История ответов: Весь ваш путь по "веткам" дерева решений отображается в специальном поле "История ответов", чтобы вы всегда могли видеть, как пришли к текущему вопросу.
Результат: По завершении теста система показывает итоговый результат, к которому вы пришли, следуя по сценарию.
2. Администраторы и создатели тестов работают со справочником "Шаблоны бинарных деревьев", в котором они управляют сценариями тестирования. В отличие от старых "плоских" тестов, здесь вы создаете не просто список вопросов, а структуру связей между ними. Динамическая структура: Вы можете создавать "деревья" любой сложности. Каждый узел в дереве — это либо вопрос, либо финальный ответ (например, "Проблема решена" или "Необходимо заменить деталь").
Форма элемента справочника "Шаблоны бинарных деревьев" наглядно отображает всю структуру созданного дерева в текстовом виде. Вы можете видеть все ветки "Да" и "Нет" и легко проверять логику сценария.
Тестирование и отладка: В форме шаблона есть встроенные инструменты для быстрой проверки:
Кнопка "Тест": Автоматически создает и загружает в регистр тестовое дерево "Угадай животное", чтобы вы могли посмотреть, как работает система.
Кнопка "Проверить целостность": Проверяет, нет ли в вашем дереве "оборванных" веток или ссылок на удаленные вопросы.
Кнопка "Экспорт в файл": Позволяет выгрузить структуру вашего дерева в простой текстовый файл для документации или анализа.
3. Интеграция с "Назначением опросов". При создании документа "Назначение опросов" вы можете выбрать шаблон бинарного дерева. После того как вы укажете шаблон и список респондентов, при проведении документа "Назначение опросов" система автоматически создаст для каждого пользователя персональный, готовый к прохождению документ "Тест (бинарное дерево)". Важно, что в момент создания теста система копирует в него текущую структуру дерева из шаблона. Это означает, что даже если вы позже измените шаблон, уже назначенные тесты останутся неизменными, что гарантирует корректность прохождения.
В итоге, новая функциональность открывает широкие возможности для создания интерактивных сценариев. Она позволяет отойти от статичных списков вопросов и перейти к динамичным диалогам, которые ведут пользователя к результату самым коротким и логичным путем. Мы надеемся, что этот инструмент станет незаменимым помощником в вашей работе.
Информация о лицензии (MIT License)
Полный текст лицензии находится в файле LICENSE. Ниже приведено краткое изложение основных положений простым языком. Вам разрешается: Использовать бесплатно: Вы можете свободно и безвозмездно использовать эту разработку в любых своих проектах, включая личные, учебные и коммерческие. Изменять: Вы можете копировать, изменять, дорабатывать и адаптировать исходный код под свои нужды без каких-либо ограничений. Распространять: Вы можете включать данную разработку (или ее измененные версии) в состав своих конфигураций и распространять их дальше, в том числе на коммерческой основе. Вы обязаны: Включать текст лицензии: При любом распространении вашей конфигурации, содержащей эту разработку, вы должны включать в нее оригинальный текст лицензии MIT и это уведомление об авторских правах. Вам не запрещается: Держать исходный код ваших доработок закрытым. Лицензия MIT не "вирусная" и не требует, чтобы ваш конечный продукт тоже был открытым. Важные замечания: Без гарантий: Разработка предоставляется «как есть» ("as is"). Авторы не предоставляют никаких гарантий и не несут ответственности за любые возможные убытки, возникшие в результате ее использования. Зависимости: Данная разработка предназначена для использования в среде "1С:Предприятие" и требует наличия "Библиотеки стандартных подсистем" (БСП). Лицензии на платформу "1С" и БСП не являются частью этого проекта и регулируются правообладателем (фирмой "1С"). Уведомление об авторских правах (Copyright Notice) Это уведомление является неотъемлемой частью лицензии. Copyright (c) 2025, Сергей Космачев, Фёдор Космачев Просьба об указании авторства: Помимо формальных требований лицензии MIT, авторы будут благодарен, если при любом публичном использовании, демонстрации или упоминании данной разработки вы укажете активную ссылку на оригинальный репозиторий проекта: //infostart.ru/profile/318390/ Это поможет развитию проекта и позволит другим пользователям найти исходный код.
Авторы разработки:
Сергей Космачев, Фёдор Космачев
Обязательная ссылка для указания:
https: // infostart.ru/profile/318390/
Спасибо за использование данной разработки! Авторы будут благодарны за обратную связь и предложения по улучшению.
Реализовано на платформе 1С:Предприятие 8.3 (8.3.27.1559) Версия для разработчиков.
Вступайте в нашу телеграмм-группу Инфостарт