Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) Новое в FormEx 2.0.5.0 (число прочтений - 40142 )
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #15 - 10. Июля 2006 :: 13:01
Печать  
Хочу посоветоваться. Стоит ли включать в компоненту методу определения кто блокирует объект. Сейчас реализовано с помощью перехвата функции блокировки и ведения собственного лога блокировок. И далее если очередная блокировка закончилась неудачно, то вместо штатного предупреждение "Запись заблокирована!" выдается окошко с инфой о том кто, откуда и когда заблокировал объект. Так же в этом окошке не просто "ОК", а есть еще "Повторить", чтобы можно было тут же попробовать еще раз заблокировать объект.
Метода достаточно хлипкая получается. По идее возможно попадание ложных данных в инфу о блокирующем пользователе.
Так как? Публиковать? Или кто чего более толковое подскажет?
Работает правда независимо от формата базы.
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #16 - 10. Июля 2006 :: 13:48
Печать  
Хмм... это получатся те же грабли, что и запись блокировок в справочники, таблицы и т.д.... Я все же склоняюсь, что нужно ломать родной 1С-вский алгоритм блокировок.

В противном случае при сворачивании коврика в 1С (или наоборот Улыбка запись в логе будет оставаться. При большом количестве пользователей и разбросе офисов по разным городам! это критично Улыбка
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Новое в FormEx 2.0.5.0
Ответ #17 - 10. Июля 2006 :: 13:49
Печать  
Вещь, безусловно, нужная. И мы уже реализовали что-то подобное на уровне 1С.

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

То есть, получается, что вместо ОткрытьФорму() везде надо писать ОткрытьФормуСПроверкойБлокировки().

Вот если бы можно было получить событие OnDocumentBlocked() и обработать его как хочешь, то было бы замечательно.

Кстати, где ты хранишь блокировки? Мы, например, храним их в специальном справочнике. Возможно, решение этого вопроса не стоит закреплять во внешней компоненте.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #18 - 10. Июля 2006 :: 13:51
Печать  
Arta писал(а) 10. Июля 2006 :: 13:48:
Хмм... это получатся те же грабли, что и запись блокировок в справочники, таблицы и т.д.... Я все же склоняюсь, что нужно ломать родной 1С-вский алгоритм блокировок.

В противном случае при сворачивании коврика в 1С (или наоборот Улыбка запись в логе будет оставаться. При большом количестве пользователей и разбросе офисов по разным городам! это критично Улыбка

Дело в том, что 1С не хранит инфу "кто заблокировал" хранится только сам факт блокировки.
Во всяком случае, именно такой вывод напрашивается из проведенных раскопок.
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Новое в FormEx 2.0.5.0
Ответ #19 - 10. Июля 2006 :: 13:56
Печать  
Arta писал(а) 10. Июля 2006 :: 13:48:
Хмм... это получатся те же грабли, что и запись блокировок в справочники, таблицы и т.д.... Я все же склоняюсь, что нужно ломать родной 1С-вский алгоритм блокировок.


Я думаю, что 1С в данном случае пользуется стандартными блокировками. Мне так кажется. А у них есть только два состояния - "свободен" и "заблокирован".

И, возможно, Нетварь может сказать, кто заблокировал запись. А вот на счет Винды и MSSQL - сомневаюсь.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #20 - 10. Июля 2006 :: 13:57
Печать  
sedmin писал(а) 10. Июля 2006 :: 13:49:
То есть, получается, что вместо ОткрытьФорму() везде надо писать ОткрытьФормуСПроверкойБлокировки().

Вот если бы можно было получить событие OnDocumentBlocked() и обработать его как хочешь, то было бы замечательно.

Вот это как раз очень просто сделать. 1С везде вызывает одну и ту же достаточно простую процедуру LockWithMessage(), которая просто пытается установить блокировку и, если попытка не удалась, показывает предупреждение. Я как раз эту процедуру и перехватываю. При этом ничего дорабатывать в конфиге не надо, все работает автоматом. Но, естественно, вместо какой-либо обработки вызвать предопределенную процедуру - это намного проще будет.

sedmin писал(а) 10. Июля 2006 :: 13:49:
Кстати, где ты хранишь блокировки? Мы, например, храним их в специальном справочнике. Возможно, решение этого вопроса не стоит закреплять во внешней компоненте.

Я сохраняю лог в простой текстовый файл \SYSLOG\~locklog.~lk
Примерное содержание такое:
Код
Выбрать все
1/577/4542	АЛьФ	FEDOROV	05.07.2006 18:10:17
5/32/5	АЛьФ	FEDOROV	05.07.2006 18:10:47
1/577/4542	АЛьФ	FEDOROV	05.07.2006 18:10:49
1/577/4542	АЛьФ	FEDOROV	05.07.2006 18:11:00
5/32/130	АЛьФ	FEDOROV	05.07.2006 18:11:05 


  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #21 - 10. Июля 2006 :: 14:10
Печать  
sedmin писал(а) 10. Июля 2006 :: 13:56:
И, возможно, Нетварь может сказать, кто заблокировал запись. А вот на счет Винды и MSSQL - сомневаюсь.


Как раз MSSQL это мог бы сделать, если бы не кривая реализация доступа к ней сделанная 1С, все под одним юзером...

Я все собираюсь копать в сторону http://www.forum.mista.ru/topic.php?id=195872

Надо что-то вроде этого, но с возможностями изменения кода управляющего блокировками.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Новое в FormEx 2.0.5.0
Ответ #22 - 10. Июля 2006 :: 14:27
Печать  
Для начала, думаю, что достаточно ввести событие. А подобный текстовый файл каждый может наваять по вкусу.

А если будет возможность - то можно будет в это событие добавить параметры (пользователь, время, ...), которые будут выдаваться при работе на SQL-базе.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #23 - 10. Июля 2006 :: 15:04
Печать  
Цитата:
[quote author=sedmin link=1151492841/0#17 date=1152539367]Вот это как раз очень просто сделать. 1С везде вызывает одну и ту же достаточно простую процедуру LockWithMessage(), которая просто пытается установить блокировку и, если попытка не удалась, показывает предупреждение. Я как раз эту процедуру и перехватываю. При этом ничего дорабатывать в конфиге не надо, все работает автоматом.




Альф  Прочти
http://www.1cpp.ru/forum/YaBB.pl?num=1151512437 - лучше начиная с последнего
поста и мою статью на мисте.
соеденив это с LockWithMessage() получаем тот же самый функционал что и у Муму.  Только нужен анологичный метод где снимаются блокировки
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #24 - 11. Июля 2006 :: 05:31
Печать  
Z1 писал(а) 10. Июля 2006 :: 15:04:
Цитата:
[quote author=sedmin link=1151492841/0#17 date=1152539367]Вот это как раз очень просто сделать. 1С везде вызывает одну и ту же достаточно простую процедуру LockWithMessage(), которая просто пытается установить блокировку и, если попытка не удалась, показывает предупреждение. Я как раз эту процедуру и перехватываю. При этом ничего дорабатывать в конфиге не надо, все работает автоматом.




Альф  Прочти
http://www.1cpp.ru/forum/YaBB.pl?num=1151512437 - лучше начиная с последнего
поста и мою статью на мисте.
соеденив это с LockWithMessage() получаем тот же самый функционал что и у Муму.  Только нужен анологичный метод где снимаются блокировки

Прочитал. В идеалогию FormEx это слабо вписывается скорее в 1С++.


Окончательно предлагаю такую схему реализовать:
- при блокировке объекта вызывается глобальная предопределенная процедура ПриНачалеБлокировкиОбъекта(Объект);
- если в этой процедуре если установлен статус возврата в 0, то блокировка не происходит (прерываем выполнение блокировки);
- далее при вызове функции движка LockWithMessage() (в случае неудачной блокировке, перед выводом сообщения "Запись заблокирована!") вызывается глобальная предопределенная процедура ОбработкаБлокировкиОбъекта(Объект, Повторить);
- если в ней установлен статус возврата в ноль, то сообщение не выводится и со стороны пользователя ни чего не происходит;
- если параметр Повторить установлен в 1, то запускается повторная попытка блокировать объект.

Как вам такая схема?

+ дополнительно ко всему этому добавлю метод Сервис::КоличествоПользователей(), который будет возвращать количество пользователей в базе в режиме Предприятие.
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #25 - 11. Июля 2006 :: 05:41
Печать  
Гуд! На данном этапе - самое оно!
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Новое в FormEx 2.0.5.0
Ответ #26 - 11. Июля 2006 :: 05:41
Печать  
Цитата:
Как вам такая схема?

Одобрямс... Улыбка
Если получится, будет хорошо.
  
Наверх
ICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Новое в FormEx 2.0.5.0
Ответ #27 - 11. Июля 2006 :: 08:09
Печать  
Хорошая схема.

В дополнение к этой схеме еще бы можно было узнать, кто в данный момент выполняет транзакцию...
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Новое в FormEx 2.0.5.0
Ответ #28 - 11. Июля 2006 :: 08:14
Печать  
sedmin писал(а) 11. Июля 2006 :: 08:09:
В дополнение к этой схеме еще бы можно было узнать, кто в данный момент выполняет транзакцию...

Подумаю. Но, скорее всего, здесь я пас.
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Новое в FormEx 2.0.5.0
Ответ #29 - 12. Июля 2006 :: 13:30
Печать  
Да, похоже, забыли, что нужно событие для удаления блокировки из журнала блокировок.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9
ОтправитьПечать