Имя: Пароль:
1C
 
Как отловить отказ?
,
0 pro3ri
 
29.09.15
13:51
Добрый день!
Есть код модуля документа:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
     Если РежимЗаписи<>РежимЗаписиДокумента.ОтменаПроведения тогда
         Для Каждого СтрокаСостава из Товары цикл
             НеПроводить=Ложь;
             РасчетСебестоимостиНоменклатуры(ЭтотОбъект,СтрокаСостава,НеПроводить);
             Если НеПроводить тогда
                 Если ЭтотОбъект.Проведен тогда
                     РежимЗаписи=РежимЗаписиДокумента.ОтменаПроведения;    
                 Иначе
                     РежимЗаписи=РежимЗаписиДокумента.Запись;
                 КонецЕсли;
             КонецЕсли;
             Если РежимЗаписи=РежимЗаписиДокумента.Проведение тогда
                 Если СтрокаСостава.Номенклатура.Пустая() тогда
                     РежимЗаписи=РежимЗаписиДокумента.Запись;
                     Сообщить("Не заполнено поле Номенклатура. Документ не проводится");
                     Отказ=Истина;
                 КонецЕсли;
                
                 Если СтрокаСостава.НовыйТовар.Пустая() тогда
                     РежимЗаписи=РежимЗаписиДокумента.Запись;
                     Сообщить("Не заполнено поле Новый товар. Документ не проводится");
                     Отказ=Истина;
                 КонецЕсли;
             КонецЕсли;
         Конеццикла;
     КонецЕсли;
     Если РежимЗаписи=РежимЗаписиДокумента.Проведение тогда
         ПриЗаписиПроверитьЕдиницуИзмеренияМест(Товары);
         ЗаполнитьКачествоПоУмолчанию(Товары);
         ЗаполнитьНовоеКачествоПоУмолчанию(Товары);
        
     КонецЕсли;
     СуммаДокумента = Товары.Итог("Сумма");
    
КонецПроцедуры // ПередЗаписью

Процедура ПриЗаписи(Отказ)
    
     // Удаление записей регистрации из всех последовательностей
     Для Каждого НаборЗаписейРегистрацииВПоследовательности Из ПринадлежностьПоследовательностям Цикл
         НаборЗаписейРегистрацииВПоследовательности.Очистить();
     КонецЦикла;
         
    Если Не Отказ тогда //изм
        ПриЗаписиОбъекта(ЭтотОбъект,Отказ);
    КонецЕсли //изм end


КонецПроцедуры

на конце процедуры нет отказ, а на форме сразу Оперция не выполнена. Собственно сабж.
1 drcrasher
 
29.09.15
13:52
подписки на события
2 magicSan
 
29.09.15
13:52
подписки смотрел?
3 pro3ri
 
29.09.15
13:52
их нет
4 Dmitrii
 
гуру
29.09.15
13:55
(0) > на конце процедуры нет отказ, а на форме сразу Оперция не выполнена

Противоречие налицо.
Если на форме Отказ=Истина, то как ты вообще доходишь до событий объекта и откуда знаешь что там?
Или всё таки на форме не совсем сразу отказ?...
5 Cyberhawk
 
29.09.15
13:57
Покажи на картинке
6 pro3ri
 
29.09.15
14:00
(5) нажал кнопку "Провести", попал в форму

https://s.mail.ru/4zHimj3EZjTy/img-2015-09-29-16-01-43.png

мо: https://s.mail.ru/nNQEYRRC54hi/img-2015-09-29-16-02-25.png
7 Buster007
 
29.09.15
14:02
А дальше то что?
8 Cyberhawk
 
29.09.15
14:04
Не, покажи на картинке вот это: "на форме сразу Оперция не выполнена"
9 pro3ri
 
29.09.15
14:04
(7) дальше точка в процедуре https://s.mail.ru/3G7S7DSepgof/img-2015-09-29-16-05-23.png не срабатывает
10 Cyberhawk
 
29.09.15
14:05
Замер производительности включи и посмотри, какие строчки кода выполняются за попытку провести документ из формы
11 Cyberhawk
 
29.09.15
14:06
Если, конечно, F11 не помогает
12 pro3ri
 
29.09.15
14:11
(10) спасибо вопрос решен: тут еще оказывается Процедура ПроверкаПериодаЗаписей(НаборЗаписей, Отказ) Экспорт
    
    СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
    
    ЕСли СоответствиеГраницЗапрета = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    МетаданныеНабора = НаборЗаписей.Метаданные();
    ИмяРегистра = МетаданныеНабора.ПолноеИмя();
    
    ЕстьОрганизация = (МетаданныеНабора.Измерения.Найти("Организация")<>Неопределено);
        
сидит.