ЗУП 2.5.12.1 Регистр сведений
Показывать по
10
20
40
сообщений
- 1
- 2
02.06.2010
10:55
#13
Если привязать её к кнопке удаления, находящейся на панели, то удаление не выполняется. Другое дело, что существует замечательная кнопочка "Delete" на клавиатуре и если ей воспользоваться, то никакая процедура её не останавливает.
02.06.2010
11:10
#14
причем тут кнопка удаления на панели?
привязка к событию ПередУдалением табличного поля РегистрСведенийСписок. а там хоть как удаляй - не удалится.
привязка к событию ПередУдалением табличного поля РегистрСведенийСписок. а там хоть как удаляй - не удалится.
02.06.2010
11:33
#15
Всё разобралась. Спасибо за помощь. Мозг в последнее время совсем работать отказывается, точно в отпуск пора.
02.06.2010
11:38
#16
"Вообще, получается так:
1. Вы правы, отказ в ПередЗаписью в модуле регистра приводит к невозможности редактирования.
2. Осталось сделать еще одни шаг - узнать о редактировании. Для этого потребуется глобальная переменная. Тут 2 пути:
1) Добавить в модуль Приложения. Это приведет к изменению стандартной конфигурации и необходимости следить, за тем что обновляется.
2) Добавить ПараметрСеанса и Роль с доступом к ней (к сожалению я не знаю процедуры или функции, которая была бы в общем модуле с полными правами и устанавливала бы параметр сеанса по имени). Тогда получим:
Добавленные элементы:
ПараметрСеанса - РедактированиеРегистра - Булево
Роль - НашаРоль (Права на чтение/запись ПараметраСеанса РедактированиеРегистра)
Код в форме Списка (Событие Списка ПередОкончаниемРедактирования):
Процедура РегистрСведенийСписокПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если РольДоступна ("НашаРоль") ИЛИ РольДоступна ("ПолныеПрава") Тогда
ПараметрыСеанса.РедактированиеРегистра = Истина;
КонецЕсли;
КонецПроцедуры
Код в модуле набора записей:
Процедура ПередЗаписью(Отказ, Замещение)
лРедактирование = Ложь;
Если РольДоступна ("НашаРоль") ИЛИ РольДоступна ("ПолныеПрава") Тогда
лРедактирование = ПараметрыСеанса.РедактированиеРегистра;
ПараметрыСеанса.РедактированиеРегистра = Ложь;
КонецЕсли;
Если ЭтотОбъект.Количество()=0 И Не лРедактирование Тогда
Для Каждого лОтбор Из ЭтотОбъект.Отбор Цикл
Если ЗначениеЗаполнено (лОтбор.Значение) Тогда
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
В принципе, при выставлении РедактированиеРегистра в Истина можно и удалить (в какой-нибудь обработке). Я бы еще добавил условие для того, кто может удалить - всякое случается. Можно воспользоваться событием Списка ПередУдалением:
Процедура РегистрСведенийСписокПередУдалением(Элемент, Отказ)
Если РольДоступна ("ПолныеПрава") Тогда
ПараметрыСеанса.РедактированиеРегистра = Истина;
КонецЕсли;
КонецПроцедуры
В общем, примерно так я себе это представляю.
"
1. Вы правы, отказ в ПередЗаписью в модуле регистра приводит к невозможности редактирования.
2. Осталось сделать еще одни шаг - узнать о редактировании. Для этого потребуется глобальная переменная. Тут 2 пути:
1) Добавить в модуль Приложения. Это приведет к изменению стандартной конфигурации и необходимости следить, за тем что обновляется.
2) Добавить ПараметрСеанса и Роль с доступом к ней (к сожалению я не знаю процедуры или функции, которая была бы в общем модуле с полными правами и устанавливала бы параметр сеанса по имени). Тогда получим:
Добавленные элементы:
ПараметрСеанса - РедактированиеРегистра - Булево
Роль - НашаРоль (Права на чтение/запись ПараметраСеанса РедактированиеРегистра)
Код в форме Списка (Событие Списка ПередОкончаниемРедактирования):
Процедура РегистрСведенийСписокПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если РольДоступна ("НашаРоль") ИЛИ РольДоступна ("ПолныеПрава") Тогда
ПараметрыСеанса.РедактированиеРегистра = Истина;
КонецЕсли;
КонецПроцедуры
Код в модуле набора записей:
Процедура ПередЗаписью(Отказ, Замещение)
лРедактирование = Ложь;
Если РольДоступна ("НашаРоль") ИЛИ РольДоступна ("ПолныеПрава") Тогда
лРедактирование = ПараметрыСеанса.РедактированиеРегистра;
ПараметрыСеанса.РедактированиеРегистра = Ложь;
КонецЕсли;
Если ЭтотОбъект.Количество()=0 И Не лРедактирование Тогда
Для Каждого лОтбор Из ЭтотОбъект.Отбор Цикл
Если ЗначениеЗаполнено (лОтбор.Значение) Тогда
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
В принципе, при выставлении РедактированиеРегистра в Истина можно и удалить (в какой-нибудь обработке). Я бы еще добавил условие для того, кто может удалить - всякое случается. Можно воспользоваться событием Списка ПередУдалением:
Процедура РегистрСведенийСписокПередУдалением(Элемент, Отказ)
Если РольДоступна ("ПолныеПрава") Тогда
ПараметрыСеанса.РедактированиеРегистра = Истина;
КонецЕсли;
КонецПроцедуры
В общем, примерно так я себе это представляю.
"
- 1
- 2
Читают тему
(гостей: 1)