Для тех, у кого ещё на работе используется 1С версии 7 в терминальном доступе.

Проблема заключается в том, что 1С7, особенно файловой версии, постоянно вылетает с ошибками. Кроме того, пользователи регулярно не закрывают терминальные сессии. Или закрывают окна терминалов, оставляя 1С7 в запущенном состоянии.

Тогда утром никто не сможет работать с потому, что требуется её переиндексация. Что приходилось делать ручками.

Сложность заключалась ещё и в том, что автоматизировать процесс мешал «висящий» в памяти сервера какой-то «левый» процесс 1С7.

Очень долго искалось решение, как заставить 1С7 переиндексироваться на автомате.

Итак

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

Далее, делаем скрипт, который будет убивать висящие в памяти сервера процессы 1С7.

Ну, и наконец, делаем скрипт по непосредственной индексации таблиц 1С7.

Настройка терминальных сессий

Заходим в групповые политики. Если у вас доменная организация сети, то открываем групповые политики домена. Если — нет, то открываем групповые политики сервера терминалов: набрать gpedit.msc в командной строке.

групповые политики терминальных сеансов для 1С7

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

Теперь забытый терминальный сеанс автоматически отключится через 3 часа.

Убиваем процессы 1С7

Пишем bat файл

==

@echo off
tasklist >process.txt
for /f «skip=3 tokens=1,» %%i in (process.txt) DO (
if «%%i» == «1cv7.exe» goto KILL
)
goto ENDJOB
:KILL
taskkill /f /im «1cv7.exe» >processkill.txt
:ENDJOB

==

Что делается: Скрипт записывает в файл process.txt все процессы в памяти сервера, затем «просматривает» этот список на наличие программы 1С7. Если такой процесс существует, он убивается.

Индексация 1С7

Пишем bat файл

==

call killprocess.bat
«C:\Program Files (x86)\1CV77\1cv7.exe» config /DE:\1CV77\ /M /Nreindex /P1234567890 /@»E:\ 1CV77\reindex.prm»

==

Что делается: Вызываем bat файл, который мы написали ранее, — убиваем процессы 1С7. Запускаем 1С7 с пакетным файлом reindex.prm.

Пути к программе 1С7 и к Вашей базе пропишите соответственно, как настроено у Вас.

Содержимое reindex.prm

==

[General]
Output=e:\1C_Bases\1CV77\reindex.log
Quit=1
CheckAndRepair=1
[CheckAndRepair]
Repair=1
PhysicalIntegrity=0
Reindex=1
LogicalIntegrity=0
RecalcSecondaries=0
RecalcTotals=0
Pack=0
SkipUnresolved=1
CreateForUnresolved=0

==

Настройка планировщика

После того, как Bat файл готов и оттестирован, можно настроить планировщик Windows на вызов этого файла по расписанию. Например, так.

Планировщик

Не расписываю описание команд DOS для bat-файла, и ключи в reindex.prm, их легко можно найти в Интернет.



Удачи!





Добавить комментарий

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

CAPTCHA image
*

Навигация по записям