При запуске сеанса устанавливается "Параметры сеанса" - "ГраницаЗапретаИзмененияДанных"
Вариант №1
Дать "полные права" + Применять дату запрета для пользователей с «Полными правами» (Ложь)
Вариант №2
Создать Роль "РедактированиеВЗакрытомПериоде" + забурится в процедуру где устанавливается ""ГраницаЗапретаИзмененияДанных"
и исключить по этой роли
Вариант №3
При открытии Нужного документа
очистить значение "Параметры сеанса" - "ГраницаЗапретаИзмененияДанных"
///что то делаем с документом
восстанавливаем "Параметры сеанса" - "ГраницаЗапретаИзмененияДанных"
(-1) у меня есть консолька, которая прямо на sql шлет измененные данные http://infostart.ru/public/118593/ и обычные процедуры и события не реагируют на это.
Платформа – 1С:Предприятие 8.1 (8.1.14.72)
Конфигурация - Зарплата и Управление Персоналом, редакция 2.5 (2.5.14.3)
В конфигурации сделаны следующие настройки:
1) Установлена даты запрета изменения данных (Сервис – Пользователи и права доступа – Установка даты запрета изменения данных).
2) Дата запрета применяется для всех пользователей (Предприятие – Настройка параметров учета – Применять дату запрета для пользователей с «Полными правами» (Истина)).
Есть пара документов, которые надо редактировать до даты запрета, как решить данную задачу?
(4)
Я целый день пытался сделать и каждый раз думал, что все прозрачно:)
Но где-то все время вылазили косяки.
Два пункта точно правильно сделал:
1) Закоментил в этих доках в Событии "приОткрытии" проверку даты редактирования.
2) Снял источник в подписях на события для документов
Но так же есть подписи на регистры, с которыми мучаюсь целый день:(
До проведения отключить контроль:
УстановитьПривилегированныйРежим(Истина);
ОбменДаннымиСервер.ПропуститьПроверкуЗапретаИзменения(Истина);
УстановитьПривилегированныйРежим(Ложь);
(20)
УТ 8.3 ОФ
Спасибо за подсказку, реализовал след образом:
Есть самописный документ, что-то типа возврата, создается на основании реализации, при его проведении меняется реализация в согласованной глубине Дат. Перед его проведением установил
Перед проверкой на проведение документа реализации запускается процедура ПроверкаПериодаДокумента, в общем модуле (скорее всего типовая).
В ней заполняется структура ПараметрыПроверкиДокумента, добавил туда новый параметр ПропуститьПроверкуЗапретаИзменения
Затем происходит контроль процедурой ПроверитьВерсиюДокумента , при не прохождении контроля возвращается Отказ, собственно в этой процедуре добавил нужное мне условие
Если ПараметрыПроверкиДокумента.ПропуститьПроверкуЗапретаИзменения = Истина Тогда
Если ДокументОбъект.Дата < ГлубинаПериода Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;
В УТ11 сделал поиск в модулях по слову "ПропуститьПроверкуЗапретаИзменения".
Поиск позволил найти например в ОсновнаяКонфигураця.Документ.ПланПродаж.Форма.ФормаДокумента.Форма.Модуль (319, 50)
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Планирование.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
Если Объект.ЗаполнятьПоФормуле Тогда
ЗаписатьДополнительныеПараметры(ТекущийОбъект);
КонецЕсли;
Если ПропуститьПроверкуЗапретаИзменения Тогда
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения");
КонецЕсли;
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
Показать
У себя в ЗаявкаКлиента в модуле формы сделал по аналогии
Требуется 2 изменения для документа:
1. В МодулеФормы вставляем в доп. свойства свойство "ПропуститьПроверкуЗапретаИзменения" в значении Истина в ТекущийОбъект. Выглядит это так:
Пример1
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
//Вставляем дополнительное свойство в текущий объект {
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
// }
// СтандартныеПодсистемы.ДатыЗапретаИзменения
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
// Конец СтандартныеПодсистемы.ДатыЗапретаИзменения
...............................
//Далее типовой код
КонецПроцедуры
Показать
...или, на примере документа ПТУ, так:
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
//Вставляем дополнительное свойство в текущий объект {
ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
// }
// СтандартныеПодсистемы.УправлениеДоступом
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.УправлениеДоступом
...............................
//Далее типовой код
КонецПроцедуры
Показать
При открытии формы он должен проверить даты запрета изменения. Благодаря коду он пропускает проверку, не блокируя кнопки "Провести и закрыть", "Записать" и "Провести".
///////////////////////////
2. В Модуле Объекта вставляем доп. свойства то же самое, только без указания "ТекущийОбъект" Выглядит так:
Пример2
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
//Сюда вставляем код со вставкой в доп. свойства {
ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
// }
...............................
//Далее типовой код
КонецПроцедуры
Показать
На истину не претендую, но работает в УХ, изменений минимум. Обновление проходит динамически.
У меня сработало так в БИТ. Автотранспорт 3.0.80.36/3.0.4.55:
УстановитьПривилегированныйРежим(Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда
МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный");
МодульДатыЗапретаИзмененияСлужебный.ПропуститьПроверкуЗапретаИзменения(Истина);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
После проведения включил контроль:
УстановитьПривилегированныйРежим(Истина);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда
МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначения.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный");
МодульДатыЗапретаИзмененияСлужебный.ПропуститьПроверкуЗапретаИзменения(Ложь);
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
Конкретно в моем случае вышеуказанные способы не работали. ЗУП 3.1
Пришлось через доработку общего модуля, "ДатыЗапретаИзменения" обходить проверку при определенном условии - источник.
Т.Е. через доработку этого модуля можно отключить дату запрета для нужных регистров/документов и тд.
Либо прописать свои условия.
Вставайте отладкой на:
ПроверитьДатуЗапретаИзмененияПередЗаписью()
ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента()
ПроверитьДатуЗапретаИзмененияПередЗаписьюНабораЗаписей()
и пишите то, что вам нужно.