|
Определение удаления записи регистра сведений
| ☑ |
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
|
А еще, как оказалось (по крайней мере, при удалении одной записи) набор записей пуст, и данные о удаляемой записи можно вытащить из отбора. :)
|
|