helpf.pro
Регистрация
 +3 
Распечатать

1С 8.x : Как запретить изменять документы после 8 часов с момента их создания

Обратился ко мне клиент с задачей: Нужно запретить изменение всех видов платежных документов (ПП, РКО, ПКО) спустя 8 часов с момента проведения соответствующего документа

Для реализации этого я использовал Подписку на событие: ПередЗаписьюДокументаДатаЗапретаРедактирования

В конце процедуры обработчика добавил вызов своей процедуры

Вот ее код:

Код 1C v 8.3
 Процедура ПроверкаВремениСозданияИИзмененияДокумента(Источник, Отказ)
Если РольДоступна("ПолныеПрава") Тогда
//Все можно
ИначеЕсли Источник.Проведен Тогда //Обрабатывае только Проведенные
ТекДата=ТекущаяДата(); ЧасовРазрешено=24;
Если ТипЗнч(Источник) = Тип("ДокументОбъект.РасходныйКассовыйОрдер") Тогда
ЧасовРазрешено=8;
Если НЕ (ТекДата-Источник.Дата)/60 < ЧасовРазрешено*60 Тогда Отказ=Истина; Конецесли;
ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПриходныйКассовыйОрдер") Тогда
ЧасовРазрешено=8;
Если НЕ (ТекДата-Источник.Дата)/60 < ЧасовРазрешено*60 Тогда Отказ=Истина; Конецесли;
ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПлатежноеПоручениеВходящее") Тогда
ЧасовРазрешено=8;
Если НЕ (ТекДата-Источник.Дата)/60 < ЧасовРазрешено*60 Тогда Отказ=Истина; Конецесли;
    ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПлатежноеПоручениеИсходящее") Тогда
ЧасовРазрешено=8;
Если НЕ (ТекДата-Источник.Дата)/60 < ЧасовРазрешено*60 Тогда Отказ=Истина; Конецесли;
КонецЕсли;
КонецЕсли;
#Если Клиент Тогда
Если Отказ Тогда
Сообщить("Прошло более "+Строка(ЧасовРазрешено)+" часов с момента создания документа! Изменение запрещено и документ не может быть записан...", СтатусСообщения.Важное);
КонецЕсли;
#КонецЕсли
КонецПроцедуры

Пока документ не проведен, его можно менять сколько угодно, но после первого проведения и истечения указанного количества часов, документ заблокируется, и при проведении будет выведено сообщение:

Разместил:   Версии: | 8.x | 8.2 УП | 8.3 |  Дата:   Прочитано: 16031
 +3 
Распечатать
Возможно, вас также заинтересует
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ;
Альтернативный перенос остатков между 7.7 и 8.1 (обработкой с ИТС ЗагрузкаДанныхИзТаблДокум) 2
Нашел альтернативный, практически моментальный способ переноса остатков между семерой и восьмерой (так и между восмерками). Не требуется никаких дополнительных усилий, программирования, писания обработок и т.д. и т.п. На ИТС есть обработка под наз
Данные Графика регистра расчета 0
Виртуальная таблица " РегистрРасчета. ИмяРегистра .ДанныеГрафика " определена для тех регистров расчета, которые поддерживают период действия . При конфигурировании с таким регистром расчета необходимо связать непериодический регистр сведений кото
Добавление, перезапуск, оптимизация рабочих процессов сервера кластера 0
Добавление рабочего процесса Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера. Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый
Использование генератора случайных чисел - Random 2
Генератор случайных чисел инициализируется начальным числом из параметра: НачальноеЧисло = 167; ГСЧ = Новый ГенераторСлучайныхЧисел(НачальноеЧисло); СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 1000); Последовательность случайных чисел для одного и то
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.