Проверка расширения 1С перед запуском в рабочую базу
Содержание
Программист принёс расширение: «Доработал печатную форму, всё работает». Вы подключили его в рабочую базу, а через час бухгалтер пишет, что проведение реализации стало занимать минуту. Чтобы протестировать расширение 1С без таких сюрпризов, проверяйте его на копии базы, по заранее составленному списку сценариев и до подключения к живым данным.
Расширение меняет поведение типовой конфигурации, но не трогает её код напрямую. Поэтому ошибки часто всплывают не в самой доработке, а на стыке с типовыми документами, правами и обновлениями. Ниже порядок, который закрывает эти места.
Сначала тестовая база: без неё результатам нельзя верить
Тест на пустой базе ничего не доказывает. Тест на рабочей базе опасен. Нужна копия, максимально похожая на «боевую».
Как сделать копию
- Выгрузите рабочую базу: в Конфигураторе
Администрирование → Выгрузить информационную базу(получится файл.dt). - Создайте новую пустую базу на том же сервере или локально и загрузите туда этот файл через
Администрирование → Загрузить информационную базу. - Проверьте, что платформа и релиз конфигурации в копии те же, что в рабочей базе.
Загрузка .dt требует монопольного доступа к целевой базе. Делайте её в новой базе, а не поверх рабочей.
Что поправить в копии, чтобы не навредить
В копии, развёрнутой с рабочих данных, легко отправить письмо клиенту или обмен в живой контур. Перед тестом отключите:
- 📧 регламентные задания, которые отправляют почту и уведомления;
- 🔄 обмены с другими базами, сайтом, банком;
- 📡 подключения к ЭДО и онлайн-кассам;
- 🔑 реальные пароли и токены интеграций.
Заметно упрощает жизнь пометка в названии: «ТЕСТ расширения». Её видно в заголовке окна, и никто не спутает базы.
Состав тестовых данных
Нужны не только «хорошие» документы. Заведите набор:
| Что взять | Зачем |
|---|---|
| Обычный документ с типовыми данными | Базовый сценарий |
| Документ с пустыми необязательными полями | Проверка на Неопределено |
| Документ с большим числом строк (сотни) | Скорость и память |
| Контрагент с нестандартными данными: длинное имя, иностранный | Границы полей |
| Пользователь с урезанными правами | Что видит не администратор |
Какие бывают проверки и что из них обязательно
Не всё нужно запускать каждый раз. Выбирайте по тому, что расширение делает.
| Вид проверки | Что показывает | Когда обязательна |
|---|---|---|
| Синтаксическая | Код компилируется, нет опечаток | Всегда |
| Ручная функциональная | Доработка делает то, что просили | Всегда |
| Регрессионная | Типовой функционал не сломан | Если расширение перехватывает типовые процедуры |
| Автоматическая | Те же проверки без человека | Если расширение будут часто менять |
| Нагрузочная | Скорость на реальных объёмах | Если трогает проведение, отчёты, запросы |
| Совместимость | Работа после обновления конфигурации | Перед каждым обновлением |
| Права | Видимость и доступность для ролей | Если добавлены объекты или команды |
Начните с проверки конфигурации
Самый дешёвый тест делается за минуту. В Конфигураторе откройте Конфигурация → Проверка конфигурации и отметьте проверки, относящиеся к синтаксису и вызовам. Для расширений в диалоге есть отдельные настройки, посмотрите их при запуске. Платформа найдёт несуществующие методы, неверные вызовы и необъявленные переменные.
Если проверка ругается на расширение, дальше можно не идти: сначала исправления.
Ручное тестирование: что пройти руками
Ручной прогон нужен всегда. Автоматика ловит только то, что вы догадались описать.
Как составить сценарии
Берите не абстрактные «проверить документ», а конкретные действия пользователя от начала до конца. Хороший сценарий записывается так: что открыть, что нажать, что должно получиться.
Пример для расширения, которое добавляет реквизит «Номер заказа клиента» в реализацию:
- Создать документ реализации, заполнить на основании заказа.
- Убедиться, что новый реквизит появился на форме и заполнился.
- Провести документ , проверить, что проведение не изменилось.
- Открыть печатную форму, найти в ней новое поле.
- Скопировать документ , проверить, что реквизит скопировался.
- Пометить на удаление и снять пометку.
- Открыть список документов и проверить сортировку и отбор по новому полю.
Чек-лист на любую доработку
Журнал регистрации после прогона
Отдельный полезный шаг: сразу после ручного прогона откройте журнал регистрации (Администрирование → Журнал регистрации в Конфигураторе или в режиме 1С:Предприятие через меню сервисных функций) и отберите события уровня «Ошибка». Иногда пользователь ничего не заметил, а в журнале уже лежит исключение из фонового задания.
Автоматическое тестирование: инструменты и пример
Автоматика окупается, когда расширение живёт долго и обновляется. Один раз описали сценарии, дальше они прогоняются за минуты.
Два подхода
- 🧪 Модульные тесты. Проверяют отдельные процедуры и функции кода: подали вход, сравнили результат. Для 1С популярны открытые фреймворки вроде xUnitFor1C и YAxUnit. Они запускаются в самой платформе.
- 🖱 Сценарные тесты. Имитируют работу пользователя в интерфейсе: открыть форму, заполнить, нажать. Для этого применяют Vanessa Automation, она читает сценарии на языке Gherkin.
Оба инструмента бесплатные и живут на GitHub. Конкретные команды установки зависят от версии, поэтому берите их из документации проекта, а не из памяти.
Как выглядит сценарий
Сценарий Vanessa Automation читается почти как обычный текст:
Функционал: Реквизит "Номер заказа клиента" в реализации
Сценарий: Реквизит заполняется при вводе на основании заказа
Когда я открываю список документов "Реализация товаров и услуг"
И я создаю документ на основании заказа клиента
Тогда поле "Номер заказа клиента" заполнено
И я провожу документ без ошибок
Конкретные фразы берутся из библиотеки шагов инструмента. Придумывать свои не нужно: достаточно выбрать готовые.
Что автоматизировать в первую очередь
Не пытайтесь покрыть всё. Начните с трёх вещей:
- Самый частый сценарий (создание и проведение главного документа).
- Всё, что расширение перехватывает у типовой конфигурации.
- Ошибки, которые уже случались: каждый найденный баг превращается в тест, чтобы не вернуться.
Автотесты гоняйте на той же тестовой копии. Сценарии, создающие документы, оставляют после себя данные, поэтому после прогона базу удобно возвращать к исходной выгрузке.
Проверка скорости: как найти узкие места
Расширение может работать правильно, но тормозить. Особенно часто виноваты запросы в цикле, обращение к реквизитам через точку и тяжёлые подписки на события.
Простой замер без инструментов
Возьмите документ с большим числом строк. Проведите его до подключения расширения и после, замерьте время секундомером. Повторите три раза, чтобы отсечь случайные колебания. Если разница больше нескольких секунд на типовом документе, ищите причину.
Что смотреть дальше
- 📊 Технологический журнал. Он пишет долгие вызовы и запросы к СУБД. Настраивается файлом
logcfg.xmlв каталоге конфигурации платформы. Фильтруйте по длительности, чтобы журнал не раздулся. - 🔍 Замер производительности. Встроенные средства платформы показывают, какие процедуры занимают время.
- 🗄 Блокировки. Если расширение пишет данные в проведении, проверьте, не появились ли ожидания на блокировках при работе нескольких пользователей.
Включение технологического журнала на рабочем сервере увеличивает нагрузку на диск. Включайте его на тестовой копии или на короткое время и с фильтром.
Типичные причины тормозов в коде расширений
| Симптом | Частая причина |
|---|---|
| Проведение растёт линейно с числом строк | Запрос внутри цикла по строкам |
| Открытие формы долгое | Тяжёлая процедура в ПриСозданииНаСервере |
| Список документов подвисает | Вычисляемое поле, считаемое по каждой строке |
| Ожидания при параллельной работе | Лишние блокировки в обработчике проведения |
Совместимость: как расширение переживёт обновление
Расширения ломаются чаще всего не при подключении, а на следующем обновлении типовой конфигурации. Разработчик поменял процедуру, которую вы перехватывали, и ваше изменение перестало работать или стало мешать.
Порядок проверки перед обновлением
- Сделайте копию рабочей базы вместе с подключённым расширением.
- Обновите копию до нового релиза конфигурации по штатной процедуре.
- Откройте список расширений:
Конфигурация → Расширения конфигурации. Расширения, которые перестали быть совместимыми, помечаются предупреждением. - Запустите проверку конфигурации ещё раз.
- Повторите ручной и автоматический прогон из предыдущих разделов.
Только после этого обновляйте рабочую базу.
На что смотреть в первую очередь
- 🧩 Перехватываемые методы: у типовой процедуры могли измениться параметры или поведение.
- 🗂 Объекты, на которые ссылается расширение: их могли переименовать или удалить.
- 📝 Заимствованные формы: если типовая форма изменилась, заимствованная копия в расширении может отстать от неё.
- 🔖 Режим совместимости расширения. Он задаётся в свойствах расширения и должен соответствовать платформе, на которой вы работаете.
Что чаще всего идёт не так при тестировании
Этот раздел не про шаги, а про привычки, из-за которых пропускают дефекты.
- 🚫 Тестирует автор. Разработчик проверяет только то, что предусмотрел. Дайте пройти сценарии тому, кто будет работать: бухгалтеру, менеджеру.
- 🚫 Только администратор. У пользователя с полными правами всё открывается. Ошибка «Недостаточно прав» проявится у рядового сотрудника.
- 🚫 Тест на чистой базе. Без реальных справочников и остатков не видны ни скорость, ни странные данные.
- 🚫 Нет повторного прогона после правок. Исправили один дефект, сломали соседний. После каждой правки пройдите хотя бы основной сценарий.
- 🚫 Тест в рабочей базе «на минуточку». Побочные эффекты (отправка писем, обмены) срабатывают по-настоящему.
Как зафиксировать результаты
Если результаты тестов остаются в голове, при следующем обновлении всё придётся начинать заново. Достаточно простой таблицы.
Что записывать
| Поле | Пример |
|---|---|
| Сценарий | Ввод реализации на основании заказа |
| Версия платформы и конфигурации | Те, что стоят в тестовой базе |
| Версия расширения | Номер из свойств расширения |
| Результат | Прошёл / не прошёл |
| Что наблюдали | Текст ошибки дословно, скриншот |
| Кто и когда проверял | Фамилия, дата |
Текст ошибки копируйте целиком, в обратных кавычках, например: Поле объекта не обнаружено. По точной формулировке разработчик найдёт причину быстрее, чем по описанию «не работает
».
Итоговое решение
В конце составьте короткий вывод: можно подключать, нужны доработки, откладываем. Подпись заказчика или ответственного избавит от споров, если позже что-то пойдёт не так.
Перед подключением расширения в рабочую базу сделайте резервную копию и согласуйте окно работ с пользователями. Подключение расширения требует обновления конфигурации базы данных, и в этот момент работа в базе приостанавливается.