ПриУдаленииЭлемента()

1. laureli 11.05.07 16:41 Сейчас в теме
Здрасвствуйте.
Тело процедуры ПриУдаленииЭлемента(Элемент,Режим) :
Если (Режим=1)
записать
КонецЕсли;
т.е. тело должно срабатывать при непосредственном удалении, но если почему-то не работает. может быть потому , что я сначала помечаю объект на удаление, а только потом удаляю, но он же все равно удаляется?!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. z2z5 11.05.07 17:26 Сейчас в теме
Я кая понимаю при удаление помеченных объектов эта процедура не вызывается.
Она вызовется при удаление с помощью функции Удалить(1). В этом случае Режим = 1
6. poppy 11.05.07 21:43 Сейчас в теме
z2z5 Написал:
-------------------------------------------------------
> Я кая понимаю при удаление помеченных объектов эта
> процедура не вызывается.
> Она вызовется при удаление с помощью функции
> Удалить(1). В этом случае Режим = 1

Не правильно понимаешь. При удалении с помощью метода Удалить(1) функция ПриУдаленииЭлемента(<?>,) не вызывается.

Она вызывается с параметром режим=1 в том случае, если пользователю разрешено интерактивное удаление объектов.

16. sevenlis 70 16.05.07 12:37 Сейчас в теме
Всем приветы!
Почему команда Записать(); не вызывает предопределенную ПриЗаписи() ?
Может потому что вызывается из ПриОткрытии() ?
Да, и еще: когда ПриЗаписиПерепроводить(1);, Записать(); из ПриОткрытии() тож не перепроводит...
17. poppy 16.05.07 13:33 Сейчас в теме
LiS Написал:
-------------------------------------------------------
> Почему команда Записать(); не вызывает
> предопределенную ПриЗаписи() ?

Это невозможно понять, можно только запомнить... :)

Это не восьмерка, здесь процедура ПриЗаписи() вызывается только при интерактивной (но не программной) записи пользователем.

> Да, и еще: когда ПриЗаписиПерепроводить(1);,
> Записать(); из ПриОткрытии() тож не
> перепроводит...

Та же фигня.
2. z2z5 11.05.07 16:52 Сейчас в теме
все сначала помечают на удаление, потом удаляют. Друго варианта нет.

смотрим синтаксис помощника:

Процедура ПриУдаленииЭлемента(<?>,)
КонецПроцедуры
Синтаксис:
ПриУдаленииЭлемента(<УдалЭлем>,<Режим>)
Назначение:
Предопределенная процедура при интерактивном удалении элемента справочника.
Параметры:
<УдалЭлем> - удаляемый элемент;
<Режим> - режим удаления: 1 - непосредственное удаление, 0 -пометка на удаление.

Если Режим=0 значит ты сейчас помечаеш на удаление


вот посмотри: http://infostart.ru/forum/read.php?25,7044,ref=9696
3. laureli 11.05.07 17:15 Сейчас в теме
Спасибо.
При пометке на удаление процедура срабатывает, а при удалении нет. А мне надо, чтобы она срабатывала только при удалении, для этого и Если Режим=1...
5. laureli 11.05.07 18:12 Сейчас в теме
7. laureli 14.05.07 09:57 Сейчас в теме
Как тогда отследить, что пользователь удалил элемент?
8. O-Planet 6435 14.05.07 12:02 Сейчас в теме
Вы что-то ни как не договоритесь, или договариваетесь не о том... Процедуру кидаешь в глобальный модуль. А в ней проверяешь:

1. Если процедура вдруг запустилась с параметром 0, и элемент поменчен на удаление, то значит, пользователь снимает пометку удаления
2. Если процедура запустилась с параметром 0, и элемент не поменчен на удаление, то значит, пользователь устанавливает пометку удаления
3. Если процедура запустилась с параметром 1, и элемент поменчен на удаление, то значит, пользователь решил окончательно угробить базу, вызвав "Удаление помеченных объектов"
4. Если процедура запустилась с параметром 1, и элемент не поменчен на удаление, то значит в базе произошли необратимые процессы

А вообще, такие вопросы не постят на форум, и не ждут ответов в течение нескольких дней, а берут книгу и читают. А я поступаю еще проще: кидаю в глобальник вот это, и смотю, что будет:

Код
Процедура ПриУдаленииЭлемента(Элем, Режим) 
   Сообщить("-----");
   Сообщить(Режим);
   Сообщить(Элем.ПометкаУдаления());
КонецПроцедуры
Показать полностью



9. laureli 14.05.07 12:43 Сейчас в теме
Спасибо большое. Но проблема у меня в другом. Процедура ПриУдаленииЭлемента() срабатывает только при пометке на удаление, а при Операции->УдалениеПомеченныхОбъектов нет. Я просто не понимаю почему...
10. sashulyT 201 14.05.07 14:45 Сейчас в теме
poppy Написал:
-------------------------------------------------------
> Она вызывается с параметром режим=1 в том случае,
> если пользователю разрешено интерактивное удаление
> объектов.

интерактивно - это как?
11. laureli 14.05.07 16:29 Сейчас в теме
Как отследить удаление при использовании Удаления помеченных объектов?
12. poppy 15.05.07 01:08 Сейчас в теме
O-Planet Написал:
-------------------------------------------------------
> 3. Если процедура запустилась с параметром 1, и
> элемент поменчен на удаление, то значит,
> пользователь решил окончательно угробить базу,
> вызвав "Удаление помеченных объектов"
> 4. Если процедура запустилась с параметром 1, и
> элемент не поменчен на удаление, то значит в базе
> произошли необратимые процессы

Прежде чем расказывать начинающим сказки - сам попробуй.
13. poppy 15.05.07 01:09 Сейчас в теме
laureli Написал:
-------------------------------------------------------
> а при Операции->УдалениеПомеченныхОбъектов нет. Я
> просто не понимаю почему...

В этом случае она не должна срабатывать...
14. poppy 15.05.07 01:26 Сейчас в теме
sashulyT Написал:
-------------------------------------------------------
> интерактивно - это как?

Для начала нужно разрешить непосредственное удаление объектов: Конфигуратор\Меню\Конфигурация\Открыть конфигурацию\Меню\Действия\Свойства\Задача\Разрешить непосредственное удаление объектов.

Далее:
Предприятие\Меню\Сервис\Параметры\Общие\Режим удаления объектов: Непосредственное удаление.

В любом списке справочника нажимаем DEL - получаем вызов процедуры ПриУдаленииЭлемента(, Режим = 1)
15. poppy 15.05.07 01:26 Сейчас в теме
laureli Написал:
-------------------------------------------------------
> Как отследить удаление при использовании Удаления
> помеченных объектов?

Никак. :(
18. sevenlis 70 16.05.07 13:53 Сейчас в теме
А можно ли ПриОткрытии() сбросить флаг модифицированности? Если да, то как?
19. poppy 16.05.07 14:13 Сейчас в теме
LiS Написал:
-------------------------------------------------------
> А можно ли ПриОткрытии() сбросить флаг
> модифицированности? Если да, то как?

Лучше его не устанавливать...

http://www.sinor.ru:8100/~my1c/knowhow/clrmodif.html
20. sevenlis 70 16.05.07 16:00 Сейчас в теме
Процедура глСброситьПризнакМодифицированности(Конт) Экспорт
     // сброс признака модифицированности для формы
     Если Конт.Модифицированность()=1 Тогда
          НачатьТранзакцию();
          Конт.Записать();     
          ОтменитьТранзакцию();
     КонецЕсли;
КонецПроцедуры // СброситьПризнакМодифицированности
Показать

Хорошо, только если у юзверя в правах не выбрано изменение без перепроведения - ругаицца... А надо чтоб тихо...
Сделал примерно следующее: в ПриОткрытии():
Если (Выбран()=1) И (Проведен()=1) Тогда
       Провести();
ИначеЕсли (Выбран()=1) И (Проведен()=0) Тогда
       Записать();
КонецЕсли;
Оставьте свое сообщение

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