#0
by Злопчинский
Столкнулся с трудностями.. Требуется получить список активных пользователей 1С, работающих в базе. юзаю Admin1c.dll - все ок.. до поры до времени - если вручную запускать - нормуль. . если программно запускать (в обработке ожидания) - 1Ска падает. . вариант smaharba со скриптом вордовским - не сильно хочется. . варианты счетчиков при входе/выходе пользователей - тоже не очень кузяво, бо несрабатывает в случае выброса юзверя из 1Ски... . какие еще есть варианты получить список активных пользователей, работающизх в базе..? . спсб.
#0
by Злопчинский
Столкнулся с трудностями.. Требуется получить список активных пользователей 1С, работающих в базе. юзаю Admin1c.dll - все ок.. до поры до времени - если вручную запускать - нормуль. . если программно запускать (в обработке ожидания) - 1Ска падает. . вариант smaharba со скриптом вордовским - не сильно хочется. . варианты счетчиков при входе/выходе пользователей - тоже не очень кузяво, бо несрабатывает в случае выброса юзверя из 1Ски... . какие еще есть варианты получить список активных пользователей, работающизх в базе..? . спсб.
#1
by Zhuravlik
А если счетчик мониторить? Обработкой ожидания. Хранить зашедших в внешнем файлике, и мониторить)
#3
by Злопчинский
есть случаи, когда зашедшие сеансы ломаются (1ска падает) - поэтому счетчики не канают...
#4
by Холст
не доверяешь smaharba ? :) по-моему из ворда он только длл-ку достает, а собственно список юзеров получает через виндовый скрипт + длл
#5
by Злопчинский
нет, робот обмена. задача тривально проста: робот при своей работе (форма.обработкаожидания) проверяет список активных пользователей. если активный пользователь один - то это есть сам рбот и он завершает свою работу. При старте пользователя любого провеяется - есть ли в списке активных пользователеей робот - если нет - стартруется внешней командой сеанс 1ски с пользователем робот.
#6
by Злопчинский
доверяю ;-) но неохота каждые 10-20 секунд стартовать ворд ;-) не нравится мне эта концепция.
#8
by Злопчинский
завтра попробую через глобальную обработку ожидания - но глобальные обработкиожидания почему-то не люблю. И вооще - обработки ожидания - достаточно глючные вещи - не первый раз на грабли наступаю.
#11
by Злопчинский
поначалу в говорилке я его обработку использовал для полученяи списка юзеров, но потом на админ1с перешел.
#12
by Злопчинский
можно попробовать еще вместо обработки ожидания Душелововский генератор событий запулить - по идее сработает...
#15
by Злопчинский
Сейчас как: В ПриНачалеРаботыСистемы в конце процедуры стоит . . сама обработка робот .
#16
by Злопчинский
Запускаем 1ску разделенно под каким нить юзером, ок. запускаем 1ску под зером робот - стартует, ждет 5 сек, ипадает (на получении списка активных подключений) .
#17
by Холст
кстати, если достаточно определять есть ли КТО-ТО в базе, то можно перед запуском скрипта захода в базу пытаться переименовать любой файл, который лочится при заходе в 1С (не забывая ессно переименовать потом обратно)
#19
by Злопчинский
обработку получил. знакомое. навкидку только не понял что там враппер делает.. для чего вот это: . . ???
#20
by Злопчинский
блин.. попробовал не через обработку ожидания формы, а через генерацию внешнегособытия запускать нужную процедуру периодически - все равно падает... где-то что-то связано с тем. что запуск идет из процедуры приначалеработысистемы...
#24
by Zhuravlik
Канают, надо только не просто мониторить факт вхождения в список, но и дополнительно проверять, был-ли факт мониторинга по интервалу. т.е. таблица с колонками "Пользователь, Время" - при обходе ставить время, одновременно с этим проверять существующие записи, и погрешность ранее сохраненного момента от текущего. Левые - стирать.
#26
by Злопчинский
не въехал... ну вот зашли два пользователя. прописали себя в справочник счетчиков. зашел робот - ходит по этому справочнику - как он установит живой пользователь или нет, если какой-то пользователь отвалился из-за слома 1ски?
#27
by Zhuravlik
Они себя не просто прописали. Каждый из них еще и прописал время, и через определенный интервал это время обновляется (поэтому лучше в внешний файл, имхо). В сессии каждого пользователя работает обработка ожидания, которая после того как установила время для текущего пользователя смотрит список остальных, и проверяет: на сколько велика разница между ИХ временем, и текущим. Если погрешность больше определенно константы - значит сессия пользователя столько время не работала - значит его нет в системе, вышел или вылетел, значит нужно удалить его из списка текущих.
#28
by Злопчинский
спсб за пояснялку! не, ну егонафиг такие извращения. это применять уже если нет других возможностей. . особо мне не нравится обработки ожидания у каждого пользователя - ну его нафиг - источник постоянных проблем... то фокус теряется когда пользователь набирает что-нить, то еще чтонить некузявое.. не люблю я их.. юзаю только в крайнем случае...
#29
by Zhuravlik
"то фокус теряется когда пользователь набирает что-нить" - в смысле, речь о предопределенной процедуре в ГМ? Есть сбои, после которых она вообще перестает работать?..
#30
by Злопчинский
было что-то бяковое. запусти глобальный обработку ожидания и начни в поле текстовом в комментарии номенклатуры например что-то набирать - есть бяки... . но все равно спасибо за пояснения в - если не забуду - применится когда-нить!
#31
by Злопчинский
такс, резюме: проблему заборол. чтобы robot с использованием ВК admin1c.dll получал список активных подключений типа глАдмин1С.АктивныеПодключения - надо чтобы у пользователя робот были права на OLE . блин, я же уже наступал раньше на эти грабли! склероз...
#32
by Злопчинский
всем спсб. ветку по моему вопрсоу можно закрыть. . ps: обработкаожидания еще и криво установленные интервалы отрабатывает... не ровно в указанное значение...
#35
by Злопчинский
хз.. тупой наверное... работало 30 пользователей. вместе с ними работает и робот. последний пользователь (не робот) вышел из базы - изменений данных нет, роботу нефиг вертеться - они заканчивается тоже...
#36
by Klesk666
в порядке бреда - если папки пользователей находяться на сервере, то можно пробовать проверять существует файл 1Cv7.lck или нет, или пробовать удалить его, если не удалился - пользователь в базе, перед этим каталог пользователя писать в справочник пользователи при его входе.
#37
by m-serg74
если 1С++ пользуешь, может отсюда инфу о юзерах брать: #=============================================================================== #==TABLE no 0 : Соединений # Name |Descr |SQLTableNam|RecordLock T=1SUSERS |Соединений |_1SUSERS | #-----Fields------- # Name |Descr |Type|Length|Precision F=USRSCNT |Number of users |S |0 |0 F=NETCHGCN |Count of changes |I |0 |0 #
#42
by m-serg74
а select count(*) from master.dbo.sysprocesses where program_name = '1cv7' and dbid = db_id('Base1C'). ?
#44
by vcv
Для всяких обменов может оказаться удобно использовать консольную утилиту. Кажется, usrmon называется. Доберусь до компа, посмотрю.
#45
by trad
могу предложить ВКшечку применение элементарное: ЗагрузитьВнешнююКомпоненту("tradsys.dll");
#48
by vcv
На сколько помнится, есть еще Сервис::ПолучитьАктивныхПользователей то ли в 1с++, то ли в FormEx. У меня в обработке ожидания модального окна работает и не падает.
#53
by m-serg74
так там дело не в доступе к обработке как я понял, а в том чтоб робот "свалил" из 1С если он один остался
#56
by Злопчинский
Вопрос: как запустить робота (отдельную сессию 1ски) из текущего терминального сеанса, чтобы при завершении этого текущего терминального сеанса 1ска-робот продолжала работать..?
#58
by Злопчинский
так и думаю. сделать задание шедулеру и через командную строку запускать - прокатит?
#60
by vcv
Не факт, не факт. У меня Предприятие из шедулера нормально отрабатывает, только если есть сессия. Отключенная. Возможно что-то с внешними компонентами связано, или еще с чем. В журнале регистрации только вход и выход пользователя, а всякие автооперации в ПриНачалеРаботыСистемы не отрабатывают. Конфигуратор в любом случае работает без проблем, есть сессия или нет.
#61
by tgu82
Через Формекс можно. В последних версиях Альф долбавил возможность определения списка активных пользователей - в виде таблицы значений
#62
by Вася Теркин
Если надо запускать падающего робота сделай константу "РоботЖив" и записывай туда из сеанса робота обработкой ожидания через каждый 30 сек текущее время. А из каждого сеанса юзера проверяй значение этой константы другой обработкой ожидания. Если давно не обновлялась надо запускать робота. В другую константу "НачалоРаботыРобота" записывай в какое время робот запущен последний раз. Не запускай повторно если только что запустили ибо оно может ещё не загрузилось.
#63
by tgu82
+ А еще можно использовать user1Clist.dll (кажется так). Я кстати именно ее и использую когда хочу сообщение юзерам послать массово
#67
by Злопчинский
тут возможно что 1ске нужен рабочий стол, то есть место куда что-то выводить - тот же гуй
#69
by Злопчинский
нафиг такие решения - слишком много сущностей и обработок ожидания там где они нафиг не нужны. сделал уже робота все работает - осталось его стартовать из-под любого пользователя...
#72
by Ёпрст
че там программить то ? 1 справочник и установка блокировки. При проверке - посмотреть на блокировку, усё. Зато надёжно и просто, как 3 копейки.
#73
by ildary
может пересмотреть подход и стартовать задания робота в специально выделенном сеансе 1С и отдельном сеансе сервера?
#74
by Злопчинский
да именно так и хочется! пока смутно понятно/непонятно как это организовать... типа как-то при заходе первого пользователя в 1Ску командой системы запускать именно "робота в специально выделенном сеансе 1С и отдельном сеансе сервера"
#75
by Ёпрст
обычный виндовый шедулер запускает батник/командный файл/скрипт .. с запуском 1с-ины под определенным пользователем, или открытие 1с-ины по оле + открытьформу своей поделки.. усё.
#77
by vcv
По моему стоит сделать так: Примитивный батничек. В нём запускается консольная утилита 1cusrmon.exe, выводящая список активных пользователей. Если есть пользователь "робот" ничего не делаем. Если робота нет, но есть другие пользователи, запускаем 1Ску отдельным процессом. Этот батничек вставляется в планировщик с небольшим интервалом. Например, раз в пять минут. В нём еще можно, что бы не возиться с определением активных пользователей в 1С, создавать/убивать файл-флаг необходимости завершения сеанса робота. Я не нашел решения, почему 1С не отрабатывает, если сеанс не открыт. Да и не сильно искал. Сделал только "сторожок" в планировщике, который проверяет наличие сеанса определенного пользователя на сервере, если не находит, спамит меня сообщениями о проблеме.
#78
by vcv
+ Монитор пользователей 1С:Предприятия 7.7. Параметры командной строки: C:Program Files1Cv77in ools1cusrmon.exe [-Dn] [-En] [-W] <каталог базы> -D0 : не показывать список пользователей -D1 : показывать все режимы, кроме Монитора (по умолчанию) -D2 : показывать всех пользователей -En : установка errorlevel 1 -E0 : не устанавливать (по умолчанию) -E1 : если база открыта монопольно -E2 : если открыт конфигуратор -E3 : если открыто 1С:Предприятие или блокирующий данные конфигуратор -E4 : если открыт любой режим, кроме Монитора -E5 : если открыт любой режим -W : ждать освобождения базы по условию параметра -En Установка errorlevel: 0 - база свободна (условие параметра -En не выполняется) 1 - база занята (условие параметра -En выполняется)
#80
by Злопчинский
если кого-то интересует что получилось в итоге - маячьте, опубликую... "...мой гений дарит вам...." ;-)
#84
by vcv
Да ладно, рассказывай. Ты у нас ценный кадр в общественности, умеешь не только хорошую вещь сделать, но и понятно для простых смертных ей поделиться. Не так уж часто встречаемая комбинация.
#85
by Феофан
а ежели "при начале работы" создавать dbf`ный файл и открывать его на запись, типа: ###_Ivanov.dbf? далее просто выбрать все файла на "###_" и которые залочены - те активны.. если пользователь выпадает, система снимает блокировку с файла сама..
#87
by Злопчинский
ну его нафиг с этими извращениями. Есть ВК, которая по моим длительным наблюдениям за ее работой - корректно отражает присутствующих в базе людей, в т.ч. и при аварийныз вылетах из программы. Соответственно: все остальное - тривиально. . если кого-то интересует тривиальный код чтоя наштрямкал для запуска/останова робота - тоды да уж.. придется опубликовать..
#92
by vcv
Лучше всё же контроль списка активных пользователей делать вне 1С. Вот упала, например, 1Ска у робота. Или сервак пришлось перегрузить днём. Не забудешь запустить робота заново?
#93
by Злопчинский
перезагрузка сервака днем - робот стартанет вместе с первым же юзверем. . упала 1ска-робота. при входе любого юзверя - робот стартанет автоматом. если никто не входит - ну что же: обмено вне будет. если это некритично - никто и не пошевелится - значит и пофиг. если отсутствие обмена критично - завопят менеджеры/склад. - стартанут робота вручную.
#94
by Ёпрст
ну хрень же, не ? Уж лучше регламент всё делает сам, в определенное время, а не когда там есть какой-то мифический пользователь.
#95
by Злопчинский
вот чего ты лезешь поперед батьки в пекло... ДАННЫЙ регламент связан с интерактивными изменениями данных. нет пользователей работ нафиг не нужен. Будут внеурочные регламенты - прикрутим все что надо... . за мной там кстати должок висит - я помню!!!
#96
by Ёпрст
как ведёт себя твой регламент, если юзверь зашел монопольно ? Хоть проверку на монопольный режим воткнул в код ? :)
#97
by Ёпрст
я к чему, юзверь зашел монопольно твой "робот" обломился.. юзверь вышел - действий "робота" не произошло. Или надеешься на следующий вход ? Он учитывает "предыдущие" не учтенные изменения ИБ монопольным юзверем ?
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- V7: Список активных пользователей
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: Программно узнать список активных пользователей.
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- Получить список активных пользователей 1с 8
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- УПП. Отгрузка продукции в групповой упаковке. - часть 2
- УТ11. Таможенный сбор не распределяется на себестоимость
- как не выводить время документа в отчете СКД
- Обновление измененной УТ 11
- Не обрабатывается POST запрос посланный из 1С
- ошибка субд microsoft sql server native client 11.0
- 1С 8.3 - что лучше использовать - свойства или доп.реквизиты?
- Не получается заблокировать документ от изменение после Проведений!!! :(
- Ссылка на список ошибок 1с
- 1С Общепит + 1С Розница
- регистры расчета и ПВР
- свернуть таблицу значений
- Обмен с сайтом в БП 3.0
- Импорт писем в 1С из Outlook
- Проверить на значение хотя бы 1 строки таб части
- Свой итог в своем макете СКД
- Счет фактура полученный попадает в Книгу продаж и в книгу покупок.
- Отбор документов в 1С 8.2 управляемое приложение
- Недостаточно прав для работы с таблицей "Документ.ПоступлениеТоваровУслуг"
- v7: запрос, условие, функция в фукнции 1с 7.7