Регистр сведений, удаление с параметрами

1. fugu 23 02.12.20 16:23 Сейчас в теме
Добрый день.
Регистр сведений периодический, без регистратора.

Модуль набора записей.
Процедура ПередЗаписью(Отказ, Замещение)
	Если ЭтотОбъект.Количество() = 0 Тогда
        //это пустой набор записей
		док = ЭтотОбъект.Отбор.ДокументРегистратор.Значение;
		Если док<>"" И док.Проведен Тогда
		Отказ = Истина;
            ВызватьИсключение("Удаление запрещено, необходимо распровести документ!"); 
		КонецЕсли;
      КонецЕсли;        
КонецПроцедуры
Показать


Как можно узнать, если идет удаление записи из документа при отмене проведения - разрешить, если удаление - вручную - запретить?
По теме из базы знаний
Найденные решения
3. FatPanzer 02.12.20 16:56 Сейчас в теме
(2) При проведении документа у этого набора записей заполнить Дополнительные свойства. И проверять именно их в модуле набора записей. Тогда при ручном удалении в ДополнительныеСвойства будет пусто...
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. oleg-x 27 02.12.20 16:32 Сейчас в теме
Здесь ни как, без передачи дополнительного параметра, каким либо способом. Делайте проверку в форме списка регистра. В событие перед удалением, там все просто, пропишите отказ без условий и удалить не смогут.
3. FatPanzer 02.12.20 16:56 Сейчас в теме
(2) При проведении документа у этого набора записей заполнить Дополнительные свойства. И проверять именно их в модуле набора записей. Тогда при ручном удалении в ДополнительныеСвойства будет пусто...
4. oleg-x 27 02.12.20 17:09 Сейчас в теме
(3) Да, такой способ передачи параметра достаточно простой.
Но я все делал в списках, по мне так проще (списков не так много и условие простое), правда не проверку удаления, а историю регистра так делал. Да и данные еще не изменены и их не надо вытаскивать из базы запросом, если требуется дополнительная проверка и прочее.
5. FatPanzer 02.12.20 17:11 Сейчас в теме
(4) Ага, не так много согласен. Особенно на любой внешней обработке, на которой любой ламер нарисует динамический список регистра и поудаляет все к той-самой-матери...
6. AnryMc 849 02.12.20 17:24 Сейчас в теме
Я решал похожую задачу так (через "ж..у"):
1) Две роли - одной можно второй нет (удалять)
2) подписка на событие "Получение формы" в ней смотрел что это "Форма записи" и давал привилегированный режим
Если ВидФормы = "ФормаЗаписи" Тогда
...
	УстановитьПривилегированныйРежим(Истина);
...
        УстановитьПривилегированныйРежим(ЛОЖЬ);

В форме отключал автоменю (для исключения команды - "Удалить")

В итоге пользователь мог изменять запись, но не мог её удалить
9. AnryMc 849 02.12.20 17:31 Сейчас в теме
В самом регистре (модуль набора записей):

Если (ЭтотОбъект.Отбор.Количество() = 0) И (ПривилегированныйРежим() = ЛОЖЬ) Тогда
		//это пустой набор записей (УДАЛЕНИЕ)

		Если НЕ РольДоступна("МожноУдалять") Тогда
			
			Отказ = Истина;
			//ВызватьИсключение("Удаление запрещено");
10. AnryMc 849 02.12.20 17:33 Сейчас в теме
(9)
ЭтотОбъект.Отбор.Количество() = 0


Почему использовал именно это - не помню....
7. oleg-x 27 02.12.20 17:27 Сейчас в теме
(5) А зачем обычным пользователям давать открывать внешние обработки, так удаление регистра сведений будет не самой большой проблемой. Можно например изменить цену и подельник купит товар условно по 1 рублю. Изменить кредиторку в пользу несуществующей компании и прочее. Так что внешние обработки зло по определению и их не рассматриваем :-)
8. FatPanzer 02.12.20 17:30 Сейчас в теме
(7) Для этого для РС существует право доступа "Редактирование" у ролей.
11. oleg-x 27 02.12.20 17:58 Сейчас в теме
(8) Она отвечает за интерактивное редактирование. А я говорю, что продвинутый пользователь, может открыть свою обработку и программно изменить данные в регистрах (если есть право на изменение). Визуально в документах будет все ок, а практически (в отчетах и прочее) другие данные. Убрать роль изменение нельзя, так как человек может проводить документы (но там например алгоритм прописан жестко и такого сделать не может) .
Поэтому, на рабочих базах у пользователя нет прав открывать внешние обработки, только подключенные.
12. fugu 23 02.12.20 23:08 Сейчас в теме
Возможно я не правильно выразился.
Если непосредственное удаление и Реквизит - ДокументРегистратор пустой удалить запись, если ДокументРегистратор - заполнен, не удалять...
Это отрабатывает условие.

НО при распроведении документа мне не дает удалить запись, т.к. ДокументРегистратор поле заполнено...
И как сказать ,что удаление при распроведении документа разрешено?
13. fugu 23 03.12.20 00:14 Сейчас в теме
(3) - я понял СПАСИБО!!! Получилось. Сразу не понял.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот