Запуск chdbfl с параметрами с помощью PowerShell

22.11.13

Задачи пользователя - Корректировка данных

Что делать если Вам часто приходится запускать chdbfl на разных компьютерах для базы, которая располагается всегда в одном месте? Например, это может быть конфигурация АРМ кассира сети розничных магазинов. Каждый раз подключаться к пользователю или тем более объяснять как это сделать самостоятельно - никаких сил и нервов не хватит. Но можно написать скрипт, поместить его на рабочий стол и отдать пользователю.

Скачать файлы

Наименование Файл Версия Размер
script
.ps1 2,93Kb
5
.ps1 2,93Kb 5 Скачать

Данный скрипт запускает chdbfl, вводит путь к базе данных, ставит флажок "Исправлять обнаруженные ошибки" и нажимает кнопку "Выполнить". Дождаться завершения и нажать кнопку "Закрыть" пользователь должен самостоятельно.

Скрипт предназначен для запуска chdbfl на компьютерах, на которых установлена платформа 1С 8.2, но Вы легко можете изменить путь расположения chdbfl самостоятельно.

Текст скрипта:

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")

function Send-Keys ([string]$Window,[int]$Interval=50) #Устанавливаем аргументы и значение по умолчанию для $interval
{
    begin #Блок begin выполняется 1 раз в начале скрипта
    {
        $shell = new-object -com WScript.Shell #Создаем объект WScript.Shell

        $Comp = new-object Microsoft.VisualBasic.Devices.Computer

        if ($window) #Если переменная $window не пуста
        {
            write-host "Waiting for window '$Window'" #Пишем на консоль состояние
            while (!$shell.AppActivate($Window)) #Пока не активируем указанное окно...
            {
                start-sleep -milliseconds $Interval #...Ждем заданное время
            }
        }
    }

    process #Блок process выполняется для каждого объекта пришедшего через конвеер |, текущий объект доступен в переменной $_
    {
        $Comp.KeyBoard.SendKeys($_,$true)        
        start-sleep -milliseconds $Interval #Ждем
    }
}


if (Test-Path -path "C:\Program Files (x86)\1cv82") 
{
    $PathTo1C = "C:\Program Files (x86)\1cv82\";
}
else 
{
    $PathTo1C = "C:\Program Files\1cv82\";
}
$Version1C = (Get-Command ($PathTo1C+"common\1cestart.exe")).FileVersionInfo.FileVersion;

$xpath = "C:\InfoBase\1cv8.1cd";
$app = start-process ($PathTo1C+$Version1C+"\bin\chdbfl.exe");
$app;
$xpath,"{TAB}","{+}","{TAB}", "{TAB}", "{ENTER}" | Send-Keys "Проверка физической целостности файла БД"
 

 

Обновление от 22.11.2013: необходимо, чтобы путь к базе данных не содержал символов кириллицы, иначе они будут заменены на абракадабры. Благодаря подсказке Serj1C, теперь путь к базе можеть содержать и кириллицу.

Так же можно создать ярлычок на рабочий стол с указанием базы: powershell.exe <ПутьКСкрипту> <ПолноеИмяФайлаБазыДанных>

Тогда объявление переменной $xpath будет иметь вид: $xpath = $args[0];

См. также

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2334    28    15    

33

Тестирование и исправление ключей аналитики ERP, УТ11, КА

Корректировка данных Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    106832    634    173    

676

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27405    79    146    

59

Исправление ошибки закрытия месяца "Обнаружены ненулевые остатки по суммам при нулевом остатке по количеству в регистре себестоимости по организации". УТ 11.4,УТ 11.5, КА 2.4,КА 2.5, ERP 2.4, ERP 2.5, КА 2 Казахстан, Управление торговлей 3 для Казахстана

Закрытие периода Корректировка данных Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    22337    299    35    

71

SALE! 20%

Заполнение документа "Корректировка регистров" произвольными данными

Закрытие периода Корректировка данных Платформа 1С v8.3 Система компоновки данных 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Внешняя обработка, позволяющая произвольным образом заполнять документ "Корректировка регистров" Предназначена для использования в конфигурациях "Управление торговлей 11", "Управление небольшой фирмой", "ERP Управление предприятием", а также в других конфигурациях, в состав которых входит библиотека стандартных подсистем (БСП) версии 2.2+ и указанный выше документ.

2400 1920 руб.

13.07.2015    50171    171    29    

121
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Serj1C 483 22.11.13 14:37 Сейчас в теме
Победил проблему с русскими буквами:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")

function Send-Keys ([string]$Window,[int]$Interval=200) #Устанавливаем аргументы и значение по умолчанию для $interval
{
    begin #Блок begin выполняется 1 раз в начале скрипта
    {
        $shell = new-object -com WScript.Shell #Создаем объект WScript.Shell

        $Comp = new-object Microsoft.VisualBasic.Devices.Computer

        if ($window) #Если переменная $window не пуста
        {
            write-host "Waiting for window '$Window'" #Пишем на консоль состояние
            while (!$shell.AppActivate($Window)) #Пока не активируем указанное окно...
            {
                start-sleep -milliseconds $Interval #...Ждем заданное время
            }
        }
    }

    process #Блок process выполняется для каждого объекта пришедшего через конвеер |, текущий объект доступен в переменной $_
    {
        $Comp.KeyBoard.SendKeys($_,$true)        
        start-sleep -milliseconds 50 #Ждем
    }
}


if (Test-Path -path "C:\Program Files (x86)\1cv82") 
{
	$PathTo1C = "C:\Program Files (x86)\1cv82\";
}
else 
{
	$PathTo1C = "C:\Program Files\1cv82\";
}
$Version1C = (Get-Command ($PathTo1C+"common\1cestart.exe")).FileVersionInfo.FileVersion;

$xpath = "C:\Кассандра\1cv8.1cd";
$app = start-process ($PathTo1C+$Version1C+"\bin\chdbfl.exe");
$app; $xpath,"{TAB}","{+}","{TAB}", "{TAB}", "{ENTER}" | Send-Keys "Проверка физической целостности файла БД"
Показать
CyberWo1f; cheburashka; +2 Ответить
2. DAnry 8 27.11.13 19:52 Сейчас в теме
Если часто приходится запускать chdbfl - это ненормально.
3. cheburashka 41 27.11.13 19:55 Сейчас в теме
(2) DAnry, согласен, но бывают такие ситуации, когда выявить причину, из-за которой приходится прибегать к chdbfl, не получается.
5. CaSH_2004 372 26.08.16 16:19 Сейчас в теме
(2) Это так, но что если у вас 100 баз на 10 серверах и все нужно протестить? Будете вручную везде везде запускать и указывать базы? И к то му же эот для профилактики неплохо - точно будеш знать что тут все в порядке.

(0) Я кстати тут в аналогичной разработке Запуск тестирования БД из командной строки. задавал вопрос автору как получить результат без визуального контроля - чтобы текст из окна возвращался, обещал подумать, но пока глухо.
Было-бы неплохо авторам что то придумать иначе толку от таких поделок только 50%, т.к. ккак я говорил уже проверять результат всех проверок очень сложно.
8. user1012671 28.01.22 12:13 Сейчас в теме
(2) Угу, а еще в случае с использованием chdbfl даже если это редко случается, нужно еще сделать копию базы, а когда база большая, то еще дождаться когда скопируется, потом открыть chdbfl выбрать файл, запустить проверку, и снова ждать. Я иногда забываю что у меня там база копируется, когда вспоминаю процесс копирования уже завершен, и сколько времени упущено сказать сложно. А тут хоть не будет потери времени между завершением создания резервной копии и началом тестирования
4. DAnry 8 27.11.13 20:04 Сейчас в теме
Но это же не работа. В таком случае большая вероятность, что база рухнет и её не поднимешь chdbfl. Слишком большой риск.
6. user635667 137 18.05.21 14:09 Сейчас в теме
Данный скрипт надо сохранить как *.vbs? А можно сделать чтоб и закрывалось на автомате???
7. cheburashka 41 18.05.21 18:04 Сейчас в теме
Есть терминальный сервер
(6)нет, надо как *.ps1, т.к. это скрипт PowerShell. Уже не помню как он отрабатывает, но вроде запускаемые приложения сами должны завершаться.
Оставьте свое сообщение