Имя: Пароль:
1C
1C 7.7
v7: Как отследить отмену проведения документа в 1С 7.7 ?
0 JustBeFree
 
04.10.12
00:52
Чот я подзабыл уже 7.7 и не могу решить такой вопрос.
Пользователь с определённым набором прав должен иметь возможность  пометить документ на удаление с последующим запретом снять пометку, но не должен иметь возможность сделать его непроведённым.
В модуле документа доступно событие ОбработкаУдаленияПроведения().
Но как в нем отследить по какой причине отменяется проведение: при пометке на удаление, или же при отмене проведения ?
Исходный код что-то типа:

Права = НазваниеНабораПрав();
Если Права="п12345" Тогда //здесь нужно учесть док распроводится или уст-ся пометка удаления.
  Предупреждение("У Вас отсутствуют права на отмену проведения документа !", 5);
  СтатусВозврата(0);  
  Возврат;
КонецЕсли;

Заранее спасибо за идеи.
1 NS
 
04.10.12
00:58
кнопку на форму журнала.
2 NS
 
04.10.12
00:58
Либо в меню "действия" добавить.
3 zladenuw
 
04.10.12
01:00
(1,2) только так  ?
4 JustBeFree
 
04.10.12
01:09
(1,2) Да, но распровести или пометить на удаление можно и стандартными средствами - из контекстного меню в журнале документов эти пункты не удалишь и обработку кнопки Del тоже не запретишь.
5 NS
 
04.10.12
01:12
А в каком порядкее при пометке вызываются предопределенные процедуры?
6 viktor_vv
 
04.10.12
01:13
В глобальном модуле есть еще предопределенная ПриУдаленииДокумента(<УдалДокум>,<Режим>)
.
7 viktor_vv
 
04.10.12
01:13
Только она пожалуй вызывается после ОбработкиУдаления().
8 NS
 
04.10.12
01:13
(6) В каком порядке они вызываются?
9 NS
 
04.10.12
01:14
Есть подозрение что до. Тогда просто если док проведен, то выставляешь глобальный флаг разрешающий отмену проведения. И делаешь сделатьнепроведенным()
10 NS
 
04.10.12
01:16
Процедура ПриУдаленииДокумента(док,Реж)
Если док.проведен()=1 тогда
   глРазрешитьделатьнепроведенным=1;
   док.сделатьнепроведенным();
   глРазрешитьделатьнепроведенным=1;  
КонецЕсли;
Конецпроцедуры
... это в глобальнике,
11 NS
 
04.10.12
01:16
Процедура ПриУдаленииДокумента(док,Реж)
Если док.проведен()=1 тогда
   глРазрешитьделатьнепроведенным=1;
   док.сделатьнепроведенным();
   глРазрешитьделатьнепроведенным=0;  
КонецЕсли;
Конецпроцедуры
12 JustBeFree
 
04.10.12
01:17
(10) Я все понял ! Спасибо !
13 viktor_vv
 
04.10.12
01:19
(10) Может быть, не проверял. В принципе может в таком варианте хватит и

СтатусВозврата(0);
Возврат ;
14 JustBeFree
 
04.10.12
01:22
(10,11) Все норм - работает.
Порядок следования событий верный: сперва ПриУдаленииДокумента(), потом ОбработкаУдаленияПроведения()

Данке шён.
15 varelchik
 
04.10.12
09:19
Мда народ....
А про процедуру ПриОтменеПроведенияДокумента() забыли?