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

22.11.13

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
script
.ps1 2,93Kb
6 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Данный скрипт запускает 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С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

14640 руб.

29.04.2020    49771    134    161    

90

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

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

3660 руб.

10.02.2017    120593    726    177    

763

Файловый обмен (TXT, XML, DBF), FTP Поиск данных Инструменты администратора БД Корректировка данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная обработка позволит Вам легко и просто, а главное - быстро, выполнить сравнение данных между ЛЮБЫМИ базами (и РИБ, по правилам конвертаций) по контрольным суммам выбранных объектов баз 1С, работающих на платформах 8.3 и выше. Удобный и понятный интерфейс в виде "мастера". Высокая скорость сравнения достигается за счет специального алгоритма расчета контрольной суммы объекта/записи и сравнения по данным суммам объектов 2х баз через файл. Имеется возможность выбора реквизитов, по которым система будет сравнивать объекты. Сравнение количества записей в движениях документов, возможность сравнивать данные по правилам конвертации и не только! Выбор объектов конфигурации для КАЖДОГО узла в отдельности с индивидуальным отбором для каждого объекта конфигурации, работа с FTP, сохранение или загрузка настроек, сохранение или загрузка результата сравнения, регистрация на обмен объекта и его движений. (Обновление от 12.11.2024, версия 2.2-2.5)

24400 руб.

27.10.2017    45637    31    13    

49

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

Внешняя обработка сравнивает НДФЛ из расчетного листка и НДФЛ из регистра, на разницу формирует документы в 2 шага. Исправляет расхождения, в том числе, когда Аванс больше Зарплаты

9760 руб.

01.09.2023    7691    320    78    

19

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

Автоматическое создание документов корректировок долга. Распределение Аванса уплаченному Интернет-площадке и долгами поставщиков.

7320 руб.

02.03.2026    672    2    0    

4

Корректировка данных Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Налоговый учет Налог на прибыль Платные (руб)

Обработка служит для: выравнивания бухгалтерского и налогового учета на определенную дату по выбранным счетам; закрытия остатков по выбранным счетам; обнуления налогового учета (ПР, ВР также будут обнулены)

2928 руб.

05.05.2024    2541    21    0    

17
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Serj1C 484 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 9 27.11.13 19:52 Сейчас в теме
Если часто приходится запускать chdbfl - это ненормально.
3. cheburashka 45 27.11.13 19:55 Сейчас в теме
(2) DAnry, согласен, но бывают такие ситуации, когда выявить причину, из-за которой приходится прибегать к chdbfl, не получается.
5. CaSH_2004 375 26.08.16 16:19 Сейчас в теме
(2) Это так, но что если у вас 100 баз на 10 серверах и все нужно протестить? Будете вручную везде везде запускать и указывать базы? И к то му же эот для профилактики неплохо - точно будеш знать что тут все в порядке.

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