Регистрация  Войти

Автоматическая установка даты запрета редактирования 1С Управление торговлей 10

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Автоматическая установка даты запрета редактирования 1С Управление торговлей 10
 
Описание добавления в программу способа, позволяющего автоматически устанавливать дату запрета редактирования.
Данный метод раз и навсегда позволяет уйти от проблемы контроля даты запрета редактирования.

Наверно все знают что такое дата запрета редактирования. Знают как устанавливается и где. Вопрос только в том, что кому то надо постоянно за ней следить, устанавливать.

Как правило для большинства пользователей программа должна автоматически

каждый день запрещать менять что-либо задним числом.

В восьмерке основная проблема, что дата запрета должна ставится до начала работы пользователей,

иначе после установки она не будет применена в силу пока пользователи не перезайдет в программу.

Тоесть кто-то с утра, самый первый, должен зайти и сразу поставить запрет.

Представляете что это будет?

Итак решение (внимание, действия должны выполнятся специалистом)

Общий Модуль - Полные Права - Процедура

Процедура УстановитьПараметрГраницыЗапретаИзмененияДанных() Экспорт

В начало процедуры код:

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

Всё. После добавления этого кода, каждый день при входе первого пользователя программа автоматически устанавливает дату запрета редактирования для всех последующих пользователей. (в моем примере дата автоматически устанавливается для всех пользователей на позавчерашний день).
 
Насущная проблема, я ее решил вот так:


////Форма только просмотр ///////Администратор_БЬЕМ_ПО_шаловливым ручкам.
//ЕслиНЕ

ТекДата = НачалоДня(ТекущаяДата());
//ПользователиИнформационнойБазы = РольДоступна(ПолныеПрава);
//Если НЕ РольДоступна("ПолныеПрава" ;) Тогда
// Отказ = Истина;
Если ДокументОбъект. Проведен Тогда
Если НЕ РольДоступна("ПолныеПрава" ;)
И (НачалоДня (ДокументОбъект.Дата)- ТекДата)< 0 Тогда
//Сообщить ("Вам запрещено изменять текущий документ! Для редактирования данных свяжитесь с ОФИСОМ !!!", СтатусСообщения.Важное);
Ответ = Вопрос("Вам запрещено изменять текущий документ!
|Для редактирования данных свяжитесь с Офисом!!!Документ можно открыть для просмотра?", РежимДиалогаВопрос.ДаНет);
//Если Ответ = КодВозвратаДиалога.Да Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецЕсли;


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

А Какой код будет если граница запрета -неделя?
Страницы: 1
Читают тему