Имя: Пароль:
1C
 
Как сделать запрет на удаление записей регистра сведений ?
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
Нашел, млин, причину всех несчастий! Форму списка не указал в качестве основной, недоглядел. И регистр свою подсовывал. Потому и события не отрабатывались. Теперь все пойдет
:)