При активной разработке в крупных конфигурациях, таких как 1С:ERP, Комплексная автоматизация или Управление торговлей, программисты неизбежно сталкиваются с проблемой «хрупкости» доработок. Фирма «1С» выпускает обновления с высокой интенсивностью, часто меняя структуру метаданных: переименовываются регистры, удаляются реквизиты, меняются типы данных и логика работы процедур в общих модулях. Если изменения в основной конфигурации еще можно отследить при сравнении и объединении, то расширения и, особенно, сотни внешних отчетов и обработок превращаются в «черный ящик», который может «сломаться» в любой момент после обновления.
В данной статье мы разберем современные механизмы контроля качества и автоматизации тестирования, которые позволяют минимизировать ручную проверку и гарантировать работоспособность системы после очередного релиза платформы или конфигурации.
Начнем с самого простого, но эффективного способа, который не требует написания сложных сценариев. Рассмотрим ситуацию, когда у нас есть сотни внешних файлов (.epf и .erf). Проверять каждый вручную — задача невыполнимая. Проанализируем подход, позволяющий выявить ошибки компиляции массово.
Рассмотрим шаги для реализации:
Этот метод позволяет за один проход выявить все объекты, которые ссылаются на удаленные или переименованные реквизиты и методы. Если Справочник.Номенклатура.РеквизитСтарый был удален, система подсветит все программные модули, где он используется.
Если мы хотим быть уверены не только в том, что код компилируется, но и в том, что отчеты корректно формируются, а формы открываются без ошибок, нам не обойтись без сценарного тестирования. Разберем наиболее популярный инструмент — Vanessa-Automation.
Инструмент позволяет записывать действия пользователя (клик по кнопке, ввод текста) и превращать их в исполняемые сценарии на языке Gherkin (человекочитаемый формат). Выясним, как это работает на практике:
Сценарий для проверки внешнего отчета может выглядеть следующим образом:
Функционал: Проверка формирования внешнего отчета "Продажи"
Сценарий: Открытие и формирование отчета
Дано Я открываю внешнюю обработку "C:\Reports\Sales.erf"
И в форме "ФормаОтчета" я нажимаю кнопку "Сформировать"
Тогда я жду появления текста "Итого по отчету" в течение 20 секунд
Преимущества данного подхода:
Для программиста часто важнее проверить не интерфейс, а корректность расчетов в модулях. Рассмотрим подход xUnit, где тесты пишутся на языке 1С. Это быстрее, чем имитировать клики мышкой, и позволяет проверять экспортные функции и процедуры.
Представим, что у нас есть внешняя обработка с функцией расчета скидки. Мы можем написать тестовый модуль, который будет вызывать эту функцию с разными параметрами. Посмотрим на пример кода теста:
Процедура ИсполнитьТест_ПроверкаРасчетаСкидки() Экспорт
// Подготовка данных
ОбработкаОбъект = ВнешниеОбработки.Создать("C:\Distr\DiscountCalc.epf");
Цена = 1000;
Процент = 10;
// Выполнение действия
Результат = ОбработкаОбъект.РассчитатьСуммуСоСкидкой(Цена, Процент);
// Проверка результата (Утверждение)
ЮТТесты.ПроверитьРавенство(900, Результат, "Сумма со скидкой рассчитана неверно!");
КонецПроцедуры
Использование xUnitFor1C позволяет автоматизировать проверку бизнес-логики. Проанализируем ситуацию: после обновления ERP изменился алгоритм расчета НДС в общем модуле. Если ваша доработка использует этот модуль, xUnit-тест сразу покажет отклонение в результатах расчетов еще до того, как пользователи заметят ошибку.
Современный механизм контроля доработок немыслим без использования 1C:Enterprise Development Tools (EDT). В отличие от классического конфигуратора, EDT хранит весь код в текстовом виде. Это дает колоссальное преимущество при обновлении:
Чтобы не проверять каждую разработку «по новой», внедрим систему учета изменений:
Подведем итог: для эффективного контроля в условиях частых обновлений ERP необходимо уходить от ручного тестирования к автоматизированному. Начните с внедрения Vanessa-Automation для массовой проверки запускаемости отчетов и xUnitFor1C для критически важных участков кода. Это сэкономит сотни часов рутинной работы и защитит систему от внезапных сбоев.