Имя: Пароль:
1C
1C 7.7
v7: Модифицированность формы
0 ildary
 
06.03.14
15:04
Уважаемые специалисты, подскажите пожалуйста как бороться с такой бедой:
При записи документа вызывается процедура глобального модуля, которая может в табличной части удалить строку (из-за запрета продажи конкретного товара), при этом после записи у формы остается признак модифицированности. Самое странное, что в процессе записи Модифицированность() возвращает 0 и даже если с помощью формекса выполнить РасшФормы.СбросМодифицированности(); - то модифицированность не исчезает.

p.s. Сама запись сделана нешаблонно - у кнопке Запись действие указано не #Записать, а ВыполнитьНажатиеНаКнопку( ИмяКнопки ) - и в теле этой процедуры код идет примерно такой:

    НачатьТранзакцию();
    
    ТЗУдален = 0;
    глПроверитьЗапретПродаж( Контекст, ТЗУдален );
    
    ПриЗаписи();
    
    Если СтатусВозврата() = 0 Тогда //Возврат - запись не прошла
        
        ОтменитьТранзакцию();
        Возврат;
        
    КонецЕсли;
    
    Попытка //Записать() + ЗафиксироватьТранзакцию()
        
        Рез = Записать();
        
        глЗадержкаВыполнения( 0, 500 );
        
        Если Рез = 0 Тогда //Возврат
            
            ОтменитьТранзакцию();
            
            СтатусВозврата( 0 );
            Возврат;
            
        КонецЕсли;
        
        ЗафиксироватьТранзакцию();
        
    Исключение
        
        ОтменитьТранзакцию();
        Предупреждение( "Ошибка при записи: " + ОписаниеОшибки(), 120 );
        Возврат;
        
    КонецПопытки;
1 Злопчинский
 
07.03.14
03:10
не надо открывать транзакцию при открытой форме документа...
2 ЧеловекДуши
 
07.03.14
06:42
(0) А зачем вообще там Транзакция?
Особенно перед проверкой...

А у вас есть еще подобные куски коду?
...пятнично...
3 kosts
 
07.03.14
06:49
(0) Пусть глобальная процедура не удаляет строку, а просто тыкает пользователя (еще до записи), пусть пользователь сам удаляет.
4 Ёпрст
 
гуру
07.03.14
09:23
сыми сам признак модифицированности в ложной транзакции.. делов то
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший