Как запустить тестирование и исправление базы 1С из командной строки или программно

Системный администратор 1С v8.3 (Обычные формы) Управленческий учет Торговля и дистрибуция
← На главную

Работа с файловыми базами данных в условиях мобильной торговли часто сопряжена с техническими рисками. Торговые агенты, работающие в «полевых» условиях, нередко сталкиваются с внезапным выключением ноутбуков из-за разряда батареи, перегрева или системных сбоев. В результате таких инцидентов файловая база данных 1Cv8.1CD может получить повреждения на физическом или логическом уровнях. Постоянное ручное вмешательство администратора для запуска «Тестирования и исправления» отнимает много времени. В данной статье мы разберем, как полностью автоматизировать этот процесс с помощью командной строки, создав для пользователя простое решение для восстановления базы «в один клик».

Разберем пакетный режим работы Конфигуратора

Для решения поставленной задачи мы будем использовать запуск исполняемого файла платформы (1cv8.exe) в режиме конфигуратора со специальными параметрами. Пакетный режим позволяет выполнить регламентные операции без открытия графического интерфейса и участия человека. Рассмотрим базовый синтаксис команды, которую можно поместить в обычный текстовый файл с расширением .bat или .cmd. Для удобного подбора ключей запуска можно использовать конструктор параметров командной строки 1С.

Основная команда для запуска процедуры проверки выглядит следующим образом:


"C:\Program Files\1cv82\bin\1cv8.exe" DESIGNER /F "C:\Bases\TradeAgent" /N "Admin" /P "Password" /IBCheckAndRepair -Reindex -LogAndProcess

Проанализируем используемые ключи:

  1. DESIGNER — запуск системы в режиме Конфигуратора.
  2. /F "ПутьКБазе" — путь к каталогу с файловой базой данных.
  3. /N "Логин" и /P "Пароль" — учетные данные пользователя с правами администратора.
  4. /IBCheckAndRepair — основной ключ, инициирующий запуск тестирования и исправления.

Параметры ключа IBCheckAndRepair

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

1. Реиндексация таблиц (-Reindex). Это первое, что необходимо сделать при аварийном завершении работы. Сбои питания чаще всего приводят к разрушению индексных файлов. Реиндексация полностью перестраивает индексы, что восстанавливает работоспособность базы в большинстве случаев.

2. Проверка логической целостности (-CheckIntegrity). Программа проверяет связи между таблицами и корректность структуры данных. Это помогает выявить ошибки, которые могут привести к невозможности записи новых документов или «вылетам» программы при обращении к определенным объектам.

3. Пересчет итогов (-RecalcTotals). В файловых базах при сбоях часто «разъезжаются» итоги в регистрах накопления и бухгалтерии. Если торговый агент жалуется на неверные остатки товаров, этот ключ обязателен к использованию.

4. Обработка пустых ссылок (-EmptyRef). Позволяет решить проблему «объектов-призраков». Здесь важно указать дополнительное действие: -Create (создать объект для ссылки) или -Clear (очистить битую ссылку). Для торговых агентов чаще всего выбирают очистку.

5. Исправление ошибок (-LogAndProcess). Если не указать этот параметр, а оставить по умолчанию -LogOnly, система просто найдет ошибки и запишет их в лог, но не будет их исправлять. Для автоматического восстановления нам нужно именно исправление.

Создание комплексного сценария восстановления (BAT-файл)

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


@echo off
set BASE_PATH="C:\1C_Bases\AgentBase"
set EXE_PATH="C:\Program Files (x86)\1cv82\8.2.19.130\bin\1cv8.exe"
set LOG_FILE="C:\1C_Bases\repair_log.txt"

echo Завершение процессов 1С...
taskkill /F /IM 1cv8.exe /T

echo Создание резервной копии...
xcopy %BASE_PATH%\1Cv8.1CD %BASE_PATH%\1Cv8_backup.1CD /Y

echo Запуск тестирования и исправления...
%EXE_PATH% DESIGNER /F %BASE_PATH% /N "Admin" /P "123" /IBCheckAndRepair -Reindex -CheckIntegrity -RecalcTotals -LogAndProcess /Out %LOG_FILE%

echo Очистка временных файлов (кэша)...
del /q /s /f "%LocalAppData%\1C\1cv82\*"
del /q /s /f "%AppData%\1C\1cv82\*"

echo Проверка завершена. Результат в файле repair_log.txt
pause

Выясним причину включения каждого блока в этот скрипт. Команда taskkill необходима, так как тестирование невозможно запустить, если база занята другим процессом. Очистка папок в AppData крайне важна: при «синих экранах» повреждается локальный кэш конфигурации, из-за чего 1С может не запускаться даже после успешного исправления самой базы данных.

Использование утилиты chkdbfl.exe через командную строку

Иногда повреждения базы настолько серьезны, что Конфигуратор отказывается запускаться. В этом случае на помощь приходит утилита chkdbfl.exe. Она работает на физическом уровне хранения данных в файле .1CD. Хотя графический интерфейс утилиты всем знаком, её также можно вызвать программно.

Посмотрим на пример вызова утилиты (для версий платформы выше 8.2.14):

"C:\Program Files (x86)\1cv82\bin\chkdbfl.exe" -f "C:\Bases\Trade\1Cv8.1CD" -r

Здесь параметр -f указывает путь к файлу базы, а параметр -r (repair) дает команду на автоматическое исправление найденных ошибок. По результатам работы утилита создаст лог-файл в той же папке, где находится база. Рекомендуется сначала запускать chkdbfl.exe, а уже затем пакетный режим DESIGNER для логической проверки.

Программный вызов из кода 1С

Если вы хотите реализовать кнопку «Исправить базу» прямо внутри интерфейса 1С (например, в сервисной обработке), можно воспользоваться методом ЗапуститьПриложение(). Рассмотрим пример кода:


Процедура ВыполнитьОбслуживаниеНаКлиенте()
    ПутьКПрограмме = "C:\Program Files (x86)\1cv82\bin\1cv8.exe";
    ПараметрыЗапуска = "DESIGNER /F ""C:\Base"" /N ""Admin"" /P ""123"" /IBCheckAndRepair -Reindex -LogAndProcess";
    
    // Запускаем и ждем завершения
    КодВозврата = 0;
    ЗапуститьПриложение(ПутьКПрограмме + " " + ПараметрыЗапуска, , Истина, КодВозврата);
    
    Если КодВозврата = 0 Тогда
        Сообщить("Тестирование завершено успешно!");
    Иначе
        Сообщить("В процессе тестирования возникли ошибки. Код: " + КодВозврата);
    КонецЕсли;
КонецПроцедуры

Использование параметра ЖдатьЗавершения = Истина позволяет скрипту или внешней обработке дождаться окончания процесса и проанализировать КодВозврата. Значение 0 означает успех, тогда как другие коды (например, 1 или 101) сигнализируют о проблемах или прерывании процесса пользователем. Для запуска системных команд с получением полного вывода консоли в 1С подойдёт компонента для выполнения команд CMD Windows.

Практические рекомендации по внедрению

Для обеспечения стабильной работы торговых агентов мы рекомендуем следующий алгоритм действий:

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

← На главную