|
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
|
Мда народ....
А про процедуру ПриОтменеПроведенияДокумента() забыли?
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший