Немного предыстории
Я давно работаю с 1С, в основном с УПП, обычные формы.
И, думаю, многим знакома ситуация, когда обновили конфигурацию, или что-то поменяли в коде "по-мелочи", и вроде всё ок...
- а потом начинается…
- где-то документ не проводится....
- где-то форма падает
- где-то поменялись движения 😱😱😱
- а где-то "всё работает", но уже не так 😅
И, конечно пользователи начинают "немножко" нервничать:
"вчера всё работало, сегодня нет!!!", "вы что там опять обновили???" и т.д.))
Ну в общем, вы поняли)) Все с этим сталкивались, классика жанра.
Поэтому конечно стали смотреть в сторону существующих инструментов тестирования 1С.
Казалось бы, все уже придумано до нас. Но...
Почему не подошли классические инструменты тестирования
Да, в экосистеме 1С уже есть отличные инструменты автоматизации, например Vanessa Automation. Это мощное решение для UI-сценариев, CI/CD и регрессионного тестирования.
Но у нас была немного другая задача.
Нужен был простой инструмент, который можно быстро подключить практически к любой базе и сразу начать использовать — особенно в УПП и с обычными формами.
Хотелось:
- взять реальные документы из базы
- быстро прогнать их после изменений
- посмотреть, где что сломалось
Без подготовки BDD-сценариев, тестовых данных и сложной инфраструктуры.
В чём отличие подхода
Vanessa Automation — это инструмент сценарного тестирования.
SmokeLab — это скорее инструмент диагностики и “дымового” тестирования конфигурации.
Он позволяет:
- проверять запись и проведение объектов
- анализировать изменения “до / после”
- искать побочные эффекты
- проверять открытие обычных форм
- быстро прогонять реальные документы из базы
Особенно полезно после обновлений, рефакторинга и изменений проведения.
Похожий функционал есть в ИнструментахРазработчика - Тестирование Метаданных, но он очень сырой и скудный по функционалу.
Описание возможностей по пунктам:
- Проверка документов, справочников, записи и проведения объектов, COM-проверка (режим НаСервере)
- Отбор по условиям, исключение и автоматический подбор объектов для проверки
- Проверка обычных и управляемых форм, форм списка/выбора и модифицированности форм
- Анализ изменений объектов, реквизитов и табличных частей, движений
- Моделирование изменений объектов
- Логирование, сохранение логов по датам
- Профили настроек и динамический период проверки
- Ручной, регламентный и bat-запуск
- Отправка результатов теста через Email, Telegram, Yandex Messenger, журнал регистрации, файл на сервере.
- Поддержка безопасного хранения чувствительной информации в формате
#secure(БезопасноеХранилищеДанных)
Проверка документов, справочников
Поддерживаются все варианты записи/проведения документов и справочников, в т.ч. с откатом транзакции (безопасная проверка)

Добавлена возможность запускать тест в отдельном сеансе через COM-соединение
Это позволяет:
- поймать ошибки, которые не видны в текущем сеансе
- проверить поведение "как на сервере"
Отбор по условиям, исключение и автоматический подбор объектов для проверки
Заполнять список можно:
- Вручную
- Из движений указанных регистров за указанный период (автоматически)
- Все документы из метаданных (или только проведенные)
- Все справочники из метаданных

При заполнении будет выбрано указанное количество объектов (для документов - с учетом выбранного периода)
При помощи условия запроса (произвольная строка условия, подставляется в запрос выборки) можно ограничить выборку

Можно также исключить лишние объекты через вкладку "Исключения"

Проверка открытия форм
Инструмент открывает формы документов и справочников и проверяет:
- открывается ли вообще форма
- нет ли модифицированности формы при открытии
- нет ли ошибок при открытии
Форма документа открывается на 1 секунду интерактивно (для того чтобы успело отработать ОбновлениеОтображения) и сразу закрывается. Также проверяются формы списка и выбора. Вот такие бывают ситуации..


Анализ изменений объектов, реквизитов и табличных частей, движений
Очень полезная штука.
Инструмент:
- снимает состояние документа (справочника)
- проводит (записывает)
- сравнивает
И показывает:
- что поменялось
- где поменялось (реквизиты, табличные части)
- какие движения изменились

Моделирование изменений документов
Можно задать код, который выполнится при записи объекта, и проверить его поведений (изменились ли реквизиты, движения и т.д.). Т.е. поле для экспериментов)
Желательно конечно делать это в режиме "отката транзакции"

Например:
Объект.ОтражатьВБухгалтерскомУчете = Ложь; Объект.ЗаполнитьЦены();
И посмотреть:
- как это повлияет на документ
- какие движения изменятся
Можно вызывать экспортную функцию модуля объекта, проверить результат, при необходимости ВызыватьИсключение. Вобщем вариантов использования масса!
Внимание! Выполнение произвольного кода потенциально опасно!
Поэтому:
- включается отдельной галкой
- лучше использовать в тестовой базе
- и понимать, что делаешь!
Логирование
Всё, что происходит во время теста:
- этапы
- ошибки
- документы
пишется в JSON-лог, который можно сохранить в файл.

Также все логи выполнения и логи ошибок сохраняются в папке обработки с разбивкой по папкам с датой.
Профили настроек и динамический период проверки
Есть возможность использовать профили запуска.
Можно хранить разные настройки:
- для DEV
- для TEST
- для ночных прогонов
- для быстрых проверок
- для проверки обменов и т.д.
Не нужно каждый раз руками перенастраивать обработку.

Для автоматических сценариев и регламентных запусков добавлен параметр:
ПериодПрофиля
Он позволяет задавать период не фиксированными датами, а строковым шаблоном.
Примеры:
today
yesterday
current-week
previous-week
current-month
previous-month
last-7d
last-10d
last-24h
Также поддерживается фиксированный интервал:
2026-05-01T00:00:00/2026-05-31T23:59:59
При открытии обработки или запуске регламентного задания SmokeLab автоматически:
- анализирует
ПериодПрофиля - рассчитывает даты
- заполняет
НачПериодаиКонПериода
При этом приоритет остаётся за реальными полями дат:
если пользователь явно указал даты — они не перезаписываются.

Ручной, регламентный и bat-запуск
Есть возможность запускать SmokeLab как обычную внешнюю обработку, так и извне:
- через bat/cmd
- через конфигуратор
- с выбором сценария
(пример ключ запуска с указанием обработки и файла настроек:
"/Execute "Z:\SmokeLab\SmokeLab.epf" /C "Z:\SmokeLab\settings Тест.json")
Теперь можно:
- делать ночные проверки
- запускать smoke после обновления
- подключать к scheduler
- использовать в CI/CD

Добавлена полноценная поддержка запуска через регламентные задания.
Для этого используются отдельные текстовые макеты:
НастройкиСценарияРегламентногоЗаданияНастройкиОповещенийРегламентногоЗадания
В макетах хранится JSON с настройками запуска для регламентного задания.
Это позволяет:
- полностью запускать SmokeLab без UI
- делать ночные прогоны
- использовать scheduled smoke-проверки
- выполнять автопроверку после обновлений
Ограничения регламентного режима запуска - нет проверки открытия форм документов и справочников (по понятным причинам) и режима COM-соединения (т.к. регламентное задание выполянется на сервере, в нем нет необходимости).

Фактически обработка уже может работать как небольшой automation runner.
Отправка результатов теста
Сейчас поддерживаются:
- Telegram
- Yandex Messenger
- Файловый каталог
- Журнал регистрации 1C
Плюс добавлена:
- JSON-лог выполнения
- отдельный лог ошибок
- автоматическое хранение логов по датам в каталоге на диске
Пример:
logs\
|__ 2026-05-07\
|__ result_143000.json
|__ errors_143000.json
На практике оказалось очень удобно для анализа ночных прогонов.
Настройки оповещений хранятся в отдельном файле notify.json, путь к которому прописывается в файле настроек (для регламетного задания из макетов обработки)

Хранение чувствительных данных через #secure
В процессе развития SmokeLab появилась проблема хранения чувствительных данных:
- токенов Telegram
- API-ключей Yandex Messenger
- SMTP-паролей
- параметров COM-подключения
Хранить такие данные в открытом виде:
- в JSON
- в макетах
- в профилях
не очень хотелось.
В результате был добавлен механизм ссылок на безопасное хранилище.
Требуется наличие типового регистра сведений "БезопасноеХранилищеДанных" в конфигурации!
Теперь вместо реального значения можно указывать:
#secure:SmokeLab/TelegramBotToken
#secure:SmokeLab/SMTPPassword
#secure:SmokeLab/COMPassword
#secure:SmokeLab/COMServer
#secure:SmokeLab/COMBase
При запуске SmokeLab автоматически:
- распознает
#secure - получает значение из БезопасногоХранилищаДанных
- подставляет его в настройки
В результате:
- конфиги можно хранить в git
- notify.json не содержит секретов
- макеты регламентных заданий не содержат паролей в открытом виде
Итог
Изначально это был "маленький инструмент для себя".
Но в итоге получился довольно универсальный помощник, который позволяет:
- быстро прогонять документы
- находить ошибки
- анализировать изменения
- проверять формы
- экспериментировать со сценариями
Инструмент не является заменой систем автотестирования, а скорее дополняет их, позволяя быстро анализировать поведение документов на реальных данных.
Если кому-то окажется полезным — буду рад и спасибо за лайк! 👍
Проверено на следующих конфигурациях и релизах:
- Управление производственным предприятием, редакция 1.3, релизы 1.3.274.1
Вступайте в нашу телеграмм-группу Инфостарт