|
УТ 11. Запрет редактирования документа пользователю | ☑ | ||
---|---|---|---|---|
0
sanyaka
02.05.24
✎
08:31
|
Всем привет.
Подскажите, как программно запретить определенному пользователю редактировать все документы старее сегодняшнего дня ? Может есть общий метод который дергается при открытии любого документа и в котором можно сделать проверку на логин пользователя ? |
|||
1
Кондер
02.05.24
✎
08:38
|
Установи дату запрета на вчера, программно!
|
|||
2
arsik
гуру
02.05.24
✎
08:38
|
А подсистема "дата запрета редактирования" вам ну никак не подходит?
|
|||
3
Ненавижу 1С
гуру
02.05.24
✎
08:43
|
(0) Есть типовые методы установки даты запрета, можно устанавливать отдельным пользователям. Ничего программировать не нужно. Надо изучать возможности продукта, а не изобретать велосипеды.
|
|||
4
sanyaka
02.05.24
✎
09:24
|
(2) (3) Спасибо.
Настройки пользователей и прав -> Даты запрета изменения Для конкретного пользователя можно указать "Предыдущий день". В принципе то что нужно. Проверим. |
|||
5
Кондер
02.05.24
✎
09:26
|
Аж обидно, вопрос стоял программно.
|
|||
6
sanyaka
02.05.24
✎
10:04
|
(5) В принципе я начал уже пробовать. Оставалось логин пользователя выдернуть и перечислить все документы.
Форма.ТолькоПросмотр = Истина - блокирует форму. ОбщийМодуль.МодификацияКонфигурацииПереопределяемый // Переопределяемая процедура, вызываемая из одноименного обработчика события формы. // // Параметры: // Форма - ФормаКлиентскогоПриложения - форма, из обработчика события которой происходит вызов процедуры. // ТекущийОбъект - ДокументОбъект, СправочникОбъект - // Процедура ПриЧтенииНаСервере(Форма, ТекущийОбъект) Экспорт попытка Если (ЗначениеЗаполнено(Форма.Объект.Ссылка)) тогда Если (Форма.ИмяФормы = "Документ.ПриходныйКассовыйОрдер.Форма.ФормаДокумента" или Форма.ИмяФормы = "Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента") тогда Если (Форма.Объект.Дата < НачалоДня(ТекущаяДата())) тогда //Форма.ТолькоПросмотр = Истина; конецесли; конецесли; конецесли; исключение конецпопытки; КонецПроцедуры |
|||
7
unbred
02.05.24
✎
10:32
|
Надеюсь, тебе завтра добавят ещё одного пользователя, которому тоже нужно будет запретить что-либо программно.
а послезавтра ещё одного. |
|||
8
sanyaka
03.05.24
✎
06:41
|
Поставили дату запрета изменения.
Пока столкнулись с тем, что документы "Заказ клиента" можно править вне зависимости от даты запрета. Подскажите, почему так ? |
|||
9
sanyaka
03.05.24
✎
08:01
|
Где-то в интернете нашел:
"Если документ не является проводкообразующим (как например, заказ клиента), он не создает движений по финансовым регистрам. Поэтому при установке даты запрета изменений он не блокируется." |
|||
10
sanyaka
03.05.24
✎
08:05
|
(7) В коде завязаться не на логин, а на роль как вариант.
|
|||
11
DrZombi
гуру
03.05.24
✎
08:16
|
(8) Где-то на просторах БСП, есть модуль, где обозначают списки документов, регистров и прочей ерунды, где надо искать реквизит "Дата", для блокировки документа на изменения.
... Поищите этот модуль, он у разных конфигураций по разному расположен ... Пример в БП 3.0, это общий модуль "ДатыЗапретаИзмененияПереопределяемый" - Процедура "ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения" Но его производители конфигураций переназначают, так что придется немного поискать. Пример кода, какой искать: ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВводНачальныхОстатков" , "Дата" , "БухгалтерскийУчет", "Организация"); ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВозвратМатериаловИзЭксплуатации" , "Дата" , "БухгалтерскийУчет", "Организация"); ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВозвратОСОтАрендатора" , "Дата" , "БухгалтерскийУчет", "Организация"); ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВозвратТоваровОтПокупателя" , "Дата" , "БухгалтерскийУчет", "Организация"); ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВозвратТоваровПоставщику" , "Дата" , "БухгалтерскийУчет", "Организация"); ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВосстановлениеНДС" , "Дата" , "БухгалтерскийУчет", "Организация"); ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных, "Документ.ВосстановлениеНДСПоОбъектамНедвижимости" , "Дата" , "БухгалтерскийУчет", "Организация"); |
|||
12
DrZombi
гуру
03.05.24
✎
08:17
|
(9) Бред
|
|||
13
Ненавижу 1С
гуру
03.05.24
✎
11:39
|
(9) а зачем его блокировать? если он отгружен, то изменения не даст сделать, несинхронные с реализацией, а если не отгружен, то надо регл. заданием их закрывать
|
|||
14
sanyaka
03.05.24
✎
12:38
|
(11) спасибо. Нашел. Действительно отсутствует в этом коде документ заказа клиенту.
|
|||
15
sanyaka
06.05.24
✎
04:19
|
Вот такой вопрос.
Дата запрета изменения данных. По пользователям. Для конкретного пользователя. Указывать дату запрета - по разделам. Общая дата для всех разделов - предыдущий день. Закупки - 01.01.2024. При создании документа под этим пользователем - Приобретение товаров и услуг от 30.04.2024 выдает ошибку: Расчеты с поставщиками с полем Регистратор = "Приобретение товаров и услуг УТЦБ-ХХХ от 30.04.2024" невозможно поместить в запрещенный период. Запрещено изменять данные с датой ранее 05.05.2024 (включительно). Подробнее: Пользователю "Х" недоступно изменение, поскольку дата 30.04.2024 входит в запрещенный период по 05.05.2024 (установлена общая дата запрета). Такими настройками, хотели запретить редактирование/создание всех документов старее сегодняшнего дня. За исключением документа "приобретение товаров и услуг" для него как исключение выставили отдельно в разделе закупки дату например 01.01.2024. Но видимо общая дата влияет. Подскажите, как правильно настроить. |
|||
16
sanyaka
06.05.24
✎
07:08
|
Попробуем выставить общую дату например 01.01.24, для закупок 01.02.24, для всех остальных разделов - вчерашний день. Наверное, получим то что хотели.
|
|||
17
unenu
06.05.24
✎
09:56
|
(15)
// ОбщийМодуль.ДатыЗапретаИзмененияПереопределяемый в расширении &После("ПередПроверкойЗапретаИзменения") Процедура Р1_ПередПроверкойЗапретаИзменения(Объект, ПроверкаЗапретаИзменения, УзелПроверкиЗапретаЗагрузки, ВерсияОбъекта) Если НЕ ПроверкаЗапретаИзменения Тогда Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПриобретениеТовароИУслуг") Тогда Если Объект.Дата < НачалоДня(ТекущаяДата()) Тогда // Иванов И.И. не радактирует ПТиУ старее сегоднящнего дня ПроверкаЗапретаИзменения = Истина; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры Если ТекущийПользователь().ИдентификаторПользователяИБ = Новый УникальныйИдентификатор("178c2e3f-df0a-469c-b377-fbb206806ecd") Тогда // Иванов Условия перепишите на может/не может. Если будут "гроздья", то проще свой рс слепить и одним условием проверять в этом методе |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |