Проверка базы и конфигурации 1С: от ручных сценариев до автотестов

· 11 мин

Содержание

Чтобы протестировать 1С на ошибки, начните с трёх проверок на копии базы: Администрирование → Тестирование и исправление в Конфигураторе (целостность данных), Конфигурация → Проверка конфигурации (ошибки кода и метаданных) и прогон ключевых сценариев пользователей — ввод и проведение документов, формирование отчётов, обмен. Дальше подключают автотесты, замер производительности и регрессионный прогон после каждого обновления.

Типичная ситуация: после обновления релиза у бухгалтера перестала проводиться реализация, а у кладовщика «поплыли» остатки. Ошибку нашли бы за полчаса, если бы перед переносом в рабочую базу кто-то проверил десяток основных операций. Ниже — порядок такой проверки для файловых и клиент-серверных баз на платформе 8.3.

Что подготовить до начала проверок

Тестировать в рабочей базе нельзя. Любой пробный документ создаёт движения по регистрам, а исправление ошибок в Конфигураторе требует монопольного доступа.

Минимальная подготовка:

  1. 📦 Копия базы. Выгрузите информационную базу в .dt (Администрирование → Выгрузить информационную базу в Конфигураторе) и загрузите в отдельную тестовую базу. Для клиент-серверного варианта можно восстановить бэкап СУБД в новую базу на кластере.
  2. 🏷️ Пометка тестовой базы. Измените заголовок окна или имя базы в списке, чтобы пользователи не перепутали её с рабочей. В типовых конфигурациях при запуске копии появляется вопрос о перемещении базы — ответьте, что это копия: регламентные задания и обмены в ней отключатся.
  3. 🔌 Отключение внешних связей. В копии отключите отправку почты, ЭДО, обмены с другими базами и загрузку из банка. Иначе тестовый документ может уйти контрагенту.
  4. 📝 Список сценариев. Выпишите 10–20 операций, без которых работа встанет: поступление, реализация, оплата, расчёт зарплаты, закрытие месяца , печать основных форм, обмен с сайтом или кассой.
  5. 🧾 Эталонные цифры. До изменений сформируйте в копии оборотно-сальдовую ведомость, остатки по складам и расчётный листок за последний закрытый месяц. Сохраните их в файл — с ними будете сравнивать результат.

Для файловой базы до запуска Конфигуратора полезно проверить физическую целостность файла 1Cv8.1CD утилитой chdbfl.exe из каталога bin платформы. Она работает только с закрытой базой: попросите пользователей выйти.

Проверка целостности данных, конфигурации и кода

Это первый слой тестирования: он находит битые ссылки, нарушенные итоги и ошибки в модулях без участия пользователя.

Тестирование и исправление информационной базы

В Конфигураторе откройте Администрирование → Тестирование и исправление. Режим требует монопольного доступа, поэтому на рабочей базе его запускают только в нерабочее время.

ФлажокЧто проверяетКогда включать
Реиндексация таблицПерестраивает индексыПри ошибках сортировки и поиска
Проверка логической целостностиСтруктуру данных информационной базыВсегда
Проверка ссылочной целостности«Битые» ссылки на удалённые объектыВсегда
Пересчёт итоговИтоги регистров накопления и бухгалтерииПри расхождении остатков в отчётах
Сжатие таблицРазмер файловой базыПо необходимости
Реструктуризация таблицПолное пересоздание таблицТолько при серьёзных сбоях, долго

Сначала запустите режим «Только проверка». Посмотрите протокол и только потом решайте, исправлять ли. Для битых ссылок выбирайте «Создавать объекты» — так видно, какие документы ссылаются на пропавший элемент, и их можно поправить вручную. Вариант «Удалять ссылки» молча очищает реквизиты.

Проверка конфигурации

В Конфигураторе: Конфигурация → Проверка конфигурации. Отметьте логическую целостность, поиск некорректных ссылок и синтаксический контроль модулей для нужных режимов запуска (тонкий клиент, сервер, веб-клиент). Протокол покажет вызовы несуществующих методов, неверные типы реквизитов и обращения к удалённым объектам.

Те же проверки запускаются из командной строки — удобно для ночной автоматической проверки:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\TestBase" /N"Администратор" /P"" ^
  /CheckModules -ThinClient -Server ^
  /Out"D:\Logs\check.txt"

Номер платформы в пути подставьте свой.

Встроенные проверки учёта

В типовых конфигурациях есть свои механизмы. В 1С:Бухгалтерии 3.0 — Отчёты → Анализ учёта → Экспресс-проверка ведения учёта: она находит пропуски счетов-фактур, отрицательные остатки, нарушения последовательности. В ЗУП 3.1 сверку начислений удобно делать по своду начислений против эталона, снятого заранее.

Поиск ошибок в коде доработок

Для типовой конфигурации без изменений этот этап короткий: достаточно проверки конфигурации. Если есть доработки, ошибки чаще всего прячутся в них.

Что делать:

  • 🔎 Сравнение с поставщиком. Конфигурация → Сравнить, объединить с конфигурацией поставщика показывает, какие объекты изменены. Именно их проверяйте в первую очередь.
  • 🧩 Расширения. Откройте Конфигурация → Расширения конфигурации и проверьте, что все расширения применяются к новому релизу без ошибок. Расширение, написанное под старую версию, после обновления может перестать подключаться.
  • 🐞 Отладчик. Включите отладку в настройках Конфигуратора и поставьте точку останова в процедуре, где возникает ошибка. В пошаговом режиме видно значения переменных и момент, когда ссылка становится пустой.
  • 📜 Журнал регистрации. Администрирование → Журнал регистрации в Конфигураторе или в режиме Предприятия. Фильтр по уровню «Ошибка» за нужный период показывает текст исключения, пользователя и объект.
  • 🧪 Статический анализ. SonarQube с плагином BSL Language Server находит запросы в цикле, неиспользуемые переменные и ошибки, которые синтаксический контроль пропускает.

Прежде чем лезть в код, воспроизведите ошибку на тестовой базе под тем же пользователем. Половина «ошибок программы» оказывается настройками прав или данных одной записи.

Ручное тестирование: прогон пользовательских сценариев

Автоматические проверки не скажут, что в печатной форме съехала сумма прописью. Это видит только человек, который проходит операцию от начала до конца.

Как построить прогон

Для каждого сценария из списка зафиксируйте три вещи: исходные данные, действие и ожидаемый результат. Пример:

СценарийДействиеОжидаемый результат
Реализация товаровВвести и провести на 3 позиции, 120 000 ₽ с НДС 20%Проводки Дт 62 Кт 90.01 на 120 000, Дт 90.03 Кт 68.02 на 20 000, остаток на складе уменьшился
Оплата от покупателяЗагрузить выписку, провести поступлениеДолг по 62 закрыт, в акте сверки нули
Печать УПДОткрыть печать из документаВсе реквизиты заполнены, сумма прописью верная
Закрытие месяцаВыполнить обработкуВсе этапы зелёные, 90.09 и 99 закрыты

Проверка 120 000 ₽: НДС 20% внутри суммы = 120 000 × 20 / 120 = 20 000 ₽.

Что проверять в каждом модуле

  • 📄 Документы: запись, проведение, отмена проведения, повторное проведение, ввод на основании, пометка на удаление.
  • 📊 Отчёты: формирование за короткий и длинный период, отборы, расшифровка до документа, вывод в Excel.
  • 🖨️ Печатные формы: реквизиты организации и контрагента, итоги, подписи, многостраничные документы.
  • 👥 Права: вход под пользователем с урезанной ролью. Часть ошибок «Нарушение прав доступа» видна только так — администратор их не встретит.
  • 🌐 Режимы клиента: если базой пользуются через веб-клиент или тонкий клиент по HTTP, пройдите сценарии и там.

Если в рабочей базе нужно проверить проведение «на живом» документе, не проводите копию существующего документа без необходимости: она задвоит движения. Если всё же провели — сразу отмените проведение и удалите копию.

Минимальный прогон после изменений
Выполнено: 0 / 6

Автотесты: Vanessa Automation, YAxUnit и сценарное тестирование

Ручной прогон 20 сценариев занимает полдня. После третьего обновления за квартал его начинают пропускать. Автотесты решают эту проблему: один раз записали — дальше прогоняете за минуты.

Механизм платформы

Платформа 8.3 умеет запускать клиент в двух ролях: менеджер тестирования (/TestManager) и клиент тестирования (/TestClient). Менеджер управляет формами клиента программно: открывает, заполняет поля, нажимает кнопки. На этом механизме построены все популярные инструменты.

Инструменты

ИнструментЧто тестируетКак пишутся тестыКому подходит
Vanessa AutomationПользовательские сценарии через интерфейсЯзык Gherkin («Дано — Когда — Тогда»), можно записывать действияВнедренцам, тестировщикам, аналитикам
YAxUnitОтдельные процедуры и функцииМодульные тесты на встроенном языке в расширении, среда EDTРазработчикам
1С:Сценарное тестированиеСценарии по интерфейсуЗапись и редактирование сценариевКомандам на типовых продуктах 1С
SonarQube + BSL Language ServerКачество кода, а не поведениеСтатический анализ, сотни правилКомандам с собственной доработкой

Пример сценария Vanessa Automation в упрощённом виде:

Функционал: Реализация товаров

Сценарий: Проведение реализации
  Дано Я открываю основную форму списка документа "РеализацияТоваровУслуг"
  И я нажимаю на кнопку "Создать"
  И в поле "Контрагент" я ввожу текст "ООО Ромашка"
  И я нажимаю на кнопку "Провести и закрыть"
  Тогда я жду закрытия окна в течение 20 секунд

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

С чего начать автоматизацию

  1. Возьмите 5 сценариев, которые чаще всего ломались.
  2. Запишите их в Vanessa Automation на тестовой базе с фиксированными данными.
  3. Прогоните после ближайшего обновления и сравните с ручной проверкой.
  4. Добавляйте по 2–3 сценария после каждой найденной ошибки — так покрытие растёт там, где реально больно.

Проверка обменов данными

Ошибки обменов коварны: документ уходит, но приходит с пустым реквизитом или дважды. Обнаруживается это через месяц, при сверке.

Порядок проверки:

  1. 🔁 Поднимите две тестовые копии — источник и приёмник — и настройте между ними синхронизацию заново или с копией настроек.
  2. ➕ Создайте в источнике по одному объекту каждого типа, который участвует в обмене: контрагент, номенклатура, документ.
  3. ▶️ Выполните синхронизацию вручную и сравните объекты: реквизиты, табличные части, суммы.
  4. ✏️ Измените объект в источнике и синхронизируйте ещё раз. В приёмнике должен обновиться тот же объект, а не появиться второй.
  5. ❌ Пометьте объект на удаление и проверьте, как это отразилось в приёмнике.
  6. 📋 Проверьте журнал регистрации обеих баз с отбором по событиям обмена данными.

Дубли чаще всего появляются, когда объекты в двух базах заведены вручную и не сопоставлены. Если правила обмена ищут по ИНН или коду, проверьте объекты с пустым или повторяющимся значением этого поля.

Диагностика: выберите симптом

Тестирование производительности и нагрузки

Жалоба «1С тормозит» — тоже ошибка, и её тоже тестируют, но с цифрами.

Замер производительности

В Конфигураторе запустите базу в режиме отладки, откройте Отладка → Замер производительности и выполните медленную операцию. Замер покажет, какие строки кода заняли больше всего времени. Обычно это запрос в цикле или обращение к реквизиту через точку в большой выборке.

Технологический журнал

Для клиент-серверной базы настройте технологический журнал файлом logcfg.xml в каталоге conf платформы. Собирайте события долгих запросов и управляемых блокировок, чтобы увидеть ожидания на блокировках и тяжёлые запросы к СУБД.

Технологический журнал без отбора по длительности за несколько часов заполняет диск сервера. Ставьте порог длительности и ограничивайте срок хранения логов.

Нагрузка

  • 🧮 Тест Гилева — быстрая оценка однопоточной производительности сервера и сравнение «до и после» смены железа.
  • 👥 Тест-центр из 1С:КИП — эмуляция работы десятков пользователей одновременно. Нужен перед переходом с 10 на 100 активных пользователей.
  • ⏱️ Методика APDEX — оценка времени ключевых операций глазами пользователя: задают целевое время (например, проведение реализации — 2 секунды) и считают долю укладывающихся замеров.

Регрессионная проверка после обновления

Регрессия — когда после обновления сломалось то, что раньше работало. Её ловят повторным прогоном одних и тех же сценариев.

Порядок:

  1. Обновите тестовую копию до нового релиза, включая обновление конфигурации базы данных и обработку обновления при первом запуске.
  2. Запустите проверку конфигурации и тестирование базы (раздел выше).
  3. Прогоните автотесты или ручной чек-лист сценариев.
  4. Сформируйте те же отчёты, что сохранили эталоном, и сравните цифры за закрытые периоды. Они не должны измениться.
  5. Проверьте расширения, внешние обработки и печатные формы: их обновление не затрагивает.
  6. Только после этого обновляйте рабочую базу, предварительно сделав её резервную копию.

Обновление рабочей базы требует монопольного доступа на этапе обновления структуры. Предупредите пользователей заранее: незавершённые сеансы будут прерваны, несохранённые данные потеряются.

Расхождение в закрытом периоде — главный сигнал. Если сальдо на 31.12 прошлого года после обновления стало другим, кто-то из обработчиков обновления перезаписал движения. С этим разбираются до переноса в рабочую базу.

Как фиксировать найденные ошибки

Ошибка без описания — это ошибка, которую исправят неправильно. Для каждой найденной проблемы записывайте:

  • 🔢 версию платформы и релиз конфигурации;
  • 👤 пользователя и его роль;
  • 🪜 шаги воспроизведения — по порядку, с данными;
  • 🧾 точный текст ошибки (скопируйте из окна, а не пересказывайте);
  • ✅ ожидаемый и фактический результат;
  • 📎 скриншот и выгрузку из журнала регистрации.

Ведите реестр в любом трекере или даже в таблице. После исправления повторите тот же сценарий на тестовой базе и добавьте его в регрессионный набор. Так одна и та же ошибка не вернётся с очередным релизом.

Если ошибка в типовом коде, а не в доработке, отправьте описание в поддержку фирмы-разработчика или своему партнёру 1С. До выхода исправления можно закрыть проблему расширением, не снимая конфигурацию с поддержки.

Частые вопросы

Можно ли запускать «Тестирование и исправление» на работающей базе?
Нет. Режиму нужен монопольный доступ, поэтому все пользователи должны выйти. Запускайте его вечером или в выходные, после резервной копии.
Чем проверка конфигурации отличается от тестирования базы?
Проверка конфигурации ищет ошибки в метаданных и коде модулей. Тестирование и исправление проверяет данные: ссылки, итоги, индексы таблиц. Это разные этапы, нужны оба.
Нужны ли автотесты небольшой фирме на типовой Бухгалтерии?
Обычно хватает ручного чек-листа из 10–15 операций и сверки ОСВ с эталоном. Автотесты окупаются при собственных доработках и частых обновлениях.
Сколько времени занимает тестирование базы?
Файловая база на несколько гигабайт проверяется от нескольких минут до часа. Реструктуризация и пересчёт итогов большой клиент-серверной базы могут идти несколько часов.
Можно ли тестировать на демонстрационной базе вместо копии своей?
Только для проверки механики. Ошибки обычно связаны с вашими данными, настройками и доработками, поэтому финальный прогон делают на копии рабочей базы.