|   |   | 
| 
 | УТ 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") Тогда // Иванов Условия перепишите на может/не может. Если будут "гроздья", то проще свой рс слепить и одним условием проверять в этом методе | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |