Имя: Пароль:
1C
1C 7.7
v7: опять шляпа с регистрами
, ,
0 monsterZE
 
01.08.14
14:53
сабж. чет не пойму, почему так происходит..
в этот раз взаиморасчеты. в RG все норм.. ибо выполняется приход расход.
в RA появились записи на чужеродный ИД.. типа движение сделал документ счет_фактура. причем следом идет нормальная запись. =(
1 Ёпрст
 
01.08.14
14:56
ну и ладно.
База какая, скуль, дбф ?
2 monsterZE
 
01.08.14
14:57
база скуль
3 monsterZE
 
01.08.14
14:59
первый раз такое.. (началось с регистра резервов) два года работало.. никаких проблем не доставляло
4 Ёпрст
 
01.08.14
15:01
5 Ёпрст
 
01.08.14
15:02
ну а так, при желании, можно сделать движение в регистр любой поделкой, хоть штатно (http://infostart.ru/public/79515/), хоть через прямой запрос
6 Ёпрст
 
01.08.14
15:02
Хотя у тебя, хз как так получилось
7 monsterZE
 
01.08.14
15:03
8 monsterZE
 
01.08.14
15:04
в том то и дело, что я (и вроде никто другой) напрямую в регистры не лазиет =(
9 monsterZE
 
01.08.14
15:04
спасибо за ссыль!
10 Ёпрст
 
01.08.14
15:06
а в журнале этот док ежели найти, у него в 1sjourn флаги взведены у этого регистра и счетчик движений ?
11 Ёпрст
 
01.08.14
15:07
ежели нет - то действительно "левая" запись, если есть...то
12 monsterZE
 
01.08.14
15:13
все RF в журнале по нулям в ACTCNT 0
13 monsterZE
 
01.08.14
15:14
если бы в базу лазали по сети.. можно было списать на какие-то ошибки оборудования.. но все крутится в терминале.. есдинственно сейчас начи решили слить все в одну базу и к ней дохрена подключений =(( ~150
14 Ёпрст
 
01.08.14
15:16
где-то я это ужо видел
15 Ёпрст
 
01.08.14
15:16
и иименно с видом дока в скуле
16 monsterZE
 
01.08.14
15:19
ну я так предполагаю - могу просто прибить эти записи из RA
т.к. итоги у меня нулевые, ничего пересчитывать не нужно
17 Ёпрст
 
01.08.14
15:20
можешь
18 Ёпрст
 
01.08.14
15:21
только желательно перед этим проверит, не от нужного ли они документа.. iddoc точно от счетфактуры ?
19 monsterZE
 
01.08.14
15:22
(18) да, это однозначно
вечером еще обработкой пройдусь.. а то оно рекомендует, чтобы в базе никого не было
20 monsterZE
 
01.08.14
15:25
iddocdef=730
T=DH730   |Документ Счет_фактура         |DH730      |
21 Ёпрст
 
01.08.14
15:34
тогда странно
22 Ёпрст
 
01.08.14
15:34
уриба нема ?
23 Ёпрст
 
01.08.14
15:35
хотя, записи приход и расход сделали..хз в общем
24 monsterZE
 
01.08.14
15:36
не, ничего такого..
25 mehfk
 
01.08.14
15:50
(0) Так бывает когда используются транзакции там, где нельзя их использовать. В семерке. Плавали - знаем.
26 mehfk
 
01.08.14
15:54
Определяйте по логике, какой вид документа у вас делает такие движения в этом регистре и потом ищите транзакции в обработке проведения.
27 monsterZE
 
01.08.14
15:57
этот регистр по факту двигают два разных расходника и приход
за наводку спасибо, просмотрю процесс проведения
но у самого счета фактуры в модуле проведения ессно ничего такого нет.. фактически он пустой
28 vcv
 
01.08.14
19:31
Было что-то подобное, когда в транзакции документы записывались и проводились. То ли где-то в глубинах глобальника вложенная транзакция получилась, то ли еще что.
29 Злопчинский
 
01.08.14
20:40
какие-то хрени про в ложенные транзакции.. нету в семерке никаких вложенных транзакций. или есть транзхакция или нет.
30 КонецЦикла
 
01.08.14
20:47
(26) Странно... обработка проведения - это и есть одна транзакция. Никогда не сталкивался, может не применял такое...
31 vcv
 
01.08.14
21:09
(29) Понимаешь, у шаловливых лапок есть всё, в том числе многократно вложенные НачатьТранзакцию - Зафиксировать/ОтменитьТранзакцию. Только не работает нихрена. А так, формально, вложенные :)
32 vcv
 
01.08.14
21:13
Когда-то у меня был примерно такой косяк:
По кнопке Провести в документе вызывалась функция, которая начинала транзакцию, в ней дёргала сказала Записать(), потом Провести(), и, в случае СтатусВозврата()=0, ОтменитьТранзакцию.
Работало это жутко криво, в регистры записывалась фигня типа (0). Притом, как я понимаю, только в случае, если запись проходила успешно, а проведение обламывалось.
Может, конечно, и не такая причина была, но, после избавления от транзакции, больше подобных проблем не возникало.
33 Злопчинский
 
01.08.14
21:17
(31) прально, потому что всего одна транзакция. Вова Ходаков может подробнее рассказать как там внутрях устроено.
34 FN
 
01.08.14
21:20
была такая же проблема при проведении стороннего документа из модуля проведения документа. при откате такой вложенной транзакции как то неправильно  снимается блокировка с таблицы, которая содержит айди новых незаписанных документов. при этом и происходит запись в регистр с чужим айди. отмена проведения проблемного дока не помогает, так как в жорнале не указано что нужно чистить 'левый' регистр.
35 Z1
 
01.08.14
21:27
(29) Вложенные Транзакции на уровне языка v77 есть

НачатьТранзакцию(); // уровень 1
   операторы1
   НачатьТранзакцию();  // уровень 2
      операторы2
   ЗафиксироватьТранзакцию(); // уровень 2
   операторы3
ЗафиксироватьТранзакцию(); // уровень 1


Все дело как их обрабатывает ms sql ( как в dbf нк знаю)
В ms sql при откате от транзакции с этого места вложенности
все транзакции закрываются как откатом транцакции.

Это как бы такая особенность ms sql. Почему так сделали не знаю.Зная такое поведение все становиться прозрачным и понятным.


Также есть еще и неявная вложенная транзакция когда в модуле проведения одного документа проводят другой документ.
как бы все работает по тому же изложенному выше правилу :
В ms sql при откате от транзакции с этого места вложенности
все транзакции закрываются как откатом транцакции.
36 ДенисЧ
 
01.08.14
21:28
"когда в модуле проведения одного документа проводят другой документ. "
.. то мы получаем (взаимо)блокировку
37 Z1
 
01.08.14
21:34
(36) не получаем.
Если вызвать явно 1с ругается по моему и не дает так делать,
если обмануть 1с :
использовать Форма.Открыть и в
модуле Приоткрытии() вызывать Провести()
то все срабатывает но с последствиями как описанро выше.

ИХМО ну как бы делать так не надо , но можно.
38 Z1
 
01.08.14
21:37
(34)   В 35 объяснение почему это происходит
( точнее может происходить если произойдет откат транзакции)
39 ДенисЧ
 
01.08.14
21:38
(37) В твоём способе мы имеем всего лишь две последовательные транзакции
40 Z1
 
01.08.14
21:42
(39) можешь проверить по профайлеру
1 уровень транзакции :
выполнение модуля проведения

2 уровень транзакции
  вызывается методом Провести() в модуле ПриОткрытии()
  заканцивается проведение вызванного документа

заканцивается проведение главного документа
41 Z1
 
01.08.14
21:49
Т.е. как бы вложенные транзакции в 1с 77 (ms sql) есть.
Они ( НачатьТранзакцию(); ЗафиксироватьТранзакцию(); ) являются обертками над
begin tran
end tran

и ведут себя вложенные транзакции один в один как описано
работа вложенных транзакций ms sql
42 КонецЦикла
 
01.08.14
22:30
(41) Было бы странно, если бы вели себя иначе :)
В общем не делайте кривых лисопетов