|
v7: Момент блокировки таблиц, DBF 7.7 | ☑ | ||
---|---|---|---|---|
0
Злопчинский
17.11.12
✎
20:14
|
Прошу ответа на 2 вопроса.
. 1. Документ. Процедура ПриЗаписи(), вызывается интерактивно. Какие таблицы и в КАКОЙ МОМЕНТ блокируются и на какой период времени? 2. Аналогично - ВводНового...? . ползут длительные блокировки - непонятно откуда. как вычислить на дБФ? . спсб? |
|||
1
Aleksey
17.11.12
✎
20:21
|
общий журнал,константы, номера...
|
|||
2
Злопчинский
17.11.12
✎
20:23
|
(1) это понятно. - В КАКОЙ МОМЕНТ? исполняется код ПриЗаписи() - когда происходит блокировка с отражением изменений - непрсредственно псоле выхода из ПриЗаписи со статусом возврата()=1?
|
|||
3
Mikeware
модератор
17.11.12
✎
20:26
|
Блокировка - По сути, при начале процедуры "ПриПроведении"
|
|||
4
Злопчинский
17.11.12
✎
20:28
|
если ПриПроведении - обратились к какому-то объекту - даже на чтение - все пипец - таблица заблокирована - так?
|
|||
5
Злопчинский
17.11.12
✎
20:28
|
ПриЗаписи() - когда блокируется?
|
|||
6
Mikeware
17.11.12
✎
20:31
|
(5)Видимо, тоже при входе в процедуру...
неявная блокировка, потому как в ПриЗаписи должны быть "чистые" данные.... хотя, честно говоря, не уверен. |
|||
7
Злопчинский
17.11.12
✎
20:34
|
(6) и закрывается уже после записи..?
|
|||
8
Злопчинский
17.11.12
✎
20:34
|
отается вопрос (5)
|
|||
9
Mikeware
17.11.12
✎
20:36
|
(7) после записи или после проведения...
блин, вроде и не так давно трассировал... а не помню.... "мартышка к старости..."© |
|||
10
Злопчинский
17.11.12
✎
21:00
|
ну так вопрос (5) - ...?
|
|||
11
Shaman100M
17.11.12
✎
21:18
|
попробовать записать элемент с повторяющимся кодом (при установленной уникальности), отследить когда выдается предупреждение 1с, "до" исполнения процедуры ПриЗаписи() или "после"
|
|||
12
polOwnik
17.11.12
✎
21:27
|
(0) Имхо все таблицы, связанные с данным документом.
Это могут быть справочники клиентов, товаров, договоров и.т.д. (торговля). Кто-то может в них сидеть при твоей записи в режиме редактирования. |
|||
13
КонецЦикла
17.11.12
✎
21:30
|
При записи тоже, конечно, блокирует
И журнал, и таблицу с номерами и таблицы документа Очевидно что при записи и блокирует :) Попробуй на SQL на простой базке позыреть в профайлере |
|||
14
PZh
17.11.12
✎
21:38
|
(5) При выполнении ПриЗаписи() - никакой блокировки нет, если вы конечно в коде что-то не пишете или проводите.
Блокировка начинается сразу после выхода из процедуры ПриЗаписи() |
|||
15
PZh
17.11.12
✎
21:40
|
+(14) Т.е. ПриЗаписи() - ничем принципиально не отличается от любой другой процедуры в модуле формы.
|
|||
16
PZh
17.11.12
✎
21:44
|
(0) С ВводНового - тоже самое, перед началом работы первой процедуры в модуле (ВводНового или ПриОткрытии?) происходит коротенькая блокировочка таблиц 1SDNLOCK и 1SUIDCTL и все.
|
|||
17
polOwnik
17.11.12
✎
21:51
|
Есть такое понятие:
"целостность баз данных". Считаю, что 1С это соблюдает. Поэтому обязана не позволять запись при открытых связанных таблицах в момент записи. |
|||
18
Злопчинский
17.11.12
✎
23:17
|
спсб за пояснения.
|
|||
19
Torquader
17.11.12
✎
23:34
|
(17) Что значит "открытых таблицах". У семёрки есть только блокировки таблиц в момент записи.
Блокировка же объекта при открытии формы реализуется через специальную таблицу. |
|||
20
Злопчинский
17.11.12
✎
23:58
|
(19) а в какой табличке в дбф базе можно это посмотреть?
|
|||
21
Mikeware
18.11.12
✎
10:16
|
(19) не через таблицу, а через механизм блокировочных файлов.
|
|||
22
ptitsa-radio
18.11.12
✎
10:21
|
(17) и всеже лочить весь журнал при проведении одного документа, на мой взгляд - излишество )))
Кстати, там еще с распределением ресурсов процессора при транзакциях в терминальном режиме есть дурка. Лекарство - vksleep.dll. |
|||
23
Злопчинский
18.11.12
✎
10:25
|
(21) Посмотреть бы какая форма приводит к блокировке...
|
|||
24
ptitsa-radio
18.11.12
✎
10:28
|
(23) а вы уверены, что это - форма? Это может быть окошко предупреждения, например. Есть отдельные умельцы, которые лепят их в модули проведения. Да еще и без ограничения по таймауту.
|
|||
25
Mikeware
модератор
18.11.12
✎
10:32
|
(22) "лочить весь журнал" - защита от отдновременного проведения. т.е. защита целостности и достоверности. Уж "как шмогли", на 1996 год это было весьма неплохо. ну а потом исторически тянулось...
(21) "ты скажи - ты скажи, чо те надо - чо те надо..." |
|||
26
Злопчинский
18.11.12
✎
10:57
|
(24) это тоже понятно...
|
|||
27
Нуф-Нуф
18.11.12
✎
11:00
|
переходите на 8ку
|
|||
28
Mikeware
18.11.12
✎
11:38
|
(27) там другие проблемы.
|
|||
29
lift
18.11.12
✎
12:00
|
(0) а зачем тебе углюбляться в эти проблемы!? Так и будет всегда!!! В 1с 7.7 при записи, при проведении блокируются как минимум 3 таблицы, делаю ударение на 3 таблицы полностью!!! Восьмерка, которая декларирует блокировку на уровне записей похоже буксует! По 7.7 ЗиК, юзер работающий один не монопольно, проводит расчет зп очень долго! Монопольно в разы быстрее! Так что забей!
|
|||
30
Mikeware
18.11.12
✎
12:10
|
(29) "Never say never again"©
Некоторыми методами эта проблема успешно решается. правда, не на файловой базе. |
|||
31
Torquader
18.11.12
✎
23:36
|
(19) Чего-то я посмотрел в базу семёрки - там только новые номера документов 1sdnlock и количество открытых пользователем объектов в 1susers, я, видимо, с последней и спутал - там хранится количество открытых объектов для защиты целостности базы методом проверки этого количества при открытии базы - если не ноль, то где-то кто-то упал.
|
|||
32
Злопчинский
18.11.12
✎
23:38
|
итого: пока инструмента нет...
|
|||
33
Cthulhu
18.11.12
✎
23:41
|
(32): эээ... для чего их нет?
|
|||
34
Torquader
18.11.12
✎
23:41
|
Если уж очень интересно, то можно открыть базу по сети и посмотреть снифером - какие пакеты передаются при работе базы - сразу станет ясно, что она делает.
А вообще, ПриЗаписи и ВводНового ничего не блокируют. Блокировка возникает в момент создания нового объекта, а это происходит до вызова "ВводНового". Также и в ПриЗаписи - сначала система вызывает процедуру, которая определяет возможность записи (не забываем про СтатусВозврата(0), который позволяет отменить запись). |
|||
35
Злопчинский
19.11.12
✎
00:00
|
(33) база дбф, 7.7, длительная блокировка где-то - попытки записать/провести документ вываливают занятость общего журнала. вопрос - кто?
|
|||
36
Cthulhu
19.11.12
✎
00:20
|
(35): дето-ктото-чтото делал, в виде вк вроде.
а так, "в лоб" - тупо решается программно, ручками и трудоемко. |
|||
37
Злопчинский
19.11.12
✎
00:31
|
пичалька...
|
|||
38
kiruha
19.11.12
✎
00:36
|
(0)
Все ссылки документов хранятся в одной таблице 1SJourn =1SJOURN |Журналы |A |1SJOURN |1 #-----Fields------- # Name |Descr |Type|Length|Precision F=IDJOURNAL |ID of Journal |C |4 |0 F=IDDOC |ID Document |C |9 |0 F=IDDOCDEF |ID Def Document |C |4 |0 F=APPCODE |Application code |N |3 |0 F=DATE |date |D |8 |0 F=TIME |Time |C |6 |0 F=DNPREFIX |Prefix Document No |C |18 |0 F=DOCNO |Document No |C |10 |0 Соответственно при любом изменении документа полей номер дата ссылка, например при вводе нового, будет заблокирована эта общая для всех таблица Также блокировка накладывается в ЛЮБОЙ транзакции считывающей данные из этой таблицы Например идиотическое создание быстрая Продажа Необходимо убра |
|||
39
Злопчинский
19.11.12
✎
00:52
|
и?
|
|||
40
dedmoroz777
19.11.12
✎
00:55
|
и умер. Прежде чем такое советовать, необходимо точно знать кто и зачем блокирует. Снятие блокировок чревато разрушением данных.
|
|||
41
Злопчинский
19.11.12
✎
00:56
|
(40) ну тут ка краз задачи и стоит - обнаружить почему блокировка получается.. а уж когда отловить - там все проще...
|
|||
42
dedmoroz777
19.11.12
✎
00:57
|
модальное окно скорей всего
|
|||
43
dedmoroz777
19.11.12
✎
01:01
|
по опере часто помогает опера-настройки-общие настройки-веб страницы-галочка подогнать по ширине
|
|||
44
sttt
19.11.12
✎
03:34
|
я этим пользуюсь http://technet.microsoft.com/ru-ru/sysinternals/bb896645 если нужно посмотреть что творит
|
|||
45
kiruha
19.11.12
✎
11:53
|
(39)
Собственно ответ был исчерпывающим - блокировка накладывается в любой транзакции ,в т.ч. при предопред процедур, кроме справочников Основные причины - убрать все предупреждения, вопросы из транзакций(в т ч. призаписи и т.д.), убрать или модернезировать быструю продажу и ее аналоги, оптимизировать проведение - не должно быть запросов и проведения задним числом Отладчиком протись по модулям - замерить время |
|||
46
kiruha
19.11.12
✎
11:59
|
поправка - в любой транзакции где есть обращение хоть к одному документу
|
|||
47
Злопчинский
19.11.12
✎
18:36
|
(45) противоречие.
ранее другими пиплами сказано было, что, например при предопределенной в документе ПРиЗаписи() - никаких транзакций не накладывается, транзакция запускается после выхода из ПриЗаписи() со статусомвозврата=1 . где правда? |
|||
48
Cthulhu
19.11.12
✎
19:53
|
(47): правда - то, шо "ранее другими пиплами ..."
|
|||
49
kiruha
19.11.12
✎
20:18
|
(47)
Видимо ПриЗаписи не является транзакцией в 1С 7.7 |
|||
50
kiruha
19.11.12
✎
20:32
|
Добавил для эксперимента в ПриЗаписи
НачатьТранзакцию(); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Реализация = Документ.Реализация.ТекущийДокумент; |" ; // Если ошибка в запросе, то выход из процедуры Запрос.Выполнить(ТекстЗапроса) ; Предупреждение("Задержка"); ЗафиксироватьТранзакцию(); Запустил "двух" пользователей. На одном пользователе запустил сохранение на Предупреждение не нажимаю, второй пользователь при попытке сохранения нарвался на ожидание захвата таблиц |
|||
51
Злопчинский
19.11.12
✎
21:08
|
(50) ну так ты явно транзакцию запустил ;-)
убери транзакцию - по идее все пройдет... |
|||
52
kiruha
19.11.12
✎
21:31
|
(51)
Ну так я и писал про транзакции. Если убрать пройдет, так как в ПриЗаписи семерка запускает транзакцию только в момент записи, после кода |
|||
53
PZh
19.11.12
✎
21:50
|
(50) а почему должно было быть иначе? Или что бы изменилось если добавить этот код во внешнюю обработку в процедуру с каким нибудь названием типа "Сформировать()"???
|
|||
54
PZh
19.11.12
✎
21:53
|
По сабжу. Проводи в монопольном режиме все тяжелые документы - тот который будет дольше всех тупить пробей по отладчику таймером. Найдешь там код жрущий большой кусок времени - его и думай.
|
|||
55
Злопчинский
20.11.12
✎
01:10
|
(54) это катит при простой логике... там куча действий при интерактивной записи дока...
|
|||
56
МуМу
20.11.12
✎
01:36
|
Еще 100 вопросов и буду вспоминать почему в 7-ке блокировки возникают. Откуда такие рудименты?;) Ну а если серьезно смотри операции на запись. Какие нибудь единые константы с номерацией?(например мод)
|
|||
57
Злопчинский
20.11.12
✎
01:44
|
(56) поржать и я могу... проблема вообщем не у меня.. ;-)
|
|||
58
ptitsa-radio
20.11.12
✎
02:06
|
(51)В модуле проведения транзакция возникает автоматически. И если там прописать Предупреждение("Задержка"), то все будут висеть до победного. Я в такое наступала один раз (код был не мой, разумеется))))
|
|||
59
Злопчинский
20.11.12
✎
02:48
|
(58) эт понятно...
там у чела есть у меня подозрение на одну байду, посоветовал убрать, посмотрим... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |