Запуск тестирования БД из командной строки.

UPD. 16.11.2024 Добавлено время проверки, по истечении которого будет произведена запись логов в файл.
UPD. Снято ограничение на запуск только для платформы 8.3

Запускает стандартную утилиту проверки физической целостности БД из командной строки с передачей параметров.
Запуск chdbfl.exe с передачей параметров:
— ПолныйПутьchdbfl.exe — напр. C:Program Files1cv88.3.9.1850inchdbfl.exe
— ИсправлятьОшибки – исправлять обнаруженные ошибки (0 или 1)
— ИмяФайлаБД – путь к основному файлу базы данных (1Cv8.1CD)
— ВремяПроверки — время в миллисекундах по истечении которого данные chdbfl.exe будут записаны в файл
— ИмяЛогфайла — полный путь для сохранения лог-файла

Пример: runchdbfl.exe C:Program Files1cv88.3.9.1850inchdbfl.exe 1 «C:Мои документы1С_BASE1Cv8.1CD 120000 C:UsersusernameDocuments1Clogs1cbdlog.txt»

Файловый режим работы.

Здравствуйте, коллеги.

В процессе сопровождения ПП 1С, возникла необходимость в автоматизации повторяющихся действий с целью снижения влияния человеческого фактора и внесения доли унификации внутри компании.

Для этих целей создана небольшая утилита, призванная облегчить трудовые будни менеджеров ИТС.

Кроме функционала автоматического создания структуры каталогов и генерации скриптов резервного копирования, хотелось автоматизировать запуск chdbfl.exe для выбранной прямо из списка базы.

Спецы знают, что у данной утилиты нет ключей командной строки, а одним из немногих решений было уже устаревшая (жестко задан путь к платформе 8.1) программа Check1CD.exe (//infostart.ru/public/16653/).

Исполняемый файл сгенерирован все тем же старым добрым AutoIt, только добавлена возможность задания произвольного пути к chdbfl.exe.

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

9 Comments

  1. aleksey.g29

    Может стоит доработать решение, и сделать более универсальным, вместо версии платформы указывать путь к файлу chdbfl, версия предприятия 8.2 все еще актуальна, и данную утилиту можно было бы использовать и для нее

    А так да утилита полезная

    Reply
  2. oyti

    (1) aleksey.g29, спасибо за замечание. Постараюсь выкроить время. Просто многое навалилось… переустановка на Fedora, перенос сайтов на «домашний хостинг»…

    Reply
  3. CaSH_2004

    Спасибо за решение, я тоже делал аналогичное но только скриптами. Сначала уперся в передачу рускоязычного адреса расположения файла базы, поборов эту проблему уперся в получение результата тестирования из текстового поля, скажите а есть вариант его получить?

    Без него автоматизация теряет смысл когда нужно в автомате проверять много баз, а результата проверки нет — бывает что частое возникновение ошибок первый признак проблем с ПК (жесткий диск или электропитание вырубается)

    Reply
  4. v3rter

    errorlevel и текст сообщения возвращаются?

    Reply
  5. oyti

    (3) CaSH_2004, спасибо за развернутый отзыв. В ближайшее время постараюсь выкроить время и обмозговать Ваш вариант.

    Reply
  6. oyti

    (4) v3rter, к сожалению пока нет. Однако надеюсь, что получится реализовать данный функционал

    Reply
  7. v3rter

    Нетривиальная это штука, оказывается — перехват текста из окна другого приложения. Нагуглил наскидку, вдруг Вам пригодится:

    https://github.com/zastrowm/Win32Interop.WinHandles

    http://stackoverflow.com/questions/19867402/how-can-i-use-enumwindows-to-find-windows-with-a-specific-caption-title

    https://blogs.msdn.microsoft.com/oldnewthing/20030821-00/?p=42833

    http://stackoverflow.com/questions/352236/reading-from-a-text-field-in-another-applications-window

    Я не программист — админ, но очень уж результат интересен )

    Reply
  8. CaSH_2004

    (6) Попробуйте, все только спасибо скажут, пока аналогов нет, вот кстати тоже на скрипте есть вариант Запуск chdbfl с параметрами с помощью PowerShell, но тоже без вазврата результата, попросил автора рассмотреть такой вариант

    (7) Я к сожалению «чистый» 1С-к и не читаю доку на английском да и с АПИ знаком только в рамках использования в DynWrap(Х), конечно вариант есть и не думаю что сложный для прогеров, но мало кто пишет на АПИ и примеров подобных мало, а DynWrap иногда непонятно себя ведет с АПИ функциями

    Reply
  9. oyti

    Получить значение контрола из утилиты 1С оказалось совсем нетривиальной задачей, по крайней мере стандартные функции WinAPI не заработали 🙁

    В будущем надеюсь сделать более удобоваримый результат.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *