Имя: Пароль:
1C
1С v8
Работа с документом
,
0 UUmmmmm
 
07.10.19
15:49
Дали задание на стажировке по работе с документом. Документ должен помнить, кто его последний трогал и когда трогал. Пользователь на редактирование не должен иметь доступ к этим полям. Нигде не могу найти как это делается. Сказали смотреть уже в готовых документах, но не могу понять где там именно смотреть. Подскажите пожалуйста
1 vicof
 
07.10.19
15:52
По-разному можно сделать, хрен знает какая у вас там конфигурация, и как реализована история доступа к объектам.
2 Temai
 
07.10.19
15:53
Тяжелый случай
3 piter3
 
07.10.19
15:56
версионирование что ли
4 shuhard
 
07.10.19
16:03
(0) [но не могу понять где там именно смотреть]
уволен
5 _Дайвер_
 
07.10.19
16:05
Ну так сделай регистр сведений, в нем можешь хранить все изменения которые тебе нужны, в твоем случае это изменяемый объект(измерение), дата изменения и пользователь(реквизиты) и в обработчике события после записи делай записи в этот регистр сведений. А вообще есть типовой механизм смотри регистр сведений "ВерсииОбъектов"
6 UUmmmmm
 
07.10.19
16:32
(5) уже разобралась, нужно было сделать так:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    ДатаПоследнегоИзменения = ТекущаяДатаСеанса();
    ПоследнийИзменивший = ПользователиКлиентСервер.ТекущийПользователь();
КонецПроцедуры

А как теперь ограничить доступ пользователя к этим полям?
7 _Дайвер_
 
07.10.19
16:34
(6) не верно, ты прочитай что за задание тебе дали, и что ты сделал(а) по факту
8 _Дайвер_
 
07.10.19
16:37
(7) Хотя, если они потом пишутся в регистр сведений то еще ок. Ограничить поля "Автор" и "Дата" можно в свойствах, установить птичку на  параметр "Только просмотр"
9 xenos
 
07.10.19
16:38
(7) Почему не верно?
Если это надо для одного документа.
Если не рассчитывать на продвинутых пользователей которые могут пользоваться групповой обработкой или типа такого. То можно создать просто реквизиты документа и на форме для этих реквизитов поставить ТолькоПросмотр.

То сойдет.
10 _Дайвер_
 
07.10.19
16:39
Скажи своим руководителям, чтобы дали тебе написать сначала учебную конфигурацию http://v8.1c.ru/metod/books/book.jsp?id=441
11 _Дайвер_
 
07.10.19
16:41
(9) Потому что если это (ДатаПоследнегоИзменения, ПоследнийИзменивший) реквизиты документа, то это просто перезапись, и никакого хранения истории нет. Для хранения нужен регистр сведений, код записи которого не был показан.
12 xenos
 
07.10.19
16:45
(11) 1. Нигде нет утверждения про условия.
2. Если это касается одного документа, то можно использовать табличную часть документа.

стрИстор = тчИстория.Добавить

стрИстор.ДатаПоследнегоИзменения = ТекущаяДатаСеанса();
стрИстор.ПоследнийИзменивший = ПользователиКлиентСервер.ТекущийПользователь();

Хотя лично я бы еще добавил реквизит "Состояние". Со значениями допустим "ВРаботе", "Утвержден". И при открытии документа, блокировал все реквизиты кроме состояния, и надо поменять состояние чтобы была возможность редактирования.
13 hhhh
 
07.10.19
16:46
(11) ну там про историю в (0) ничего нет. Это вы уже придумали.
14 _Дайвер_
 
07.10.19
16:47
(12) (13) а как же "Документ должен помнить, кто его последний трогал и когда трогал", помнить значит "хранить"
15 HawkEye
 
07.10.19
16:47
(11) в (0) про историю - ни слова ))))
в контексте (0) кода из (6) - достаточно ))
16 UUmmmmm
 
07.10.19
16:48
(8) получилось спасибо
17 xenos
 
07.10.19
16:48
(14) Просто в реквизитах документа  ДатаПоследнегоИзменения ПоследнийИзменивший
18 UUmmmmm
 
07.10.19
16:49
(9) да так нужно было сделать
19 _Дайвер_
 
07.10.19
16:53
(15) Эх, все еще буквально все воспринимаю)))