![]() |
|
Как сделать запрет на удаление записей регистра сведений ? | ☑ | ||
---|---|---|---|---|
0
VVVP
02.02.10
✎
10:26
|
Коллеги, подскажите пож., как штатными средствами при работе непосредственно в форме записей регистра сведений запретить удаление записей? Вроде удобно в форме работать, ничего изобретать не нужно.
А ненароком можно весь регистр снести. Правами не рулится, нужно записи создавать и редактировать. Регистр периодический, независимый. |
|||
1
NcSteel
02.02.10
✎
10:34
|
РегистрСведенийНаборЗаписей.<Имя регистра сведений>.ПередЗаписью (InformationRegisterRecordSet.<Имя регистра сведений>.BeforeWrite)
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>) ПередЗаписью (BeforeWrite) Синтаксис: ПередЗаписью(<Отказ>, <Замещение>) Параметры: <Отказ> Тип: Булево. Признак отказа от записи набора регистра сведений. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет. Значение по умолчанию: Ложь <Замещение> Тип: Булево. Режим записи набора. Истина - запись осуществляется с заменой существующих в базе данных записей набора. Ложь - запись осуществляется с "дописыванием" текущего набора записей. Описание: Возникает перед выполнением записи набора регистра сведений. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи набора регистра сведений. |
|||
2
NcSteel
02.02.10
✎
10:35
|
(1) Тьфу ты не то ))).
|
|||
3
NcSteel
02.02.10
✎
10:35
|
У табличного поля есть куча "событий"
|
|||
4
AndreyFAN
02.02.10
✎
10:37
|
(2) улыбнул ))))))))))
|
|||
5
VVVP
02.02.10
✎
10:37
|
Там нет ничего связанного с удалением :(
|
|||
6
AndreyFAN
02.02.10
✎
10:39
|
кто поддерживает конфу? пусть снимут галочку в правах на регистр "Удаление"
|
|||
7
NcSteel
02.02.10
✎
10:40
|
Процедура РегистрСведенийСписокПередУдалением(Элемент, Отказ)
// Вставить содержимое обработчика. КонецПроцедуры |
|||
8
IronDemon
02.02.10
✎
10:41
|
(6) Нет таких прав
|
|||
9
AndreyFAN
02.02.10
✎
10:45
|
(8) действительно... Вот сколько раз себе говорю "Молчи и слушай, молчи и слушай"...
|
|||
10
VVVP
02.02.10
✎
10:49
|
(7) Так в 8-ке предопределенных процедур нет вроде. Ее привязывать нужно к событию. А привязывать некуда
|
|||
11
hhhh
02.02.10
✎
10:50
|
там редактирование записи сделано через удаление-добавление
|
|||
12
Irbis
02.02.10
✎
10:53
|
Запрети записывать пустой набор.
|
|||
13
IronDemon
02.02.10
✎
10:55
|
Процедура ПередЗаписью(Отказ, Замещение)
ТаблицаНабораЗаписейНовое = ЭтотОбъект.Выгрузить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТорговыеАгентыТорговыхТочек.Агент, | ТорговыеАгентыТорговыхТочек.ТорговаяТочка |ИЗ | РегистрСведений.ТорговыеАгентыТорговыхТочек КАК ТорговыеАгентыТорговыхТочек |ГДЕ | ТорговыеАгентыТорговыхТочек.Период = &Период | И ТорговыеАгентыТорговыхТочек.Контрагент = &Контрагент | И ТорговыеАгентыТорговыхТочек.ДоговорКонтрагента = &ДоговорКонтрагента | И ТорговыеАгентыТорговыхТочек.ТорговаяТочка = &ТорговаяТочка"; Запрос.УстановитьПараметр("Период", ЭтотОбъект.Отбор.Период.Значение); Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Отбор.Контрагент.Значение); Запрос.УстановитьПараметр("ДоговорКонтрагента", ЭтотОбъект.Отбор.ДоговорКонтрагента.Значение); Запрос.УстановитьПараметр("ТорговаяТочка", ЭтотОбъект.Отбор.ТорговаяТочка.Значение); ТаблицаНабораЗаписейСтарое = Запрос.Выполнить().Выгрузить(); КонецПроцедуры |
|||
14
IronDemon
02.02.10
✎
10:56
|
Перед запросом Если ЭтотОбъект.Отбор.Период.Значение=Дата(1,1,1) Тогда
|
|||
15
IronDemon
02.02.10
✎
10:57
|
И сравнить две таблицы
|
|||
16
VVVP
02.02.10
✎
10:58
|
Я про пустой набор молчу пока. Мне бы только ручное удаление записей отключить (через форму записей юзеры будут события вводить)
|
|||
17
Irbis
02.02.10
✎
11:00
|
(16) А смысл? Все равно модуль набора записей не минуешь.
|
|||
18
VVVP
02.02.10
✎
11:02
|
Объясню: вот входит юзер в форму записей, а там кнопка "удалить", плюс в меню то же самое. Он жмет на кнопку и сносит записи. В регистре бардак, и т.д.!
Как запретить интерактивно удалять записи из регистра ?? Есть способ? |
|||
19
VVVP
02.02.10
✎
11:04
|
плюс в меню по правой кнопке мыши тож удаление есть! Отключить все меню? Как работать с формой?
|
|||
20
Irbis
02.02.10
✎
11:08
|
(1) А ты попробуй в модуле набора записей регистра сведений в ПередЗаписью добавить
Отказ=Количество()=0; |
|||
21
Irbis
02.02.10
✎
11:09
|
(20) к (19)
|
|||
22
VVVP
02.02.10
✎
11:10
|
Отказ=Количество()=0;
Извини не совсем понял |
|||
23
IronDemon
02.02.10
✎
11:10
|
(18) Можно командую панель свою сделать
|
|||
24
Irbis
02.02.10
✎
11:11
|
(22) Если набор пустой, отказ от записи.
|
|||
25
VVVP
02.02.10
✎
11:13
|
(24) Разве удаление записи = запись пустого набора ??
|
|||
26
wise
02.02.10
✎
11:13
|
РегистрСведенийСписок предопределённая процедура ПЕРЕДудалением()
|
|||
27
VVVP
02.02.10
✎
11:14
|
(26) -> (7) Так в 8-ке предопределенных процедур нет вроде. Ее привязывать нужно к событию. А привязывать некуда ...
Или я не прав? |
|||
28
wise
02.02.10
✎
11:14
|
26+ в форме списка регистра
|
|||
29
wise
02.02.10
✎
11:15
|
(27) ты НЕ прав !
это предопределённая процедура ЭЛЕМЕНТА формы |
|||
30
Irbis
02.02.10
✎
11:16
|
(25) А разве нет?
|
|||
31
wise
02.02.10
✎
11:16
|
29+ назвать ты её можешь КАК хочешь, но привязать к СОБЫТИЮ...
|
|||
32
VVVP
02.02.10
✎
11:19
|
Ладно, спасибо за помощь, будем пробовать так
|
|||
33
wise
02.02.10
✎
11:19
|
(27) как это НЕКУДА...
Процедура РегистрСведенийСписокПередУдалением(Элемент, Отказ) Отказ = Истина; КонецПроцедуры ФСЁ... |
|||
34
VVVP
02.02.10
✎
11:20
|
(33) А втыкать ее где нужно: в модуль формы или в модуль регистра?
|
|||
35
cleaner
02.02.10
✎
11:24
|
Простейший пример:
Процедура ПередЗаписью(Отказ, Замещение) Если ЭтотОбъект.Количество() = 0 Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры Если происходит запись пустого набора - то он все равно бесполезен, а в остальных случаях это означает, что происходит удаление. Разместить в модуле объекта |
|||
36
cleaner
02.02.10
✎
11:26
|
А если кому-то и можно удалять, то проверяй права:
Если РольДоступна("Да я это, я") Тогда Сообщить("Тебе удалять записи можно!"); КонецЕсли; |
|||
37
VVVP
02.02.10
✎
11:28
|
(33) Воткнул процедуру в модуль набора записей, в формы списка и элемента (на всякий случай) - и удалил запись без запинки!! НЕ работает по ходу дела такой вариант
|
|||
38
Irbis
02.02.10
✎
11:28
|
(36) Я об этом с (20) поста толкую.
|
|||
39
cleaner
02.02.10
✎
11:33
|
(38) я поддержал:)
|
|||
40
Irbis
02.02.10
✎
11:34
|
(39) Ты не поддержал, а за него работу сделал. Он теперь тебе тарелку супа должен.
|
|||
41
VVVP
02.02.10
✎
11:41
|
(35) вот это то что надо! Единственное что работает!
И (20) соотвественно. Жаль что поподробнее не дал расклад :) Всем большое спасибо !! |
|||
42
cleaner
02.02.10
✎
11:43
|
(40) согласен, будет должен:)
|
|||
43
VVVP
03.02.10
✎
12:35
|
Мда, есть одно неудобство - корректировать тоже нельзя, т.к. судя по всему изменение действительно идет через удаление старого набора данных и запись обновленного. А у нас - блокировка удаления. Т.е. либо только просмотр, либо сноси все подряд.
В лом было 1С-кам этот вопрос разрулить, хотя бы правами на регистр, спасибо блин большое. :( |
|||
44
VVVP
03.02.10
✎
12:37
|
А вариант в модуле формы списка (табличная часть) вообще не срабатывает на событие "удалить":
Процедура РегистрСведенийСписокПередУдалением(Элемент, Отказ) Отказ = Истина; КонецПроцедуры |
|||
45
73
03.02.10
✎
12:53
|
(44) Процедура привязана к событию табличного поля?
|
|||
46
Irbis
03.02.10
✎
12:55
|
(43) условия как в (36) или еще какие вставь и радуйся
|
|||
47
VVVP
03.02.10
✎
13:49
|
(45) Все привязано, ни одно событие таблчного поля не срабатывает !!!
(46) Не катит так! Надо чтобы юзеры редактировать могли ,а удалять - нет. А так и редактировать не дает Может платформа глючная (Версия 8.1.11 стоит) ??? |
|||
48
73
03.02.10
✎
13:51
|
(47) <ни одно событие таблчного поля не срабатывает > - как привязывал?
|
|||
49
Mitriy
03.02.10
✎
13:54
|
(47) да привязи ты уже событие к табполю...
|
|||
50
Mitriy
03.02.10
✎
13:55
|
(49)* привяжи...
|
|||
51
VVVP
03.02.10
✎
13:57
|
Да привязано все! Через события табличного поля в форме списка регистра!
Выбраны соотв. процедуры, сформированы самой 1с. 7-ка не подарок была, а это вообще ЖЖЖ... |
|||
52
Mitriy
03.02.10
✎
14:02
|
(51) а ты форму списка с формой выбора не путаешь? или, может, это вообще не форма регистра?
|
|||
53
VVVP
03.02.10
✎
14:12
|
и может вообще не 1С? :))
|
|||
54
VVVP
03.02.10
✎
14:13
|
Думаю, нахер эту тему. Сделаю как раньше, через подчиненный справочник.
30 минут на формы потрачу, чем 2 дня на эту херь. И права нормально рулятся. И не снесешь случайно все. |
|||
55
Mitriy
03.02.10
✎
14:19
|
(54) правильно, одна строчка кода - это неинтересно...
|
|||
56
0xFFFFFF
03.02.10
✎
14:22
|
(51) при чем тут подарок? Правильная вроде логика... Если в РС отредактировать ИЗМЕРЕНИЕ - это будет уже ДРУГАЯ запись РС. Соответственно ты этим действием удаляешь старую запись.
Думаю, что (33) у тебя не сработает, если будешь править ресурс... |
|||
57
0xFFFFFF
03.02.10
✎
14:24
|
(54) не правильно думаешь. Если там действительно РС - более правильный выбор, нежели справочник, то в форму "владельца" нужно просто воткнуть РегистрСведенийСписок с предустановленным отбором по этому владельцу. Тогда случайно никто ничего не удалит.
|
|||
58
0xFFFFFF
03.02.10
✎
14:25
|
(54) и будет по-настоящему, по семерочному! :)
|
|||
59
VVVP
03.02.10
✎
14:27
|
Хотелось для упрощения из владельца открывать непосредственно форму списка регистра и в ней работать. Там все так построено. Отбор есс-но включается.
Только защиты от удаления руками нет. |
|||
60
Snovy
03.02.10
✎
14:33
|
Кнопку "удалить" удалить или заблокировать (и в контекстном меню тоже) не предлагали?
|
|||
61
VVVP
03.02.10
✎
14:35
|
(6)) Вот это по 8-шному !!! :))
|
|||
62
VVVP
03.02.10
✎
14:36
|
(61) имелось ввиду
|
|||
63
VVVP
03.02.10
✎
14:37
|
или (60) туплю уже. Всем спасибо!!!
|
|||
64
0xFFFFFF
03.02.10
✎
14:39
|
(59) Так добавь эту форму списка в форму владельца! И в ней работай...
|
|||
65
0xFFFFFF
03.02.10
✎
14:44
|
+(64) Причем чтобы работали только с записями этого владельца, нужно скрыть колонку с этим владельцем. А там пусть хоть заудаляются.
|
|||
66
VVVP
03.02.10
✎
14:46
|
ДА, можно еще посидеть и воткнуть все это во владельца. Но там в конфе много информации так же через формы регистров сделано. И ставится вопрос защиты от "дурака". Вот поэтому вопрос и возник - глобально! Как защитить регистр??
Ну не перепахивать же всю конфу |
|||
67
VVVP
03.02.10
✎
15:27
|
Нашел, млин, причину всех несчастий! Форму списка не указал в качестве основной, недоглядел. И регистр свою подсовывал. Потому и события не отрабатывались. Теперь все пойдет
:) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |