В регистре сведений отловить событие при удалении записи

1. user1916391 10.02.25 17:00 Сейчас в теме
Как в регистре сведений (независимый, непериодический) отловить событие при удалении записи?
По теме из базы знаний
Найденные решения
4. spacecraft 10.02.25 19:46 Сейчас в теме
(1) обработчик ПередЗаписью регистра сведений

Процедура ПередЗаписью(Отказ, Замещение)
	
	Если Замещение И Выгрузить().Количество() = 0 Тогда
		//Это удаление записей
	КонецЕсли;
	
КонецПроцедуры

Только нужно учитывать, что МенеджерЗаписи при перезаписи всегда делает 2 записи. Сначала запись пустого набора (как раз попадает в условие удаление записи), затем записывает уже с данными.
erazh; VyacheslavShilov; +2 Ответить
2. SlavaKron 10.02.25 17:05 Сейчас в теме
(1) ПередЗаписью пустого набора в модуле набора.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 10.02.25 17:05 Сейчас в теме
(1) ПередЗаписью пустого набора в модуле набора.
3. Denis_CFO 49 10.02.25 17:06 Сейчас в теме
(1)
событие при удалении записи

Любое изменение регистра (и не только) нужно зафиксировать.
Фиксация события происходит записью изменений таблицы.

Смотрите в сторону ПриЗаписи или ПередЗаписью.
4. spacecraft 10.02.25 19:46 Сейчас в теме
(1) обработчик ПередЗаписью регистра сведений

Процедура ПередЗаписью(Отказ, Замещение)
	
	Если Замещение И Выгрузить().Количество() = 0 Тогда
		//Это удаление записей
	КонецЕсли;
	
КонецПроцедуры

Только нужно учитывать, что МенеджерЗаписи при перезаписи всегда делает 2 записи. Сначала запись пустого набора (как раз попадает в условие удаление записи), затем записывает уже с данными.
erazh; VyacheslavShilov; +2 Ответить
5. R_o_n_n_y 92 18.11.25 13:21 Сейчас в теме
Была задача: в качестве ресурса в регистре есть ссылка на Прикрепленный файл, необходимо при очистке регистра их удалять тоже.
Использовал альтернативный метод (если есть форма списка регистра). Использовал событие Списка "СписокПередУдалением" для формирования массива файлов к удалению и событие списка "СписокПослеУдаления" для удаления:

&НаКлиенте
Перем МассивФайловКУдалению;

&НаСервере
Процедура СписокПослеУдаленияНаСервере(МассивФайловКУдалению)
	
	Если МассивФайловКУдалению.Количество() > 0 Тогда
		Для А = 0 По МассивФайловКУдалению.Количество() - 1 Цикл
			СпрО = МассивФайловКУдалению[А].ПолучитьОбъект();
			СпрО.Удалить();
		КонецЦикла;		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СписокПослеУдаления(Элемент)
	
	СписокПослеУдаленияНаСервере(МассивФайловКУдалению);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
	
	МассивСтр = Элемент.ВыделенныеСтроки;
	МассивФайловКУдалению = СписокПередУдалениемНаСервере(МассивСтр);
	
КонецПроцедуры

&НаСервере
Функция СписокПередУдалениемНаСервере(МассивСтр)
	
	МассивФайлов = Новый Массив;
	Для Каждого ЭлМассива из МассивСтр Цикл
				
		Запись = РегистрыСведений.Сообщения.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(Запись, ЭлМассива);
		Запись.Прочитать();
		Если ЗначениеЗаполнено(Запись.ПрикрепленныйФайл) Тогда
			МассивФайлов.Добавить(Запись.ПрикрепленныйФайл);
		КонецЕсли;
	КонецЦикла;
	Возврат МассивФайлов;
	
КонецФункции
Показать
6. westline3 11.01.26 17:38 Сейчас в теме
(5) был близок к этому варианту в итоге применил ваш код с минимальными изменениями.
7. Sintson 415 11.08.26 12:07 Сейчас в теме
Процедура ПередЗаписью(Отказ, Замещение)

ЭтоУдалениеЗаписей = Замещение И ЭтотОбъект.Количество() = 0;

КонецПроцедуры
8. GlukAl 12.08.26 10:46 Сейчас в теме
(7)
ЭтоУдалениеЗаписей = Замещение И ЭтотОбъект.Количество() = 0;

а может и очистка регистра сведений перед записью данных
вот так вроде точнее событтия различает
Процедура ПередЗаписью(Отказ, Замещение)
	Если ЭтотОбъект.Количество()=0 Тогда //это удаление или очистка перед записью данных
		Если ЭтотОбъект.Модифицированность() Тогда
			// только удаление

		Иначе
			// очистка перед записью
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать
9. booksfill 14.08.26 10:35 Сейчас в теме
Насколько помню, все решается тем, что событие ПриЗаписи вызывается и при обновлении записи и при удалении только один раз. В отличие от ПередЗаписью. Поэтому, как-то так:
Процедура ПередЗаписью(Отказ, Замещение)
    
    Если Замещение  И ЭтотОбъект.Количество() = 0 Тогда
        ЭтотОбъект.ДополнительныеСвойства.Вставить("Удалили", истина); // ну или что надо, вместо Истина
    КонецЕсли;
    
КонецПроцедуры

Процедура ПриЗаписи(Замещение) // Вызовется только один раз
  Если ЭтотОбъект.Количество() = 0 И  И Замещение
		И ЭтотОбъект.ДополнительныеСвойства.Свойство("Удалили") Тогда
    ну и что-то дальше делаем
Показать


Внимание! Вроде как 1С открыло для себя update вместо delete and insert, поэтому поведение под новыми версиями платформы надо проверить.
Для отправки сообщения требуется регистрация/авторизация

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