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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Проблема с записью справочника
22. Января 2010 :: 11:28
Печать  
заранее сорри если не в тот раздел написал

вобщем проблема в следующем
есть справочник с периодическими реквизитами
пользователи обратились, говорят есть два элемента
в которые нельзя сохранить изменения - посмотрел
и правда не сохраняются . Полез в профайлер
там наблюдаю такую ситуацию
устанавливается режим
set implicit_transactions on
после этого идет апдейт и тут же идет чтение из 1sconst
так вот для этик "кривых" элеметов при чтении открывалается еще одна транзакция в результате в коце коммит идет не "по той " транзакции и данные не апдейтятся

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

кто что подскажет присоветует ??
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #1 - 22. Января 2010 :: 11:37
Печать  
_1sconst триггеров нет?
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #2 - 22. Января 2010 :: 11:39
Печать  
Самое простое выгрузи значения этих двух элементов(их периодику ) в два файла сотри их периодичность.
Загрузи из файлов периодичность заново.

Распиши (если не будешь делать как написано выше) боле подробней проблему т.е. трассу событий
предположим что запускаешь 1с с того же sql сервера
Далее что при этом происходит в t-sql операторах.
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #3 - 22. Января 2010 :: 11:43
Печать  
тригеров на _1sconst нету
по поводу выгрузки / загрузки

для начала сейчас попробую определиться
это в кол-ве возвращаемых строк или
в значениях
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #4 - 22. Января 2010 :: 12:17
Печать  
вобщем с кол-вом записей нет четкой зависимости
нашел вроде запись после добавления которой
возникает проблема, но похоже что такая запись
не одна...
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Проблема с записью справочника
Ответ #5 - 22. Января 2010 :: 13:10
Печать  
kir писал(а) 22. Января 2010 :: 11:28:
устанавливается режим
set implicit_transactions on
после этого идет апдейт и тут же идет чтение из 1sconst
так вот для этик "кривых" элеметов при чтении открывалается еще одна транзакция в результате в коце коммит идет не "по той " транзакции и данные не апдейтятся

врядли там остается открытая транзакция. В режиме mplicit_transactions on select(insert/update) не отроет новую транзакцию, если она уже отрыта(если ее явно не отрывать begin tran). Т.е. закоммитится инсерт в _1sconst должен если он там есть.
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #6 - 22. Января 2010 :: 13:40
Печать  
там нету инсерта в _1sconst
открывается новая транзакция
на
exec sp_executesql N'Select * from _1SCONST(NOLOCK) where ID=@P1 and OBJID=@P2 and DATE<=@P3 order by ID DESC, OBJID DESC, DATE DESC, TIME DESC, DOCID DESC', N'@P1 int,@P2 varchar(9),@P3 datetime', 52722, '     1   ', 'Jan 22 2010 12:00:00:000AM'

причем если выборка "небольшая" до 170 строк (или от объма зависит не понял до конца)
не открывается
если больше - начинает открываться новая транзакция
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #7 - 22. Января 2010 :: 13:53
Печать  
попробовал на другой базе
нагенерировал 1000 значений периодич
реквизита для этого же справочника
получил ту же проблему...
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #8 - 22. Января 2010 :: 14:09
Печать  
kir писал(а) 22. Января 2010 :: 11:28:
при чтении открывалается еще одна транзакция

А как это выглядит в профайлере? что прямо таки явно begin tran?

Можно взглянуть на .trc начиная с
set implicit_transactions on
заканчивая
IF @@TRANCOUNT > 0 COMMIT TRAN
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #9 - 22. Января 2010 :: 14:40
Печать  
а как вложить файл , подскажите пожалуйста кто нибудь ??
(ни разу не делал)
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #10 - 22. Января 2010 :: 14:42
Печать  
все, раскрыл глаза...увидел

трасса во вложении
  

trace.trc ( 50 KB | Загрузки )
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #11 - 22. Января 2010 :: 14:55
Печать  
по поводу того что "как определяю что открывается новая транзакция", это мои предположения т.к. после этой инструкции изменяется transactionID
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Проблема с записью справочника
Ответ #12 - 22. Января 2010 :: 15:28
Печать  
хм, но там и коммитится нечему: Writes для этого батча 0 Озадачен Запись с ROW_ID = 1 есть в таблице?
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #13 - 25. Января 2010 :: 06:56
Печать  
да, есть , этот как раз запись которая апдейтится
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #14 - 25. Января 2010 :: 07:25
Печать  
да, фигня какая то наблюдается.
для порядка приведи версии 1с77, odbc драйвера, sql сервера
  

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #15 - 25. Января 2010 :: 07:39
Печать  
По идее если транзакция осталась не закрытой, то все изменения после, при выходе из сеанса будут отменены т.е. потеряны.
Такое наблюдается?

ps
посмотри @@trancount на этой сессии после сохранения проблемного элемена
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #16 - 25. Января 2010 :: 08:07
Печать  
1С 25 релиз
SQL 8.00.2055(sp4) и 8.00.2039 - пробовал на двух серверах/базах
ODBC (если я правильно нашел) 4.0

может сегодня попробую собрать тестовую конфу с одним справочником, если получится сэмулировать ситуацию, совсем
будет интересно
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #17 - 25. Января 2010 :: 08:27
Печать  
@@trancount возвращает 0
после проблемной записи

да и другие элементы пишутся

что еще заметил, если пытаться много раз выполнить запись
в конце концов удается сохранить
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #18 - 25. Января 2010 :: 09:17
Печать  
в процедуре ПриЗаписи нет никаких "танцев с бубном"?
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #19 - 25. Января 2010 :: 10:25
Печать  
я вообще от греха модуль формы закомментировал
"чтобы не сомневаться"
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #20 - 25. Января 2010 :: 11:13
Печать  
в пустой конфе создал справочник с такой же структурой
и заполнил периодич. реквизит - проблемы нет

в своих двух конфах создал пустые базы - проблема есть

добавил в типовую комплексную справочник с такой же структурой
проблемы нет

вывод: перехимичили чего то у себя....
(как бы только понять чего)

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #21 - 25. Января 2010 :: 11:18
Печать  
kir писал(а) 25. Января 2010 :: 11:13:
в пустой конфе создал справочник с такой же структурой
и заполнил периодич. реквизит - проблемы нет

в своих двух конфах создал пустые базы - проблема есть

добавил в типовую комплексную справочник с такой же структурой
проблемы нет

вывод: перехимичили чего то у себя....
(как бы только понять чего)


Сколько элементов в таблице Константы
select count(*) from _1sconst ?
Переиндексируй эту таблицу и обнови статистику.
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #22 - 25. Января 2010 :: 11:39
Печать  
в своей конфе закомментировал ПриНачалеРаботыСистемы
все заработало, так что по любому проблема в коде... а не в данных
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #23 - 25. Января 2010 :: 12:41
Печать  
kir писал(а) 25. Января 2010 :: 11:39:
в своей конфе закомментировал ПриНачалеРаботыСистемы
все заработало,
удалось ли найти "виновного"?
  

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


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #24 - 25. Января 2010 :: 13:18
Печать  
вот только что "накопал"
при начальной инициализации используется сетовая установка

set xact_abort on

убираю ее - пропадает проблема
пока не вкурил взаимосвязь...
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #25 - 25. Января 2010 :: 13:31
Печать  
еще уточнение
проблема возникает когда используется комбинация

set xact_abort on

begin tran
.......


commit


почему - без понятия
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #26 - 25. Января 2010 :: 14:04
Печать  
set xact_abort off
спасает, но мне лично все равно не понятно
почему так...
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #27 - 25. Января 2010 :: 14:16
Печать  
kir писал(а) 25. Января 2010 :: 14:04:
set xact_abort off
спасает, но мне лично все равно не понятно
почему так...

Почему не понятно ?
Может какую то логику отказов Выполняет 1c.exe
а ты эту логику нарушаешь - если возникает ошибка то сразу прерываем откатом транзакцию а может 1с.exe  допускает некоторые ошибки в транзакциях
например как в твоем случае будет работать обновление регистров
update
if error then  insert

Т.е  после нач инициализации надо отключать
xact_abort off
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #28 - 25. Января 2010 :: 14:34
Печать  
не понятно почему новая транзакция возникает после селекта
и только в случае "большой" выборки
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Проблема с записью справочника
Ответ #29 - 25. Января 2010 :: 14:40
Печать  
kir писал(а) 25. Января 2010 :: 14:34:
не понятно почему новая транзакция возникает после селекта
и только в случае "большой" выборки

попробуй свою большую выборку запустить когда больше никто в этой базе не работает. Я думаю что все пройдет даже когда
set xact_abort on
  
Наверх
 
IP записан
 
kir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 19. Мая 2006
Re: Проблема с записью справочника
Ответ #30 - 26. Января 2010 :: 09:09
Печать  
я на локальной базе пробовал , в монопольном режиме...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать