Если интересует как определить кто блокирует журнал #116531


#0 by Goody
Если интересует как определить кто блокирует журнал, стучитесь в ICQ 56383221.В общем у нас требование компании закрывать месяц на 6-8 рабочий день следующего за отчетным. Это наложило некоторые ограничения на работу пользователей. Т.е. некоторые начинают проводить документы нового месяца, не давая остальным закрыть предыдущий (блокировка журнала). Вот чтобы отловить таких злодеев, но не только и был придуман механизм определения хоста блокируещего журнал! Еще этот механизм позволяет отловить компьютеры слишком долго блокирущие журнал. Это дает возможность увеличив мощность этого компьютера добиться общего увеличения производительности системы! Так мы выловили комп, который проводил приход ТМЦ минут 20-ть!!! Поменяли комп на Пень4 3ГГц с 512 ОЗУ и теперь такой же документ проводиться 4 минуты!!! Отмечу что этот механизм подходит только для SQL версии и актуален там где много пользователей (у нас 80-ть из них 40 бухгалтеров).С уважением. Александр.
#1 by pit
полный трах...."Так мы выловили комп, который проводил приход ТМЦ минут 20-ть!!! Поменяли комп на Пень4 3ГГц с 512 ОЗУ и теперь такой же документ проводиться 4 минуты!!!".Приход проводится 4 минуты. Озвереть...Я бы лично таких спИцИялистов гнал... Подальше...Ибо проведение прихода даже на дохлом компе более 30 секунд - это еще суметь надо....P.S. интересно, а как они добились 4 минут? У меня не получилось .....
#2 by Goody
Ты не умничай! Ты видел модуль приходного документа? Нет! Вот и не ори!Я б на тебя посмотрел как бы ты заговорил если бы от тебя требовали того что требуют от нас! Этот приход так извратили. что и на голову не натянешь! А ты говоришь...
#3 by pit
Расскажи тогда, что можно придумать в приходе, чтобы без расчета итогов так затянуть проведение документа...
#4 by Tynou
Наверняка впиндюрили туда всю фифу или лифу - а причина в том, что приходы по материалам(товарам) , во всяком случае суммы либо вычисляются динамически (если собсвенными силами что-то сделали), либо суммы выясняются недели через две после прихода, а причина такого изврата шибко умные руководители желающие видеть текущую себестоимость на утро каждого дня... стопудово...
#5 by Goody
Размер модуля не позволяет его показать в форуме - в виде текста 35 Кб...Там расчет по инвестпроектам, взаиморасчетам, налогам, лимитам финпланов и еще чего-то, уже и не помню...Короче, полный ВАХ! Это самый ресурсоемкий документ в нашей конфигурации.И вообще, у нас практически все документы наворочены до безобразия! Это все от "большого ума" руководителей, как правильно заметил ... :-(
#6 by Goody
кстати, конфигурация писана практически с нуля... Ну нет на рынке конфигураций для нефтеперерабатывающих предприятий...
#7 by pit
Однако же хватило у кого то ума собрать все в кучу...Вместо нормального решения - геморой....P.S. а запускать регламентно обработку н раз в день и получать отчет?интересно, а если изменить вчерашний приход - надо ли остальные пересчитывать...
#8 by Goody
Перепроводим всего пару раз все документы под закрытие месяца. На отчеты в принципе весь этот геморой не влияет. Я имею в виду отчеты по материалам. А вот на всякого рода отчеты по инвестпроектам, финпланам и прочей фигне конечно влияют, но это уже бухгалтерии не касается. Это все придумано начальниками других отделов, и носит скорее информационный характер (так сказать для управленческого учета).
#9 by pit
Похоже, все ваши беды от неверной идеологии построения системы....P.S. случаем не ПНОС ?
#10 by Goody
Что такое ПНОС - я не в курсе. Лисичанский НПЗ, Украина. С недавних пор под ТНК ходим.
#11 by pit
До Лисичанского НПЗ я не доехал в свое время...
#12 by Goody
:-)Ну и правильно что не доехал! Нифига хорошего тута нету... Зарплата конечно как по местным меркам ничего, но не фантан... А вот начальства много и всякого рода гемора тоже... :-(
#13 by BigHarry
Что-то куда-то в нету степь пошла тема, я так и не узнал - как определить кто блокирует журнал, или этот секрет только по аське передается?
#14 by Goody
Нет, не секрет.Алгоритм прост.Нужно подключится к SQL базе    Предупреждение(Шаблон("Не удалось установить соединение с сервером SQLДалее определить ID базы и таблицы _1SJOURNТеперь через процедуру sp_lock получить все текущие блокировки на сервере SQL и по фильтру определить spid процесса и из master..sysprocesses получить имя компьютера делающего эту самую блокировку.Как видете не так уж и сложно, но наверняка потребует объяснения т.к. используется прямое обращение к SQL. Вот по этому и дал ICQ номер.
#15 by BigHarry
Ой, я сдуру проглядел, что это для SQL версии...
#16 by Goody
Ну и для DBF наверняка есть вариант... Я просто с DBF версиями не работаю, по сему для меня это не актуально... Надо подумать... ;-)
#17 by Goody
Вот выложил архивчик к ert-шником. По идее подойдет для любой 1С базы работающей на SQL.http://goody.nm.ru/1s/Who_Lock_Of_1SJOURN.ra_
#18 by Goody
(+17) Пароль на ERTшник - вфефдшауЗабыл снять...
#19 by zzz
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=24&lid=4074
#20 by Goody
Подниму-ка ветку: ведь хорошая штука была им придумана! И пусть только под СКЛ! 8о)
#21 by Goody
Да ты хакер!!! :-) Сообразил какой пароль у меня в форуме! :-E
#22 by Goody
И я сообразил
#23 by Uho
срочно меняй пароль!!! а то тут от твоего ника понапишут!ЗЫ. Это ж надо было так лохануться...
#24 by Goody
Ну что ты... Я просто не пил на выходных, да выспался как следует ;)
#25 by МуМу
То 0. Лучше это делать по соответствию Пользователь1С-Spid.Кроме этого если на то пошло то тогда уж лучше изменить хранимую процедуру через которую идет основная блокирровка (как правило это _1sp__1SJOURN_TLock)
#26 by Goody
Та пусть пишут! Я тут гость редкий, все одно скоро грохнется ник (если конечно кто нить его юзать не будет) :-) ;-) Определить имя пользователя 1С в принципе не возможно (SQL не в курсе имен пользователей 1С)! Если пользователи с одного компьютера (как вариант терминальный сервер) то вааще бардак получиться. А вот определить доменное имя пользователя - это мысль! Надо думать.
#27 by МуМу
То 26.http://softpoint.ru/products.php?id=3Здесь это все раализовано(можно как и по виндоус аутентификации так и по 1С) как и многое другое.
#28 by Sure
Как определить пользователя, если все подключены через терминальный сервер?http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=4188Уже готовое решение. Работающее.Мои бухгалтеры так привыкли к этой возможности в 7.7, что теперь требуют от меня реализовать это в 8.0.
#29 by Goody
Это бесплатно? И вааще для всех тех вещей что там понаписали (я имею в виду мониторинг SQL) есть Profiler и PerfMon.
#30 by Sure
+ Кстати, кроме того, чтобы видеть, кто заблокировал столько много записей в обработке есть также возможность посмотреть: кто пользователей "выкушал" всю память SQL-сервера или занял почти всё время его процессора.
#31 by МуМу
То 29. Интересно а сколько людей умеют правильно пользоватся результатами Profiler и PerfMon? К тому же не всю иныформацию оттуда можно получить и сопоставлять ее нужно правильно.Ну например вы сможете сказать как определить сколько конкретный пользователь отнимает ресурсов цпу SQL сервера? Ну или например сказать какой конкретно ресурс заблокировани кем или оперативно реагировать на критическуй нагрузку сервера и т.д. и т.п.
#32 by Goody
Все это хорошо, но требует внесения изменений в глобальный модуль - это раз! Создание дополнительного справочника - это два! И вариантов решения такой задачи много - это три!Можно в SQL создать таблицу некую и в нее писать всяко разно! Вплоть до сообщений между пользователями! А из 1С потом с ней работать. И блокировки читать, и загрузку процессора рабочей станции туда совать и даже (если очень надо) фотку бухгалтера (если установить WEB камеру каждому)! :-) Мало ли что он там делает???
#33 by Sure
А никто и не говорил, что вариант решения задачи только один.Например, можно не создавать справочник, а пользовать SQL-ную таблицу.Можно не пользоваться обработкой на языке 1С, а из QueryAnaliser'а всё увидеть без проблем.Единственное know-how - это способ сопоставления имён 1С и SQL-ный сессий.Для чего и потребовалось вмешательство в глобальный модуль. И подмена процедуры. Это хлопотно. Но работает здорово. И даёт возможность не только позвонить любому из "несоблющающих график разноски" 80-ти пользователей. Но и "прибить" "зарвавшегося", не вставая с кресла.Просто ты ещё над этим не думал, поэтому тебе всё так кажется просто и естесственно. А предложи-ка способ сопоставить id процесса на SQL сервере с именем пользователя! Вот ты делаешь соединение с SQL-сервером. Это новый процесс, с ним ты можешь работать через ADO. А как ты узнаешь, каким процессом ты захватываешь журнал?
#34 by Sure
Подскажи код, которым ты узнаешь загрузку процессора рабочей станции. И цены тебе не будет.
#35 by Goody
Не подскажу, т.к. не знаю. Но я и не претендавал ни на что.А как сопоставить sid с именем пользователя? я чет не разберу никак...
#36 by Sure
Как сопоставить? Вот для этого и заводится справочник: под него 1С создаёт процедуру определения поиск по ID. Вместо этого ищет (и делает update именем пользователя)строчку по SID.Я же говорю - единственный трюк во всей этой обработке.Помнится, внедренец 1С на мой вопрос "А как связать SID с именем пользователя" сказал "Это невозможно". Я локти кусал месяца три, пока не придумал.
#37 by Goody
Я так понял что на клиентской машине запускается процедура ПриНачалеРаботыСистемы которая изменяет процедуру "_1sp_"+_txtTbl+"_ByID" и вносит туда код "select * from "+_txtTbl+"(NOLOCK) where ROW_ID=@@SPID"Но @@SPID - возвращает идентификатор текущего процесса, а текущим процессом является что? Разве она вернет spid 1С-ного процесса?
#38 by МуМу
То 36. Гм.. скрипт из двух строк три месяца придумывать,круто:)А вообще лучше всего это виндоус авторизация.По многим причинам.
#39 by Goody
Хм... Попробывал по твоему... Дейтвительно @@SPID - это ID нового соединения из 1С. hostprocess совпал с 1С, но вот program_name отличается (1CV7 для 1С и 1C:V7 для соединения из 1С)Ничего не понял, как же ты связал то spid и имя пользователя?
#40 by Goody
Ага! Понял! Если из 1С запустить вот эти скрипты: select spid,program_name,hostname,hostprocess from master..sysprocesses where spid=@@SPID  select spid,program_name,hostname,hostprocess from master..sysprocesses where hostname='W047023004' and spid<>@@SPID and hostprocess='"+hostprocess_+"' and hostname='"+hostname_+"'  получим имя компа, ID 1С-ного процесса, а в 1С мы уже знаем имя пользователя.
#41 by Goody
(+40)Прогнал, нужно читать: select spid,program_name,hostname,hostprocess from master..sysprocesses where spid<>@@SPID and hostprocess='"+hostprocess_+"' and hostname='"+hostname_+"'
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С