Имя: Пароль:
1C
1C 7.7
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)  неверно
Не может писать типовая конфигурация что "нет остатков"
Речь может идти тольео об ОДНОМ остатке
Так как при проведении при возникновении первого же затыка идет стоп проведения. Поэтому речь в сообщении может идти только об остатке одного товара, а не об остаткАХ

Проверьте на всякий случай не понаписали ли туда чтонить ручками