Имя: Пароль:
1C
1С v8
Определение удаления записи регистра сведений
0 Кондидат В
 
05.09.18
07:49
Всем привет!
Кто подскажет, как в событиях ПередЗаписью или ПриЗаписи модуля набора записей регистра сведений определить, что запись удаляется?
1 Ненавижу 1С
 
гуру
05.09.18
07:55
Перед записью сравнить что запрос выдаст из базы и что есть в текущем наборе
2 RomanYS
 
05.09.18
07:57
(1) там всегда две записи, первая -очистка
3 Krolik Bezobraznik
 
05.09.18
08:29
Удаление интерактивное?
4 Krolik Bezobraznik
 
05.09.18
08:34
(0) У набора записей есть дополнительные свойства. Добавьте туда свойство. Затем сделайте обработчик события ПерезЗаписью и прочтите свойство дополнительных свойств. Если свойство найдено - это удаление.
5 DrWatson
 
05.09.18
08:36
Зафиксировать в логах удаление, вторая запись затрет изменением. Где в логах осталось удаление, значит так оно и было.
6 Кондидат В
 
05.09.18
08:55
Метод "ПередЗаписью" работает так:
Если запись удаляется, то вызывается один раз
Если запись обновляется, вызывается 2 раза, первый раз со старыми измерениями, второй раз с новыми. Соответсвенной, в первый раз такая запись в БД будет, второй раз, уже с новыми измерениями уже нет. Исходя из этого реализовал так: (что думаете?)


    Поля = ""; Условия = "";
    Запрос = Новый Запрос;
    Для Каждого ЭлементОтбора ИЗ ЭтотОбъект.Отбор Цикл
        Поля = Поля + ?(Поля = "","", ", ")+ЭлементОтбора.Имя + Символы.ПС;
        Условия = Условия + ?(Условия = "","",Символы.Таб  + " И ")+ЭлементОтбора.Имя + " = &" + ЭлементОтбора.Имя + Символы.ПС;
        Запрос.УстановитьПараметр(ЭлементОтбора.Имя, ЭлементОтбора.Значение);
    КонецЦикла;
    Запрос.Текст = "ВЫБРАТЬ "+Поля+" ИЗ РегистрСведений.ШтрихКоды КАК ШтрихКоды ГДЕ "+Условия;
    РезультатЗапроса = Запрос.Выполнить();
    Удалили = НЕ РезультатЗапроса.Пустой();
7 Кондидат В
 
05.09.18
10:16
А еще, как оказалось (по крайней мере, при удалении одной записи) набор записей пуст, и данные о удаляемой записи можно вытащить из отбора. :)