ЗУП 2.5.12.1 Регистр сведений

Новая тема
Показывать по 10 20 40 сообщений
Это никуда пихать не надо - просто демонстрация убивания всех записей :)
вы хотите сказать, что при выполнении туда не заходит программа?
Если привязать её к кнопке удаления, находящейся на панели, то удаление не выполняется. Другое дело, что существует замечательная кнопочка "Delete" на клавиатуре и если ей воспользоваться, то никакая процедура её не останавливает.
причем тут кнопка удаления на панели?
привязка к событию ПередУдалением табличного поля РегистрСведенийСписок. а там хоть как удаляй - не удалится.
Всё разобралась. Спасибо за помощь. Мозг в последнее время совсем работать отказывается, точно в отпуск пора.
"Вообще, получается так:
1. Вы правы, отказ в ПередЗаписью в модуле регистра приводит к невозможности редактирования.
2. Осталось сделать еще одни шаг - узнать о редактировании. Для этого потребуется глобальная переменная. Тут 2 пути:
 1) Добавить в модуль Приложения. Это приведет к изменению стандартной конфигурации и необходимости следить, за тем что обновляется.
 2) Добавить ПараметрСеанса и Роль с доступом к ней (к сожалению я не знаю процедуры или функции, которая была бы в общем модуле с полными правами и устанавливала бы параметр сеанса по имени). Тогда получим:
Добавленные элементы:
ПараметрСеанса - РедактированиеРегистра - Булево
Роль - НашаРоль (Права на чтение/запись ПараметраСеанса РедактированиеРегистра)
Код в форме Списка (Событие Списка ПередОкончаниемРедактирования):

Процедура РегистрСведенийСписокПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если РольДоступна ("НашаРоль") ИЛИ РольДоступна ("ПолныеПрава") Тогда
ПараметрыСеанса.РедактированиеРегистра = Истина;
КонецЕсли;
КонецПроцедуры

Код в модуле набора записей:
Процедура ПередЗаписью(Отказ, Замещение)
лРедактирование = Ложь;
Если РольДоступна ("НашаРоль") ИЛИ РольДоступна ("ПолныеПрава") Тогда
лРедактирование = ПараметрыСеанса.РедактированиеРегистра;
ПараметрыСеанса.РедактированиеРегистра = Ложь;
КонецЕсли;

Если ЭтотОбъект.Количество()=0 И Не лРедактирование Тогда
Для Каждого лОтбор Из ЭтотОбъект.Отбор Цикл
Если ЗначениеЗаполнено (лОтбор.Значение) Тогда
Отказ = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры


В принципе, при выставлении РедактированиеРегистра в Истина можно и удалить (в какой-нибудь обработке). Я бы еще добавил условие для того, кто может удалить - всякое случается. Можно воспользоваться событием Списка ПередУдалением:
Процедура РегистрСведенийСписокПередУдалением(Элемент, Отказ)
Если РольДоступна ("ПолныеПрава") Тогда
ПараметрыСеанса.РедактированиеРегистра = Истина;
КонецЕсли;
КонецПроцедуры

В общем, примерно так я себе это представляю.
"
на здоровье. общими усилиями победили :)
Читают тему
(гостей: 1)

Быстрый переход