|
v7: Непонятная транзакция раз в день | ☑ | ||
---|---|---|---|---|
0
trinity3187
26.04.16
✎
05:13
|
Всем привет. 1с 7.7 27, ТиС 9.2
Примерно раз в день возникает ситуация, что все пользователи в 1с ничего не могут сделать, у всех ошибка транзакции. А у одного (постоянно у него) всё работает, но после перезапуска 1с его работа исчезает. Ощущение, что у него была использована команда НачатьТранзакцию() без ЗафиксироватьТранзакцию() Просмотрел весь свой код по слову НачатьТранзакцию. Везде использую одну и туже конструкцию: Попытка НачатьТранзакцию(); //код программы ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); Предупреждение(ОписаниеОшибки()); КонецПопытки; Может ли данный код приводить к моей ошибке? И вообще не могу понять как могла появиться эта ошибка, если написать НачатьТранзакцию и выйти из процедуры, то транзакция отменяется. А тут получается пользователь заблокировав всё гуляет где угодно. |
|||
1
АНДР
26.04.16
✎
05:30
|
если написать НачатьТранзакцию и выйти из процедуры, то транзакция отменяется - можно ссылку на документацию?
Ищи возврат, прервать и/или продолжить между начать и зафиксировать. |
|||
2
АНДР
26.04.16
✎
05:34
|
Проверить обработку ошибок при неявном объявлении транзакции при проведении документа.
|
|||
3
trinity3187
26.04.16
✎
05:47
|
(1) для тестирования использую внешнюю обработку с кодом:
Процедура Сформировать() НачатьТранзакцию(); док = СоздатьОбъект("Документ.ЗаявкаПокупателя"); док.Новый(); док.Записать(); Предупреждение("Привет"); Возврат; ЗафиксироватьТранзакцию(); КонецПроцедуры Когда программа стоит на "Предупреждении", у всех транзакция. Если срабатывает возврат, у всех нормально (2) а что там может быть не так, что привело бы к моей ошибке? |
|||
4
youalex
26.04.16
✎
05:48
|
Не знаю как в 7.7 (проверять лень), но в 8 Предупреждение (любое модальное окно, равно как и бряк в отладчике) в транзакции записи - ставит колом работу всех пользователей.
|
|||
5
youalex
26.04.16
✎
05:49
|
зы. Случайно, проблемный код - не в обработке проведения?
|
|||
6
trinity3187
26.04.16
✎
05:51
|
(4) да, но это проходит, когда пользователь щелкает на предупреждение. А у меня пользователь продолжает гулять по программе, создает документы, которые потом не сохраняются
|
|||
7
АНДР
26.04.16
✎
06:00
|
(3) Транзакция не закрыта, изменения не фиксируются.
|
|||
8
АНДР
26.04.16
✎
06:05
|
По особеностям блокировок 7.7 можно уточнить у 1с++ соцев, остальные уже забыли.
|
|||
9
trinity3187
26.04.16
✎
06:07
|
(7) но тогда бы не было блокировки у всех пользователей. (8) надеюсь они зайдут в мою тему)
|
|||
10
АНДР
26.04.16
✎
06:47
|
(7) Транзакция <> Блокировка.
В вашем примере снимается блокировка с 1Cjournl, а не транзакция закрывается |
|||
11
trinity3187
26.04.16
✎
06:58
|
(10) ну тогда получается у меня проблема с блокировкой. А вызвана она я предположил, что транзакциями. В своем примере я тестировал именно блокировку.
|
|||
12
АНДР
26.04.16
✎
07:28
|
В части работы других пользователей и транзакцией в рамках сеанса-виновника.
Запускай сеанс проблемного пользователя через отладчик с замером производительности и в нём ищи незакрытые транзакции. |
|||
13
trinity3187
26.04.16
✎
07:30
|
(12) Спасибо, сегодня попробую
|
|||
14
Mikeware
26.04.16
✎
07:54
|
лишние транзакции - зло
|
|||
15
НЕА123
26.04.16
✎
08:32
|
может ОФФ.
пользователи очень изобретательные люди. например, у 77 была (может и сейчас есть) дыра - контролбрэйк. |
|||
16
Ёпрст
26.04.16
✎
08:34
|
(15) в 7.7 такого нет, там есть только esc.
|
|||
17
Heckfy
26.04.16
✎
08:38
|
(0) Нефик предупреждение в модуль проведения документа засовывать. :)
|
|||
18
Изучаю1С8
26.04.16
✎
08:56
|
Файловая база?
|
|||
19
1Сергей
26.04.16
✎
08:57
|
(17) + 100500 А еще и вопросы :)
|
|||
20
trinity3187
26.04.16
✎
09:05
|
(17) такого нету
(18) файловая |
|||
21
trinity3187
26.04.16
✎
09:19
|
Протестировал следующее, если после "НачатьТранзакцию" используется: Возврат, Прервать, Продолжить, прерывание через Esc, Выход с процедуры без "ЗавершитьТранзакцию". На всё это программа реагирует нормально: ничего не сохраняется, но и ничего не блокируется.
|
|||
22
Mikeware
26.04.16
✎
09:23
|
(21) посмотри хотя бы по журналу - что делал это пользователь перед блокировкой.
сядь сзади и попроси его сделать все то же самое. если заблокируетс я- включай профайлер и пиши. потом сохраняй и разбирайся. главное - воспроизвести ситуацию |
|||
23
trinity3187
26.04.16
✎
09:47
|
(22) по журналу последние действия:
она создает документ реализацию, не может провести (по её словам пишет что нет остатков), создает следующий и тд. В это время у всех транзакция. после перезапуска 1с тех документов нету, потому что ей не дало их записать/провести. Создает такие же документы, остатки есть, дает провести. |
|||
24
Mikeware
26.04.16
✎
10:05
|
(23) ну вот и смотри, что происходит в модуле проведения. для пущей важности можешь вставить запись в журнал дополнительных записей - промежуточных....
|
|||
25
Злопчинский
27.04.16
✎
23:04
|
(23) неверно
Не может писать типовая конфигурация что "нет остатков" Речь может идти тольео об ОДНОМ остатке Так как при проведении при возникновении первого же затыка идет стоп проведения. Поэтому речь в сообщении может идти только об остатке одного товара, а не об остаткАХ Проверьте на всякий случай не понаписали ли туда чтонить ручками |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |