Переключение на Главную Страницу Страницы: 1 2 3 [4]  ОтправитьПечать
Очень популярная тема (более 25 ответов) операции без документа (число прочтений - 10133 )
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: операции без документа
Ответ #45 - 01. Октября 2009 :: 13:14
Печать  
Z1 писал(а) 01. Октября 2009 :: 12:55:
gls писал(а) 01. Октября 2009 :: 12:44:
Z1 писал(а) 01. Октября 2009 :: 12:36:
Цитата:
триггеров на документах нет
похоже что не отрабатывается код 1С, соттветствующий записи данных в _1sjourn
Тогда бы ни в одном сохраненном документе не было бы номера. Так как документы Вы видите значит они записываются.

Если документ не может записаться то 1с откатывается по транзакции
с ошибкой. Ход этих событий могут изменить тригеры своей внутренней логикой.

после записи проблемным пользователем нового дока - номер док и дата обнуляются
док, созданный пользователем никто, кроме него не видит.

так узнайте id этого процесса sql и смотрите в профайлере что
происходит при записи нового документа.



сейчас подключиться под ним не получается
ранее -  профайлер по его @@spid не показывал какие-либо действия с _1sjourn:
до записи дока - инфа была
запись - инфы нет. никакой

upd: видимо был разрыв сети.
повторное натравливание профайлера на проблемный процесс никаких отличий от нормального процесса не показал
« Последняя редакция: 01. Октября 2009 :: 14:42 - gls »  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #46 - 01. Октября 2009 :: 13:28
Печать  
ну 100 тригер.
1.Попробуйте под этой учетной записью зайти под другим пользователем 1с.

2.Попробуйте убить и пересоздать Вашу "подозрительную" уч запись.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #47 - 01. Октября 2009 :: 14:06
Печать  
(0) Создайте по Вашему md еще одну базу  1с sql пустую стандартную.В ней вообще изначально нет тригеров.
И в этой базе создай документ под плохой учетной записью и под хорошей учетной записью при этом файл пользователей 1с возьми
из базы где "псевдоошибка"
  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: операции без документа
Ответ #48 - 01. Октября 2009 :: 14:40
Печать  
berezdetsky писал(а) 01. Октября 2009 :: 12:45:
gls писал(а) 01. Октября 2009 :: 11:40:
доку присваивается тот же айдишник, что и у открытой у пользователя №1 формы.  

Этому горю не сложно помочь - нужно блокировать строку в _1sp__1SUIDCTL_GetMaxID. 1С этого не делает при штатных блокировках за ненадобностью. Но лучше
trad писал(а) 01. Октября 2009 :: 11:44:
верни блокировки на свое законное место

trad дурного не посоветует.  Подмигивание



смотрю профайлер:

set implicit_transactions on  --режим неявных транзакций

exec _1sp__1SJOURN_TLockX --ничего не происходит

declare @P1 char(9)
set @P1='  1TFV   '
exec _1sp__1SUIDCTL_GetMaxID 0, @P1 output  --начинается транзакция, т.к. в хп есть select

select @P1

текст _1sp__1SUIDCTL_GetMaxID:

CREATE procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, @id CHAR(9) OUTPUT) AS
select @id=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid
if @id is null select @id='         '    
                                           

какая блокировка требуется, на Ваш взгляд?
  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: операции без документа
Ответ #49 - 01. Октября 2009 :: 14:47
Печать  
Z1 писал(а) 01. Октября 2009 :: 13:28:
ну 100 тригер.
1.Попробуйте под этой учетной записью зайти под другим пользователем 1с.

2.Попробуйте убить и пересоздать Вашу "подозрительную" уч запись.

1. вход под этой учеткой под другим пользователем дает ту же ошибку
2. так и сделаю.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #50 - 01. Октября 2009 :: 15:09
Печать  
gls писал(а) 01. Октября 2009 :: 14:40:
berezdetsky писал(а) 01. Октября 2009 :: 12:45:
gls писал(а) 01. Октября 2009 :: 11:40:
доку присваивается тот же айдишник, что и у открытой у пользователя №1 формы.  

Этому горю не сложно помочь - нужно блокировать строку в _1sp__1SUIDCTL_GetMaxID. 1С этого не делает при штатных блокировках за ненадобностью. Но лучше
trad писал(а) 01. Октября 2009 :: 11:44:
верни блокировки на свое законное место

trad дурного не посоветует.  Подмигивание



смотрю профайлер:

set implicit_transactions on  --режим неявных транзакций

exec _1sp__1SJOURN_TLockX --ничего не происходит

declare @P1 char(9)
set @P1='  1TFV   '
exec _1sp__1SUIDCTL_GetMaxID 0, @P1 output  --начинается транзакция, т.к. в хп есть select

select @P1

текст _1sp__1SUIDCTL_GetMaxID:

CREATE procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, @id CHAR(9) OUTPUT) AS
select @id=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid
if @id is null select @id='         '    
                                           

какая блокировка требуется, на Ваш взгляд?

смотри профайлер полностью до конца до окончания транзакции
сделай тоже самое под хорошей уч записью.
Что должно выполняться  при правильной работе для нового документа есть в ветке где лежит моя обработка.
Если _1sp__1SUIDCTL_GetMaxID возвращает @id='         '  только для одной учетной записи то это означает что под этой учетной записью нет доступа к таблице _1SUIDCTL или на эту таблицу может какая view есть.
@id='         '  это означает что в базе вообще нет ни обного документа чего быть не может.
Т.е. у тебя в базе что-то переопределяется для этой учетной записи.
Сделай в md новый документ "Тест" только номер дата нумерация без уникальности док без движений и проводок.
в глоб модуле поставь
Код
Выбрать все
Процедура ПриНачалеРаботыСистемы()
// тестирует простейший документ
   ОткрытьФорму.("Документ.Тест",,);
   return;
.....
КонецПроцедуры
 


и создавай документ для хорошей и плохой учетной записи.
скажи результат здесь.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #51 - 01. Октября 2009 :: 16:49
Печать  
gls писал(а) 01. Октября 2009 :: 14:40:
текст _1sp__1SUIDCTL_GetMaxID:

CREATE procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, @id CHAR(9) OUTPUT) AS
select @id=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid
if @id is null select @id='         '    
                                           

какая блокировка требуется, на Ваш взгляд?

Я не знаю что ты тут ожидал получить.
Но если целью была блокировка до конца транзакции (т.е. до commit tran), то не хватает holdlock.

ps
а вообще, по фотографии лечить не умею
  

1&&2&&3
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #52 - 01. Октября 2009 :: 20:47
Печать  
Ожидал он невозможности получения одинаковых ID в параллельных транзакциях, а получил лишь невозможность одновременной их записи. Но все транзакции когда-нибудь заканчиваются.. Круглые глаза Правильным было бы xlock, rowlock. Хотя, на фоне прочих проблем это будет, как мёртвому припарка.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #53 - 02. Октября 2009 :: 04:47
Печать  
trad писал(а) 01. Октября 2009 :: 16:49:
gls писал(а) 01. Октября 2009 :: 14:40:
текст _1sp__1SUIDCTL_GetMaxID:

CREATE procedure _1sp__1SUIDCTL_GetMaxID(@tid INTEGER, @id CHAR(9) OUTPUT) AS
select @id=MAXID from _1SUIDCTL(UPDLOCK)  where TYPEID=@tid
if @id is null select @id='         '    
                                           

какая блокировка требуется, на Ваш взгляд?

Я не знаю что ты тут ожидал получить.
Но если целью была блокировка до конца транзакции (т.е. до commit tran), то не хватает holdlock.

ps
а вообще, по фотографии лечить не умею

Да уж. У автора subj стандартная 1с работает  Улыбка
ps
Да уж из меня тоже плохой доктор   Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #54 - 02. Октября 2009 :: 05:00
Печать  
Цитата:
Да уж. У автора subj стандартная 1с работает

Цитата:
select @id=MAXID from _1SUIDCTL(UPDLOCK)
- это не стандартная. В стандартной NOLOCK.

А вот вместо этого
Цитата:
exec _1sp__1SJOURN_TLockX --ничего не происходит
в стандартной происходит (TABLOCKX HOLDLOCK)
  

1&&2&&3
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #55 - 02. Октября 2009 :: 05:05
Печать  
trad писал(а) 02. Октября 2009 :: 05:00:
Цитата:
Да уж. У автора subj стандартная 1с работает

Цитата:
select @id=MAXID from _1SUIDCTL(UPDLOCK)
- это не стандартная. В стандартной NOLOCK.

А вот вместо этого
Цитата:
exec _1sp__1SJOURN_TLockX --ничего не происходит
в стандартной происходит (TABLOCKX HOLDLOCK)

я знаю. я же смайлик  поставил.
ну а автору ты уже ответил

trad писал(а) 01. Октября 2009 :: 11:44:
верни блокировки на свое законное место

  
Наверх
 
IP записан
 
gls
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 51
Зарегистрирован: 14. Июля 2008
Re: операции без документа
Ответ #56 - 05. Октября 2009 :: 06:17
Печать  
с ошибкой разобрались.
дело было в логине, под которым пользователь заходил на терминальник:
в проблемном пользователе логин содержал одинарную кавычку: s'ivanov

после замены "плохих" логинов на "хорошие" - описанная ошибка не повторялась.
в каком именно коде наличие одинарной кавычки приводило к описанной ошибке выяснить не удалось.

всем спасибо за помощь.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: операции без документа
Ответ #57 - 05. Октября 2009 :: 06:36
Печать  
gls писал(а) 05. Октября 2009 :: 06:17:
с ошибкой разобрались.
дело было в логине, под которым пользователь заходил на терминальник:
в проблемном пользователе логин содержал одинарную кавычку: s'ivanov

после замены "плохих" логинов на "хорошие" - описанная ошибка не повторялась.
в каком именно коде наличие одинарной кавычки приводило к описанной ошибке выяснить не удалось.

всем спасибо за помощь.

Ну и еще желательно в учетных записях использовать только английские буквы и цифры а то тоже может вылезти где нибудь .

С символом кавычка у меня тоже были проблемы. Банковскую выписку обрабатываю прямым запросом sql. Иногда в назначение платежа был '  - Около месяца ловил этот эпизодически возникающий трабл.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 
ОтправитьПечать