В 2026 году вышел продукт Infostart MagicInput, расширяющий механизм ввода по строке в 1С. Ключевая функциональность строится на переопределении обработчика ОбработкаПолученияДанныхВыбора. Для проверки логики подбора предусмотрен метод ПолучитьДанныеВыбора(), который программно эмулирует запрос данных — это делает код удобным для юнит-тестирования. Также важно учитывать, что данный обработчик является критическим: любая ошибка в нём приводит к аварийному завершению сеанса 1С, поэтому покрытие тестами здесь становится не рекомендацией, а обязательным требованием.
Для автоматизации тестирования был выбран инструментарий YaxUnit (прекрасный инструмент, рекомендую). За первые два часа было написано около 30 тестов, в дальнейшем их количество выросло до более 70, при этом сами тесты стали более детальными и глубже проверяли результаты. Важно отметить, что все тесты жёстко привязаны к тестовой конфигурации и корректно отрабатывают только в ней, поэтому перед выпуском релизной версии они полностью удаляются из поставки.


Значительная часть тестов появилась после обнаружения ошибки и последующего разбора её причин. На практике оказалось очень удобно разрабатывать по схеме TDD — сначала пишется тест, затем код. Такой подход позволил быть значительно более уверенным в доработках, проводить крупный рефакторинг и реализовывать сложные изменения с твёрдой гарантией, что всё продолжает работать корректно. Именно об этом мне ранее рассказывали на конференциях коллеги, которые уже пришли к полноценному тестированию в своих проектах, но ранее я это не принимал и не понимал, пока не столкнулся с этим на собственном опыте.
Теперь уже при разработке нового функционала сразу пишу тесты, которые его проверяют. Это вошло в привычку и стало неотъемлемой частью рабочего процесса — тесты пишутся параллельно с основным кодом или даже на шаг вперёд, что позволяет сразу отсекать ошибки на ранних этапах. Хорошо, когда юнит-тесты пишутся сразу, и вдвойне хорошо, когда проект под это подходит — как MagicInput.
На практике тесты показали свою эффективность в предотвращении ошибок: продукт стал стабильнее, регрессии перестали возникать неожиданно. То, что раньше требовало часов ручного тестирования и отладки, теперь отлавливается за секунды автоматическим прогоном.
Универсальные тесты
Решение универсальное и устанавливается на множество конфигураций, в каждой из которых могут быть свои обработчики и особенности. Появилась идея дать возможность пользователю проверить работу на тестовой базе на своих объектах, чтобы на раннем этапе выявить потенциальные проблемы до внедрения в боевую среду. На этом этапе делаю первые шаги: реализовал поиск по полному наименованию и коду, проверяю, чтобы обработчик не падал с ошибкой и укладывался в тайминги — 0,5 секунды для перечислений и 2 секунды для остальных объектов. Тестов будет столько, сколько объектов в вашей конфигурации, — вы можете установить YaxUnit и просто прогнать их на своей базе.

При необходимости разработчик может подкорректировать тесты (модуль ИВВ_ТестыУниверсальные) или тайминги под свои реалии — сейчас они сделаны минимально, чтобы уменьшить ложные срабатывания.
Вступайте в нашу телеграмм-группу Инфостарт