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.
После истечения заданного времени (к сожалению пока не удалось реализовать завершение работы) происходит копирование из текстового поля и сохранение в файл по указанному пути.
Может стоит доработать решение, и сделать более универсальным, вместо версии платформы указывать путь к файлу chdbfl, версия предприятия 8.2 все еще актуальна, и данную утилиту можно было бы использовать и для нее
А так да утилита полезная
(1) aleksey.g29, спасибо за замечание. Постараюсь выкроить время. Просто многое навалилось… переустановка на Fedora, перенос сайтов на «домашний хостинг»…
Спасибо за решение, я тоже делал аналогичное но только скриптами. Сначала уперся в передачу рускоязычного адреса расположения файла базы, поборов эту проблему уперся в получение результата тестирования из текстового поля, скажите а есть вариант его получить?
Без него автоматизация теряет смысл когда нужно в автомате проверять много баз, а результата проверки нет — бывает что частое возникновение ошибок первый признак проблем с ПК (жесткий диск или электропитание вырубается)
errorlevel и текст сообщения возвращаются?
(3) CaSH_2004, спасибо за развернутый отзыв. В ближайшее время постараюсь выкроить время и обмозговать Ваш вариант.
(4) 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
Я не программист — админ, но очень уж результат интересен )
(6) Попробуйте, все только спасибо скажут, пока аналогов нет, вот кстати тоже на скрипте есть вариантЗапуск chdbfl с параметрами с помощью PowerShell , но тоже без вазврата результата, попросил автора рассмотреть такой вариант
(7) Я к сожалению «чистый» 1С-к и не читаю доку на английском да и с АПИ знаком только в рамках использования в DynWrap(Х), конечно вариант есть и не думаю что сложный для прогеров, но мало кто пишет на АПИ и примеров подобных мало, а DynWrap иногда непонятно себя ведет с АПИ функциями
Получить значение контрола из утилиты 1С оказалось совсем нетривиальной задачей, по крайней мере стандартные функции WinAPI не заработали 🙁
В будущем надеюсь сделать более удобоваримый результат.