v7: Таблица 1SJOURN SQL #736059


#0 by alexandr_87
Убрал табллок на таблицу журнала, вопрос к чему это может провести??? Плюс в том что при вводе нового документа даже если кто-то проводит другой документ не выскакивает "time out expired..."
#1 by zulu_mix
увеличить таймаут на скуле не предлагать?
#2 by alexandr_87
так это ничего не даст, увеличит время ожидания пользователя, а тут нужна оперативность...
#3 by vde69
коллизии при одновременной записи одного обьекта Петя открыл док 1, установил 200р Вася открыл док 1, установил 300р Петя записал и закрыл док Вася записал и закрыл док как Вы думаете что будет думать Петя об сумме документа?
#4 by Sorm
Что Петя будет о Васе - гораздо важнее:)
#5 by alexandr_87
tabllock я снял только с 1sjourn а из хранимой процедуры самого документа оставил, если петя открыл док1 то вася не сможет его открыть
#6 by Serg_1960
Хуже то, что Петя и Вася могут не думать о сумме до тех пор, когда станет уже поздно думать. "Трясти надо!"(с)
#7 by vde69
догадайся какие документов поля хранятся в общем журнале :) а вообще конечно нужно думать о транзакциях в целом, в том числе и о грязном чтении в чужой транзакции...
#8 by zulu_mix
вся шапка кроме проведения
#9 by Z1
(0, 2) Это как в анекдоте -А можете печатать 1000 знаков в минуту -Могу.Но такая х получается. Если одним словом то как в 0 делать нельзя. Если как бы убираешь блокировки стандартные то вместо них надо ставить свои блокировки
#10 by Z1
Что-то не то говоришь. Два пользователя не могут открыть один документ на редактирование. за это отвечает файловая блокировка. А вот если при 0 будут проводиться два документа и они одновремено полезут к одним итогам (таблицы rg ) по регистрам то итоги "полетят"
#11 by alexandr_87
на таблице "проводки" есть блокировка,уже проверял запустил проведение одного документа,в это время записал другой без пробел а вот провести не пропускает "Блокировка таблицы Проводки".
#12 by Z1
Но ситуация тоже может быть плачевной если действия делать не итерактивно а программно через СоздатьОбъект
#13 by alexandr_87
надо еще много разных тестов,провести....
#14 by Z1
причем тут проводки у тебя полетят итоги по бух проводкам и обороты по бух проводкам.название таблиц не помню но могу посмотреть. ты понимаешь полностью что написано в если нет то верни лучше все обратно
#15 by Z1
удачи ... Особенно если будешь делать на белой бух базе и по этой базе сдашь декларацию по новой форме 2015.
#16 by alexandr_87
пока все в тестовой, ты имеешь в виду что будут записаны не правильные данные в таблице проводок?
#17 by Z1
В тестовой у тебя все будет идеально ты же в ней один работаешь. В рабочей все будет грустно. проводки будут правильно в любом случае записаны и в рабочей базе но помимо проводок есть итоги, обороты и.т.д.
#18 by alexandr_87
Дело говоришь:). Вот бы узнать как софт пойнт гибкие блокировки использует....
#19 by ADirks
Так у них на сайте всё расписано. По крайней мере было раньше.  Вместо tablock используют rowlock, только и всего :)
#20 by torgm
есть компонента toysql позволяет блокировки снимать правильно, к ней дополнительно набор скриптов, у ставил трем клиентам, полет нормальный
#21 by vde69
я вообще не понимаю зачем это делать? при штатных настройках 7.7 вполне тянет по сети 15 человек фигачавших документы..... разумеется если код не кривой...
#22 by VladZ
Зачем? Найди код, который всех вешает и оптимизируй.
#23 by Z1
так просто. но на некоторых наборах данных (или из-за особенностей документов) такое решение может приводить наоборот к взаимоблокировкам. Пример попробуйте при таком решении подгрузиться из УРБД.
#24 by mvk
Привет. Не мое. Точнее частично. К сожалению не помню автора - давно это было. К этому еще можно пользовательские блокировки прикрутить.     if ExclusiveMode=0 then         if FS.ExistFile(IbDir+"1cv7.dds")=1 then             constr=ConnectionString;             if ConStr<>0 then                 |alter procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, d CHAR OUTPUT) AS                 |select d=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid                 |if d is null select d='         '";                 try                 except                     err=err+?(err<>"",linebreak,"")+"Не выполнена модификация счетчика идентификаторов документов и справочников..."+linebreak+                 |alter procedure _1sp__1SENTRY_MaxRowID( INTEGER OUTPUT) AS                 |set nocount on                 |select =@@IDENTITY                 |if is null select =0";                 except                     err=err+?(err<>"",linebreak,"")+"Не выполнена модификация счетчика идентификаторов проводок..."+linebreak+                 |alter procedure _1sp__1SOPER_MaxRowID( INTEGER OUTPUT) AS                 |set nocount on                 |select =@@IDENTITY                 |if is null select =0";                 except                     err=err+?(err<>"",linebreak,"")+"Не выполнена модификация счетчика идентификаторов операций..."+linebreak+                 |alter procedure _1sp__1SCONST_MaxRowID( INTEGER OUTPUT) AS                 |set nocount on                 |select =@@IDENTITY                 |if is null select =0";                 except                     err=err+?(err<>"",linebreak,"")+"Не выполнена модификация счетчика идентификаторов констант..."+linebreak+                 |execute(@sql)                 |select @sql = 'alter procedure _1sp_'+@sc_name+'_TLockX AS set nocount on declare integer select =1 from '+@sc_name+' (ROWLOCK HOLDLOCK XLOCK) where 0=1'                 |execute(@sql)                 |select @sql = 'alter procedure _1sp_'+@ra_name+'_TLockX AS set nocount on declare integer select =1 from '+@ra_name+' (ROWLOCK HOLDLOCK XLOCK) where 0=1'                 |execute(@sql)                 |select @sql = 'alter procedure _1sp_'+@rg_name+'_TLockX AS set nocount on declare integer select =1 from '+@rg_name+' (ROWLOCK HOLDLOCK XLOCK) where 0=1'                 |execute(@sql)                 |select @sql = 'alter procedure _1sp_'+@dt_name+'_TLockX AS set nocount on declare integer select =1 from '+@dt_name+' (ROWLOCK HOLDLOCK XLOCK) where 0=1'                 qwerty="declare dh_cur cursor for                 |execute(@sql)                 |select @sql = 'alter procedure _1sp_'+@dh_name+'_TLockX AS set nocount on declare integer select =1 from '+@dh_name+' (ROWLOCK HOLDLOCK XLOCK) where 0=1'                     err=err+?(err<>"",linebreak,"")+"Не выполнена очистка таблицы соединений..."+linebreak+                     except                         err=err+?(err<>"",linebreak,"")+"Не выполнено удаление проводок по непроведенным документам..."+linebreak+                     except                         err=err+?(err<>"",linebreak,"")+"Не выполнено удаление проводок по несуществующим документам..."+linebreak+                     except                         err=err+?(err<>"",linebreak,"")+"Не выполнено удаление проводок по несуществующим операциям..."+linebreak+                     except                         err=err+?(err<>"",linebreak,"")+"Не выполнено удаление операций по несуществующим документам..."+linebreak+             else                 err=err+?(err<>"",linebreak,"")+"Неверные параметры соединения с базой данных SQL сервера..."+linebreak+ ...
#25 by mvk
Хм. Под этим: "; target="_blank" class="registered-user"> была просто собака. ЗЫ. Это надо в глобальник.
#26 by mvk
Блин, опять подмена. Все, что начинается с "http: и заканчивается было просто @
#27 by alexandr_87
Спасибо всем))))),будем пробовать....
#28 by vcv
А можно всё это в нормальном виде? Текстовиком на каком-нибудь файлобменнике, например.
#30 by alexandr_87
Пробовал при проведение документа выходит ошибка "invalid cursor state..." и посля этого программа вылетает..
#31 by mvk
Не должно из-за блокировок. Ошибку подробнее...
#32 by alexandr_87
Native: 0 Message: [Microsoft][ODBC SQL SERVER DRIVER]Invalid cursor state.
#33 by vcv
Какие-либо прямые запросы используются? В ком-то из них курсор не закрывается предположительно.
#34 by ADirks
Это да, стоит слегка налажать с блокировками - и здрассьте дедлоки, или, что ещё хуже, косячные данные. Потому то в 77 и не стали таких вольностей позволять. Чтобы порог вхождения понизить.
#35 by mvk
Релиз 1С? Какой SQL?
#36 by alexandr_87
1c 7.7 27 релиз, SQL 2005
#37 by varelchik
Ха! А как подружил 7.7 и 2005?
#38 by alexandr_87
#39 by mvk
Свойства базы надо бы глянуть. Да и dbcc checkdb не помешает (после бэкапа)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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