#0
by Друг1С
Для УРИБ пишу программу автоматического обмена файлами. При поступлении файла запускаю 1С в режиме автообмена. Но если 1С уже запущена в режиме конфигуратора автообмен не проходит. Как корректно отследить состояние системы?
#4
by Друг1С
Этот файл создается в любом случае, при запуске в режиме конфигуратора или в пользовательском режиме. Обмен в разделенном режиме возможен, поэтому надо отследить именно конфигуратор.
#5
by Друг1С
Вариант с файлом "links.tmp", не проходит поскольку он не обновляеться после закытия конфигуратора, если уже есть открытая 1с в раздельном режиме
#7
by КонецЦикла
А вот, итересно... Длина файла ТМП меняется, вместо 1024 становится 2048, может енто поможет? Но, если запущено 2 пр-тия и один конф-р - 3072. Если запускается пр-тие монопольно, длина 2048 означает запущенность конф-ра
#15
by Друг1С
--Что здесь имелось ввиду:Проверять завершение автообмена можно, указав в пакетном файле дополнительный файл журнала регистрации, а после автообмена проверять этот файл. У нас в свое время была написана прога, которая читает этот файл и если все плохо, то посылает письмо админу.
#16
by Друг1С
+15Этот текст я нашел в одном из форумов.Подскажите как указать в пакетном файле дополнительный файл журнала регистрации?
#17
by AlexP
(Друг1С) links.tmp обновляется ТОЛЬКО при подключении к базе и его можно использовать. Если подключиться к базе например через ОЛЕ, то файл обновится. Дай мыло, вышлю обработку.
#18
by Друг1С
+15Все, разобрался, этот журнал не создается, когда 1С запущена в режиме конфигуратора.
#21
by smaharbA
конечно тупо, но примерно так (тока ради бока ничего не пиши в текстстреем, а то дополнишь свою конфу строками (файл) ;))(Можно еще аттрибутами побаловаться)Функция ПроверитьКонфБлок(тИмяФайла)
#24
by Друг1С
Да, я тоже подумал, что если открыт конфигуратор, то должен быть залочен МД файл. Но не тут то было, его можно удалить даже при откытом конфигураторе.....А все остальный файлы лочатся и в обычном режиме.
#25
by Kropa
Можна запускать автообмен и смотреть в журнал регистрации - если ошибка блокировки тоды ждать.
#28
by smaharbA
ну тогда тИмяФайла=КаталогНужнойБазы+"1cv7.lck"значит тока так (а мож и нет) позырим
#30
by smaharbA
можно еще попробовать через оле конфигуратор открыть/закрыть (открывается свобода!!!)
#31
by Kropa
Хорошо, тогда так - запускать автообмен, если прошел автообмен, тогда все ОК, если не прошел - сообщение об ошибке
#33
by smaharbA
ты это о чем, через попытку же а далее в цикле или через обрабожид и проверять Если ОК тогда Вперед
#34
by Kropa
причем здесь "обрабожид и проверять Если ОК тогда Вперед" - это уже проблемы - как он будет обрабатывать ожидание - для нево главное если конфигуратор открыть тогда выдать сообщение, аили кинуть месагу по сети, или еще как нибуть матюкнуться, щтоб закрыли конфигуратор или 1С монопольно.
#35
by smaharbA
можно и моно закрыть чужой и конфигуратор (тока люди обидятся) а оброжид (ждем как вышли обмен делаем), а месагу для моно нече делать послать я всем шлю вроде глСообщить(лалала) у их предупрежд, сообщение, статус и заголовок, а для упертых еще и попуп (виндовый)в глобальнике оброжидания (правда у меня своя оброжид, много функций засунуть каждая со своим интервалом (конечно точность от 1 до 5 сек)) и зыришь какойнибудь текстовик если появился "читаешь" и на экран, а из уриб или другого обменника туда ложиш текст, а если в тексте "пошли все подалее" то вываливается, а конфигуратор закрыть через всш
#36
by Друг1С
Ну, вывод делаю такой. 1. Определяем на монопольное открытие базы (проверяем блокировку на чтение любого DBF) 2. Если не монопольно, смотрим есть ли в links.tmp строки запуска конфигуратора. 3. Если есть, то пытаемся выяснить, не зависший ли это процесс? (Активируем 1С как ОЛЕ приложение под сервисным юзером) 4. Окончательно удостоверившись успокаиваемся и идем пить чай с кофе.
#37
by IronSerg
А еще в директории TEMP при заходе в режим конфигуратора появляется файл вида ~md1A8.tmp
#38
by Kropa
Половину слов не уловил :) мы сдесь не говорим как пользователя кинуть месагу думаю уже наметил себе как. Проблема в том как определить не открыт ли конфигуратор.
#39
by reminder
Открытый конфигуратор это только одна из возможных причиннеудачного автообмена. А их может быть гораздо больше.Например юзер открыл элемент справочника на редактирование иэтот элемент не может быть синхронизирован.В логе успешность обмена обязательно отражается в видестрочки типа20050325;12:48:24;URBD;C;Distr;DistUplSuc;1;;;DistUplSuc;0;;; если ошибка.Вообще правильно нужно сделать 2 prm файла. И если приемпрошел правильно то только тогда запускать посылку.
#41
by artbear
А чего думать-то? Запускаем конфигуратор сами.Ждем или1) окна "ошибка блокировки данных" или2) появления окна "Конфигуратор".если 2), тогда посылаем этому окну сообщение WM_Quitесли 1, нажимаем ОК и знаем, что уже запущен Конфигуратор!
#42
by reminder
Заглянул как это сделано у меня :)) Вот прога на паскале. В случае ошибкивозвращает errorlevel 7. Можно прописать в батнике и анализировать.assign(x,paramstr);reset(x);while not eof(x) do if pos('DistUplFail;1;',_str)>0 then halt; if pos('DistDnldFail;1;',_str)>0 then halt; if pos('Ошибка блокировки данных. Возможно, данные',_str)>0 then halt; { if pos('Данные из указанного файла переноса данных уже загружались',_str)>0 then halt; }writeln('OK');halt;end.
#43
by Друг1С
2 Программа автообмена работает на сервере и не подразумевает наблюдения за ней пользователя. Закрывать конфигуратор на клиентсткой машине нельзя. Нужно лишь отследить факт работы и отложить обновление до лучших времен. При долгом простое, отправить сообщение админу.
#44
by artbear
Ты не понял: я не предлагал ничего закрывать у пользователя, тем более, что с сервера это не получится.Все действия совершаются именно программно/автоматически, без участия человека.П.2 - это появление окна "Конфигуратор", которое запустили мы, именно в этой сессии на сервере, а не у пользователя.
#46
by smaharbA
дак тебе все сказали и написалитогда опенконф и скрипт при запуске конфигуратора пусть че нибудь куданибудь пишет и не закрываетвот и проверяй блок этого файлатогда узнаешь о конфигуратореа так как вот и все счас код вышлю (или не вышлю) тока покурю...
#48
by reminder
Следовательно будет отсутствовать искомая строчка типаDistUplSuc;1;;;Отсутствие успеха - есть неудача :))
#49
by Друг1С
2 Да но, такая же ошибка и при неправильной строке инициализацииПока я и иду этим путем, жду, пока успех проявит себя. :))
#50
by artbear
Я тут попробовал FileMon-ом отследить действия 1С и получил1) удачный вход в конфигуратор18:46:24 1cv7.exe:41232 Lock D:11Cv7.LCK SUCCESS Excl: Yes Offset: 50000001 Length: 1 18:46:24 1cv7.exe:41232 Lock D:11Cv7.LCK SUCCESS Excl: Yes Offset: 0 Length: 10000000 18:46:24 1cv7.exe:41232 Unlock D:11Cv7.LCK SUCCESS Offset: 50000001 Length: 1 2) неудачный вход18:37:36 1cv7.exe:14512 Lock D:11Cv7.LCK SUCCESS Excl: Yes Offset: 50000001 Length: 1 18:37:36 1cv7.exe:14512 Lock D:11Cv7.LCK NOT GRANTED Excl: Yes Offset: 0 Length: 10000000 18:37:36 1cv7.exe:14512 Unlock D:11Cv7.LCK SUCCESS Offset: 50000001 Length: 13) удачный вход в Предприятие18:57:43 1cv7.exe:34516 Lock D:11Cv7.LCK SUCCESS Excl: Yes Offset: 50000001 Length: 1 18:57:43 1cv7.exe:34516 Lock D:11Cv7.LCK SUCCESS Excl: Yes Offset: 19999999 Length: 1 18:57:43 1cv7.exe:34516 Unlock D:11Cv7.LCK SUCCESS Offset: 19999999 Length: 1 18:57:43 1cv7.exe:34516 Lock D:11Cv7.LCK SUCCESS Excl: Yes Offset: 10000000 Length: 1 18:57:43 1cv7.exe:34516 Unlock D:11Cv7.LCK SUCCESS Offset: 5000000
#53
by Gloom
For Each user In Users If user.Mode = "C" Then WSH.Echo "Конфигуратор запущен у пользователя " & user.UserName & _ Next
#58
by artbear
Тут мне MMF подсказал:>>запость пжалста ссылку - >это консольная программулина для батников, выводит в stdout информацию об активных подключениях, в том числе и конфигуратора.Может понадобится кому-нить
#61
by artbear
(58+) А ведь работает!И правильно показывает состояние пользователей, даже после входа/выхода из Конфигуратора, когда запущено Предприятие!
#64
by artbear
Его прога анализирует файл линкс.тмп, но не просто текст. А лочит нужные участки файла, если заблокировать не удается, значит, пользователь "жив".
#66
by artbear
(58+) Снова от MMFтам еще скрипт можно в этой консольке исполнятьпримерный текст[ОбрабатываемаяБаза]ПутьКБазе='c:1cmmk_cb'ИмяБазы='ЦБ ммк'[Действия]Подключения='c:DelphiProgMDI_AdminLinksCB.txt'ОтключитьПользователей='Да'ВыйтиПослеВыполнения='Да'
#68
by artbear
У нее даже частично исходники на Делфи есть :)На проклубе лежит его разработка "Admin1C Внешняя компонента" с сорцами, в них есть файл LinksWork.pas, где и сделана вся работа.----------------Внешняя компонента для Admin1C v2 []
#69
by smaharbA
Друг, ты переврал что тебе написали, написаное работает, если надо то можно и сост пользователя из 1Сэ (в конфе, в мониторе, в моно)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- как узнать остаток по кассе в любой валюте имеющейся в справочнике валют?
- Как узнать размер таблицы в SQL базе?
- Как можно программно узнать открыт документ или нет
- Как узнать узнать идентификатор конфигурации
- Штатными средствами 1С можно узнать открыто нужное окно или нет?
- Как узнать, что документ открыт другим пользователем?
- Excel: как из 1С узнать открыт ли файл
- "Информационная база уже открыта конфигуратором" - не удается войти в конфигуратор
- В подписке на событие узнать Интерактивная запись или нет?
- Помогите перенести базу с 8.2. конфигуратор 2.5.104.1 на 8.3 конфигуратор 3.0.2
В этой группе 1С
- Печать сертификатов и кач.удостоверений
- Где можно скачать обновление ЗиК 251
- Унифированная форма Т-54 (лицевой счет)
- You do not have access to logon to this session в терминальном подключении
- КД2.0 Как перенести реквизит, которого нет в объекте источнике?
- присоединить секцию
- Перенос Базы SQL c одного компа на другой
- Комплексная 7.7.0457 - амортизация ОС по налоговому учету. Старые ОС.
- Как изменить данные регистра?
- Не могу завести нового пользователя. Почему?
- v7, изменить данные регистра без проведения документа
- Раздельный учет НДС
- Перевод сертификатов
- Подключение терминала пл. карт сбербанка к 1С.
- Живые форумы по менеджеру обмена фирмы Pibi ?
- Не работает функия вопрос() в 8-ке/в SQL не работает в файл серверной работает
- Известен индекс строки ТабличногоПоля1. Как получить значение его колонки?
- Длина имени файла превысила 8 символов
- Вн. идентификатор исправить вручную
- Получить остатки счета в разрезе субконто