Имя: Пароль:
1C
1C 7.7
v7: Ошибка: объект заблокирован при проведении
0 1snik_d
 
19.05.15
14:31
Всем доброго времени суток. ТиС SQL, монополно сижу в базе, перепровожу документы обработкой, команда Провести(). 1С ругается Ошибка: объект заблокирован при проведении документов с определенного периода. Интерактивно провожу документ, все проводится без ошибок. Как такое может быть? Как это можно исправить?
1 Ёпрст
 
19.05.15
14:33
и скуль поди - 2000 ?
2 1snik_d
 
19.05.15
14:35
(1) скуль 2008, 1с - "секретный" релиз.
3 Ёпрст
 
19.05.15
14:37
покажи скрин ошибки
4 1snik_d
 
19.05.15
14:40
(3) куда картинку лучше постить?
5 Ёпрст
 
19.05.15
14:42
да пофик, хоть сюда
http://pics.rsh.ru/
6 1snik_d
 
19.05.15
14:54
7 Ёпрст
 
19.05.15
14:55
и это, в коде нет явных установленных ручонками транзакций или проведения других документов из модуля проведения (с открытием формы) ?
8 1snik_d
 
19.05.15
14:56
Вот код
        // Переносим ТА на конкретный документ
        Если МонопольныйРежим() = 1 Тогда
            УстановитьТАНА(Объект);      
        КонецЕсли;    

        ЕстьОшибкиПроведения = 0;
        // Пробуем провести в транзакции, потом откатим
        НачатьТранзакцию();
        
        Попытка                          
            Если Объект.Провести() = 0 Тогда
                ТекстовыйФайл.ДобавитьСтроку("Не удалось провести документ " + Строка(Объект));
                ТекстовыйФайл.Записать(КаталогИБ() + "Error.txt");
    
                ЕстьОшибкиПроведения = 1;
            КонецЕсли;    
        Исключение
            глСообщениеПроведения("Не удалось провести документ " + Строка(Объект) + " Ошибка: " + ОписаниеОшибки(), Объект.ТекущийДокумент(),,,1);

            ТекстовыйФайл.ДобавитьСтроку("Не удалось провести документ " + Строка(Объект) + " Ошибка: " + ОписаниеОшибки());
            ТекстовыйФайл.Записать(КаталогИБ() + "Error.txt");
            
            ЕстьОшибкиПроведения = 1;
        КонецПопытки;

        Если ЕстьОшибкиПроведения = 1 Тогда
            ОтменитьТранзакцию();
            Продолжить;
        КонецЕсли;

ЗафиксироватьТранзакцию();
9 Ёпрст
 
19.05.15
14:56
(6) очень хорошо. Теперь осталось открыть код и посмотреть, кто пишет такую ошибку в обработке и при каком событии.

ЗЫ: а так - тупо фиксация ошибки в попытке-исключении и... никакой блокировки там нет, просто док не проводится по какой-либо причине и фсё.
10 1snik_d
 
19.05.15
14:59
(9) но интерактивно же он проводится и без ошибок.
11 1snik_d
 
19.05.15
15:00
(11) документы перепроводились с 2011 года и проблемы не было, проблемы начались в июле 2014.
12 Ёпрст
 
19.05.15
15:02
(11) проводи через операции - проведение документов, там это будет в потоке  и не придётся пользоваться самодельными поделками перепроведения, которые еще и в одной большой транзакции всё делают.
13 1snik_d
 
19.05.15
15:06
(12) у меня урбд, поэтому приходится сторонними поделками проводить.

Для периферийных бах нужен правильный регистр партий, поэтому делаю так:

1. Пробую провести документ в транзакции.
2. Сравниваю движения до и после проведения, если движения одинаковые (ничего не изменилось), откатываю транзакцию, иначе фиксирую.
14 1snik_d
 
19.05.15
15:10
(13) Если все скопом перепроводить, периферийки колом встанут при обмене.

А по сабжу, что еще можно посмотреть?
15 Ёпрст
 
19.05.15
15:10
(13) забавная логика, в которой транзакция и не нужна вовсе.
16 Ёпрст
 
19.05.15
15:11
(14) ну, это же не весь код в (8).
Ошибка только в коде.
17 1snik_d
 
19.05.15
15:13
(15) а как без транзакции штатными средствами 1С обойтись?
18 Nirvana
 
19.05.15
20:38
(0) Документ - Реализация?
19 1snik_d
 
19.05.15
21:33
(18) Разные документы. И приходные и расходные. Я причину нашел. Оказывается, отмена транзакции в некоторых случаях не освобождает объект, в этой транзакции использующийся. Закономерности не заметил, но, сделав принудительный сброс блокировки, я решил проблему.
20 1snik_d
 
19.05.15
21:34
(19) причем нигде в документации про это не написано
21 Garykom
 
гуру
19.05.15
21:43
а может просто с вложенными транзакциями какие то...
22 Z1
 
20.05.15
10:31
(19) Все правильно блокировка документа это файловая блокировка
и отмена транзакции на нее ( на блокировку документа ) никак не может влиять.
23 Z1
 
20.05.15
10:39
(19) очень похоже что из одного документа ты проводишь другой документ. Если это так  - ну это в принципе сам себе кладешь грабли