Имя: Пароль:
1C
1С v8
Запрет на проведение документов старше месяца
,
0 prilforreal
 
01.08.18
09:59
Доброго, Миста! Нужно запретить проводить любые документы старше месяца, можно ли сделать это не прописывая в каждом документе в процедуре ПередЗаписью отказ по условию, или хотя бы задать в модуле приложения эту процедуру и вызывать ее перед записью?

Процедурка такая:

Процедура ПроверкаДатыДокумента(Отказ, РежимЗаписи, РежимПроведения)
    
    ТекДата=ТекущаяДата();
    Если не СокрЛП(ПараметрыСеанса.ТекущийПользователь) = "Администратор" Тогда
    Если ЭтотОбъект.Дата<=ТекДата - 2592000 Тогда
            Если ЭтотОбъект.Проведен И РежимЗаписи=РежимЗаписиДокумента.Проведение Тогда
            Отказ=Истина;
            Предупреждение("Отказано в проведении, документ старше месяца!");
            Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;    
    
КонецПроцедуры
1 Lexey_
 
01.08.18
10:06
(0) используй подписку на событие
2 leonidk
 
01.08.18
10:10
(0) Подписки на события. И да, пользователи очень быстро научаться обходить этот код путем распроведения документов :)
3 prilforreal
 
01.08.18
10:11
(2) Тогда уберу условие Если ЭтотОбъект.Проведен и им ничто не поможет =)
4 prilforreal
 
01.08.18
10:12
(2) Можно и распроводить запретить
5 prilforreal
 
01.08.18
10:12
(1) Ни разу с подписками на события не сталкивался
6 strange2007
 
01.08.18
10:12
(0) Подписка перед записью и всё решено. После десятка таких разов, сам захочешь сделать небольшой модуль по автоматизации всех этих кусочков, чтобы потом вообще в конфигурации ничего не менять.

Да, в моих конфах уже стоит перед записью регистров, перед и при записи документов и справочников, при проведении документов и интерфейсные обработчики.

И да, перед записью если ставить контроль, то и распровести не смогут
7 Lexey_
 
01.08.18
10:12
(5) пришло время
8 Гобсек
 
01.08.18
10:14
(1) +100
9 prilforreal
 
01.08.18
10:18
(1) (2) Спасибо!
10 prilforreal
 
01.08.18
10:28
(6) Создал новый общий модуль, но недопонимаю синтаксис, почему то ругается на переменную ЭтотОбъект, процедуру использую ту же:


Процедура ПроверкаДатыДокумента(Отказ, РежимЗаписи, РежимПроведения) Экспорт
    
    ТекДата=ТекущаяДата();
    Если не СокрЛП(ПараметрыСеанса.ТекущийПользователь) = "Администратор" Тогда
    Если ЭтотОбъект.Дата<=ТекДата - 2592000 Тогда
            Если ЭтотОбъект.Проведен И РежимЗаписи=РежимЗаписиДокумента.Проведение Тогда
            Отказ=Истина;
            Предупреждение("Отказано в проведении, документ старше месяца!");
            Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;    
    
КонецПроцедуры
11 ildary
 
01.08.18
10:29
(10) вы бы доку для начала почитали, а если как всегда некогда и надо трясти - почитайте существующие подписки на события.
12 prilforreal
 
01.08.18
10:34
(11) Я первую создаю=D
13 ildary
 
01.08.18
10:35
(12) Гугл я понимаю Вам тоже заблокировали? Предпочитаете свой позор незнания на форум носить?
14 prilforreal
 
01.08.18
10:47
(13) Нет, уже разобрался) Нетерпение и спешка овладели.