Имя: Пароль:
1C
1С v8
УТ 11.4 Расширение - убрать возможность удаления документа
0 Misty
 
12.02.20
09:27
Добрый день. Конфигурация УТ 11.4.9.82 . Платформа 8.3.16. Поставили задачу - чтобы кассиры не могли изменять проведенные документы, а так же снимать пометку проведения и пометку удаления. Создал реализацию, распечатал чеки и все, если что то вдруг надо поправить, то только помечаешь на удаление и создаешь новый документ. Добавила расширение- в нем создала справочник пользователей, которым нельзя изменять проведенные документы. В форме документа перед записью создала обработчик:

&НаСервере
Процедура Расш1_ПередЗаписьюПередНаСервере(Отказ)
    НайденП = Справочники.Расш1_ПользователиЗапретПроведения.НайтиПоРеквизиту("пользователь", Пользователи.ТекущийПользователь());
    Если НайденП <> Справочники.Расш1_ПользователиЗапретПроведения.ПустаяСсылка() тогда
        Если Объект.Проведен  тогда
            сообщить("проводить нельзя");
            отказ=Истина;
        КонецЕсли;
    Конецесли;
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПередЗаписьюПеред(Отказ, ПараметрыЗаписи)
    Расш1_ПередЗаписьюПередНаСервере(Отказ);
КонецПроцедуры

Таким образом почти все пожелания удовлетворены - нет возможности изменять проведенные, нет возможности отменять проведение. И можно удалить. Но не пойму как реализовать запрет на отмену удаления? Буду признательна за идеи. Спасибо
1 Chameleon1980
 
12.02.20
09:28
подписка с анализом режима записи
2 Misty
 
12.02.20
09:37
(1) Тогда придется конфигурацию снимать с поддержки, этого хочется как раз избежать.
3 Misty
 
12.02.20
09:38
или подписку на событие добавить расширение?
4 yzimin
 
12.02.20
09:45
(3) можно просто переопределить в расширении процедуры из модуля РеализацияТоваровУслугЛокализация
5 palsergeich
 
12.02.20
09:47
а теперь открой список и сделай то же самое чеерез контекстное меню.
Внезапно это отработает и весь этот уникальный код на помойку.
тебе нужны события При и Перед записью модуля объекта, они расширяются
6 Misty
 
12.02.20
09:47
(4) что такое РеализацияТоваровУслугЛокализация?
7 yzimin
 
12.02.20
09:48
(6) общий модуль
8 Misty
 
12.02.20
09:51
(5) как расширить модуль объекта? Если я в расширении добавляю какую то процедуру в модуль объекта, то она не работает
9 yzimin
 
12.02.20
09:52
(8) Расширь просто модуль реализации
10 Misty
 
12.02.20
09:57
(9) так я расширила модуль формы документа. В нем и написала эти две процедуры. Ничего не понимаю...
11 oslokot
 
12.02.20
10:15
(10) говорят же, расширь модуль а не модуль формы
12 Chameleon1980
 
12.02.20
10:22
(12) в модуле не только интерактивное срабатывание
13 pechkin
 
12.02.20
10:34
откуда права на удаление? или про програмно речь?
14 Misty
 
13.02.20
03:50
С расширениями столкнулась только 2 дня назад. Про такой механизм и не знала.
Не было понятно, что значит расширь модуль объекта, т.к. в исходной конфигурации нет команды "добавить модуль в расширение". Оказалось, что в расширении можно просто открыть модуль и там писать таким образом:
&Перед("ПередЗаписью")
Процедура ПередЗаписьюМоя(Отказ, РежимЗаписи, РежимПроведения)
Теперь все срабатывает как надо.
Вот это я и хотела услышать в поддержке. 2 дня мучений и все получилось.
Всем спасибо.
15 Chameleon1980
 
13.02.20
04:50
и не забывай про отличия переззаписью из формы и в модуле
16 Misty
 
13.02.20
05:49
(15) есть существенные отличия? а можно поподробнее
17 Chameleon1980
 
13.02.20
08:02
(16) а сама как думаешь
когда происходит вообще инициализация ПриЗаписи там и там?
Основная теорема систематики: Новые системы плодят новые проблемы.