Описание добавления в программу способа, позволяющего автоматически устанавливать дату запрета редактирования.
Данный метод раз и навсегда позволяет уйти от проблемы контроля даты запрета редактирования.
Наверно все знают что такое дата запрета редактирования. Знают как устанавливается и где. Вопрос только в том, что кому то надо постоянно за ней следить, устанавливать.
Как правило для большинства пользователей программа должна автоматически
каждый день запрещать менять что-либо задним числом.
В восьмерке основная проблема, что дата запрета должна ставится до начала работы пользователей,
иначе после установки она не будет применена в силу пока пользователи не перезайдет в программу.
Тоесть кто-то с утра, самый первый, должен зайти и сразу поставить запрет.
Представляете что это будет?
Итак решение (внимание, действия должны выполнятся специалистом)
Общий Модуль - Полные Права - Процедура
Процедура УстановитьПараметрГраницыЗапретаИзмененияДанных() Экспорт
В начало процедуры код:
//Мания1С
Попытка
СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
ГраницаПериода = СоответствиеГраницЗапрета["ОбщаяДатаЗапретаРедактирования"];
Вчера = НачалоДня(НачалоДня(ТекущаяДата())-1);
ПозаВчера = НачалоДня(НачалоДня(Вчера)-1);
Если ГраницаПериода < ПозаВчера Тогда
Рег = РегистрыСведений.ГраницыЗапретаИзмененияДанных;
Набор = Рег.СоздатьНаборЗаписей();
ТекущиеДанные = Рег.Выбрать();
Пока ТекущиеДанные.Следующий() Цикл
Если ЗначениеЗаполнено(ТекущиеДанные.Организация) Тогда
Продолжить;
КонецЕсли;
Запись = Набор.Добавить();
Запись.Организация = ТекущиеДанные.Организация;
Запись.Пользователь = ТекущиеДанные.Пользователь;
Запись.ГраницаЗапретаИзменений = ПозаВчера;
КонецЦикла;
Набор.Записать();
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Всё. После добавления этого кода, каждый день при входе первого пользователя программа автоматически устанавливает дату запрета редактирования для всех последующих пользователей. (в моем примере дата автоматически устанавливается для всех пользователей на позавчерашний день).
Данный метод раз и навсегда позволяет уйти от проблемы контроля даты запрета редактирования.
Наверно все знают что такое дата запрета редактирования. Знают как устанавливается и где. Вопрос только в том, что кому то надо постоянно за ней следить, устанавливать.
Как правило для большинства пользователей программа должна автоматически
каждый день запрещать менять что-либо задним числом.
В восьмерке основная проблема, что дата запрета должна ставится до начала работы пользователей,
иначе после установки она не будет применена в силу пока пользователи не перезайдет в программу.
Тоесть кто-то с утра, самый первый, должен зайти и сразу поставить запрет.
Представляете что это будет?
Итак решение (внимание, действия должны выполнятся специалистом)
Общий Модуль - Полные Права - Процедура
Процедура УстановитьПараметрГраницыЗапретаИзмененияДанных() Экспорт
В начало процедуры код:
//Мания1С
Попытка
СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
ГраницаПериода = СоответствиеГраницЗапрета["ОбщаяДатаЗапретаРедактирования"];
Вчера = НачалоДня(НачалоДня(ТекущаяДата())-1);
ПозаВчера = НачалоДня(НачалоДня(Вчера)-1);
Если ГраницаПериода < ПозаВчера Тогда
Рег = РегистрыСведений.ГраницыЗапретаИзмененияДанных;
Набор = Рег.СоздатьНаборЗаписей();
ТекущиеДанные = Рег.Выбрать();
Пока ТекущиеДанные.Следующий() Цикл
Если ЗначениеЗаполнено(ТекущиеДанные.Организация) Тогда
Продолжить;
КонецЕсли;
Запись = Набор.Добавить();
Запись.Организация = ТекущиеДанные.Организация;
Запись.Пользователь = ТекущиеДанные.Пользователь;
Запись.ГраницаЗапретаИзменений = ПозаВчера;
КонецЦикла;
Набор.Записать();
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Всё. После добавления этого кода, каждый день при входе первого пользователя программа автоматически устанавливает дату запрета редактирования для всех последующих пользователей. (в моем примере дата автоматически устанавливается для всех пользователей на позавчерашний день).