Имя: Пароль:
1C
 
Пакетный запуск 1С
0 filh
 
10.04.07
08:24
Дело такое, запускаю 1С пакетно:
e:\1Cv77\BIN\1cv7.exe CONFIG /DD:\BAZA /NNAME /PPASS /@D:\1Cv77\bat.prm
это для обмена.
Мне надо чтобы если никого нет, то запускать монопольно, если кто то есть в базе то распределенно.
Как реализовать?
Про ключ /m я знаю, не подходит.
1 smaharbA
 
10.04.07
08:27
Это как так монопольно - этоже конфигуратор !!!
2 Skom
 
10.04.07
08:29
в prm параметр
sharedmode=1
у меня если никого нет то монопольно пускается а если есть то разделенно
3 F1
 
10.04.07
08:29
в PRM файле прописывается, разрешен ли запуск
4 Skom
 
10.04.07
08:31
тут памари
http://oksla.narod.ru/useful.html
5 filh
 
10.04.07
08:32
(1) Автообмен можно запустить, но когда вручную запускаешь, то 1С спрашивает(если есть кто в базе) запустить в разделеном режиме. А если никого нет, то запускается автообмен "монопольно", т.е. никто в базу не сможет войти. А если запустить пакетно, то обмен ВСЕГДА идет разделенно.
6 filh
 
10.04.07
08:34
(4)
SharedMode    1/0    не очень понятно, что это, лучше поставить "1"
7 filh
 
10.04.07
08:36
(2) спс, недочитал в ЖКК
8 Skom
 
10.04.07
08:37
sharedmode = 1 - разрешить разделенный доступ. то есть када кто есть то разделенный если никого то монопольно
sharedmode = 0 - тока монопольно
9 filh
 
10.04.07
08:38
(8) СПС!!!
10 LeshiyL
 
10.04.07
08:40
(5) Вообще-то 1С всегда сначала пытается в монопольном режиме зайти и если не получается - предупреждает, а если пакетник и никого нет, то входит монопольно т.е. спокойно можно обновить конфу (например)
[General]
Output=report.txt
Quit=1
CheckAndRepair=0
UnloadData=0
SaveData=0
AutoExchange=1
[AutoExchange]
SharedMode=1
WriteTo=*
ReadFrom=*
11 smaharbA
 
10.04.07
08:40
а это автообмен, недопер ))
12 filh
 
10.04.07
08:41
(8) ХМММ...
bat.prm:
[General]
Output=D:\1Cv77\log.txt
Quit=1
AutoExchange=1


[AutoExchange]
SharedMode=1
ReadFrom=*
WriteTo=*


т.е. стоит у меня такая опция, но обмен не запустился "монопольно"
13 Skom
 
10.04.07
08:42
короче для удобства могешь считать что
sharedmode = 1 равносильно нажать "ДА" в ответ на вопрос....в базе много народу....желаетет ли в раздеьном режиме
14 filh
 
10.04.07
08:42
по логам посмотрел, в базе никого небыло.
15 smaharbA
 
10.04.07
08:43
шаредмоде - это какраз не "монопольно", воопчето можно сделать простенький пакетник - будет проверять наличие в базе и запускать в соответствующей моде
16 Skom
 
10.04.07
08:52
(15) - ну что ты воду мутишь....шарамод разрешает совершать обмен если в базе кто то есть
а как сказано в (10) изначально попытка монопольного доступа а уж если не удается то шарамод разрешает завершить в разделенном
17 filh
 
10.04.07
08:55
(15) как сделать пакетник? может проще что подскажешь...
я уже подумал писать прогу, которая будет что то смотреть и в зависимости от кода возврата запускать монопольно или нет. Но блин на дбф смотрел бы файло 1susers.dbf, а ща на сиквеле, придется тама смотреть что за таблица и обрабатывать.
18 Skom
 
10.04.07
08:58
(17) у меня есть прога которая следит за автообменом
19 smaharbA
 
10.04.07
08:59
(16) т.е. если шаре стоит в 1 то всеравно идет попытка моно, а уж затем шаре ? (урбд не знаю вообще, весь опыт по нему - восстанавливал народу базы и центр и периф)
20 Skom
 
10.04.07
09:00
сам писал конфиг-ию на 1с проверяет файл на предмет обновления и если надо то запускает обмен....строку запуска генерирует сама....но там шара мод = 1 и всегда ок все грузится
21 Skom
 
10.04.07
09:04
(19) именно
22 filh
 
10.04.07
09:08
(20) Вчера вечером(около 19 часов), запустил через пакетник обмен, скачался файл(20 метров) запустился обмен в 1С(база сиквельная) прихожу с утра, смотрю, а обмен еще идет и по логам идет, значит 1С не повисла. Пытаюсь зайти в 1С - все норм, пустила, значит обмен не монопольный. Убиваю 1С, запускаю вручную, за 1 час прошло больше чем за 13 часов!!!
файл prm  приводил в (12), получается, что из пакетника не запускается монопольно.
23 Skom
 
10.04.07
09:11
а ты уверен что на момент запуска обмена не было никого в базе???...
вот например ты в мониторе никого не видишь а база заблоченная....пример
кто то запустил в базе окно авторизации и пошел курить...
файл 1cv7.lck занят - все монопольно не войдешь а в мониторе никто неет
24 filh
 
10.04.07
09:13
мысль тут такая:
1. Скачиваем файл обмена.
2. Удаляем файл выгрузки.
3. Пытаемся запустить обмен с SharedMode=0
4. Проверяем есть ли файл выгрузки.
5. Если есть в п.7, если нет, то п.6
6. Запускаем обмен с SharedMode=1
7. Отправляем файл обмена
8. выходим из пакетного файла.
25 filh
 
10.04.07
09:14
(23) хм...
и по логам никого не будет... А как бороться с такими?
26 Skom
 
10.04.07
09:18
у меня в проге реализовано так...
1 в спр по базам есть атрибуты файла загрузки...
при начале обмена проверяем реквизиты сущ-го файла с реквизитами из спр (при обмене обновляю реквизиты)
2.если файл обновился то запускаю сначала загрузку (у меня 2 prm файла)
потом читаю лог если загрузка прошла, то делаю выгрузку отдельно от загрузки чо бы повтороить загрузку если она обломится
потом читаю лог если выгрузка прошла удачно обновляю атрибуты файла загрузки (ну пишу текущие что бы увидеть обновление файла)
, а да при начале загрузки удаляю свой файл выгрузки,  и все
ну у меня еще джин выскакивает и кричит какие действия прога выполняет и еще кое что есть
27 Skom
 
10.04.07
09:19
рекомендую делать сначала загрузку а потом выгрузку....
если у тя загрузка не пройдет а выгрузка пройдет - не очень приятно и ты даже не сразу увидишь это
28 Skom
 
10.04.07
09:20
(25) есть прога которая ставится на клиента и убивает это окно авторизации через заданное время
29 filh
 
10.04.07
09:21
(27) а так и происходит в пакетнике, сначала загрузка, потом выгрузка.
(26) на чем прогу писал?
30 filh
 
10.04.07
09:21
(28) что за прога?
31 Skom
 
10.04.07
09:52
(29) - я же говорю конфиг-ия 1С получилась висит в трее никому не мешает как тока начался обмен выскакивает джин и кричит обмен ну и т.д.
по поводу загрузка выгрузка все то оно так новот если в одном файле прм прописать и то и другое то в рез-те если загрузка не пройдет то выгрузка все равно запустится...а у меня пока не пройдет загрузка (ошибки или еще что) то выгрузки не будет понимаешь прога если видит ошибку загрузки то повторяет загрузку до тех пор пока она не загрузится правильно а тока потом выгрузка
32 filh
 
10.04.07
09:54
(31) ясно, спс.
33 Лефмихалыч
 
10.04.07
09:55
(0) вот мой велосипед, который после некоторой доводки напильником позволяет ответить на вопрос: "а можно ли монопольно в базу зайти"
Книга знаний: Автоматический запуск автопроцессов с контролем монопольного захвата таблиц
34 smaharbA
 
10.04.07
10:27

echo off
set mono="D:\1Cv77\batmono.prm"
set share="D:\1Cv77\batshare.prm"
set user=NAME
set pass=PASS
set prog="e:\1Cv77\BIN\1cv7.exe"
set baza="\\APP\База 1С чистая$\1cv7.md"
set commandline=%prog% CONFIG /D%baza% /N%user% /P%pass% /@
set flag="%temp%%random%"
echo 2>%flag%
copy %baza%+%flag% %baza% 1>nul 2>nul
echo %errorlevel%
if errorlevel 0 (
   set commandline=%commandline%%mono%
   ) else (
   set commandline=%commandline%%share%
       )
%commandline%
35 filh
 
10.04.07
10:35
(34) спс.
(23) запустил у клиента окно авторизации, на другом монопольно зашел в базу, все норм, если только SharedMode=1 не проверяет наличие файла 1Cv7.lck
36 Skom
 
10.04.07
10:37
SharedMode=1 позволяет не монопольно а вот ты попробуй запустить окно авторизации и зайти просто монопольно в базу или зайти в пофигуратор и запустить обмен и ответить нет и посмотришь что полуцца
37 smaharbA
 
10.04.07
10:38
(36) это легко обходится
38 filh
 
10.04.07
10:40
(36) Хм, точно...
(37) как обходится?
39 smaharbA
 
10.04.07
10:51
(38) если базы сетевые то net file ... или openfiles, если локальные то только второе и только на ХР/2003 (где базы), но требует некоторых несложных разовых действий на компе баз или использовать какойнибудь унлокер, нужно разлачивать users.usr - и тот кто забыл нормально потом зайдет и другим мешать не будет
40 Skom
 
10.04.07
12:19
а еще есть прога которая убивает окно авторизации через заданное время....прописывается легко из 1с сама может встроиться путем небольшого кодинга. если интересно скину
41 filh
 
10.04.07
13:02
(40) я такую нашел в инете, спс.
Закон Брукера: Даже маленькая практика стоит большой теории.