ТаблицаФормы ПередУдалением/ПослеУдаления определить, что удалено

1. native-api 19 19.02.25 17:19 Сейчас в теме
Отраслевая конфигурация, 8.3.25.1520, УФ.
Определенный документ представляет собой многоуровневую структуру, в результате у его определенной ТЧ есть подчиненные строки в другой ТЧ (соответствие идет по полю типа УИД). Необходимо при удалении строки в главной ТЧ удалить соответствующие ей строки подчиненной.

Здесь фигурируют 2 обработчика: ПередУдалением и ПослеУдаления. ПередУдалением не гарантирует удаления, поэтому ПослеУдаления выглядит подходящим местом. Но у него нет аргумента, указывающего, что именно было удалено. Из свойств таблицы формы также ничего не видно: ТекущаяСтрока и ТекущиеДанные = Неопределено, ВыделенныеСтроки пусто.

Можно ли как-то в ПослеУдаления узнать, что было удалено? (собственный поиск по Инету и ИТС ничего не нашел)

Можно в ПередУдалением запомнить нужные данные (вариант -- только в переменной модуля, ДополнительныеСвойства на клиенте недоступно, а из ПередУдалением нельзя обращаться к серверу) -- но это ненадежно, т.к. другой обработчик ПередУдалением может что-то поменять.

Другой вариант -- не заморачиваться в форме, а в событии ПередЗаписью объекта проходить по всем подчиненным ТЧ и проверять наличие для каждой строки вышестоящей записи, если ее нет -- удалять. В данном конкретном случае это сработает, но ответ на вопрос остается неизвестным.
Найденные решения
3. miniogn 44 19.02.25 18:02 Сейчас в теме
Другой вариант -- не заморачиваться в форме, а в событии ПередЗаписью объекта проходить по всем подчиненным ТЧ и проверять наличие для каждой строки вышестоящей записи, если ее нет -- удалять. В данном конкретном случае это сработает, но ответ на вопрос остается неизвестным.

Это лучше сделать в любом случае.
native-api; +1 Ответить
4. SlavaKron 19.02.25 18:12 Сейчас в теме
(1) Обычно такое делают программно после безусловного отказа ПередУдалением.
native-api; +1 Ответить
10. native-api 19 20.02.25 11:26 Сейчас в теме
(1) Логика основной конфигурации отраслевого решения, с которым я работаю, удаляет подчиненные строки в ПередУдалением, определяя их по <таблица формы>.ВыделенныеСтроки .

Т.е. на то, что кто-то в расширении может отменить удаление, они не закладываются. Либо закладываются на то, что этот кто-то тогда добавит свой обработчик с вызовом перед ихним.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 19.02.25 17:20 Сейчас в теме
(1)
ПередУдалением не гарантирует удаления

Почему не гарантирует?
Если в конце процедуры не установлен Отказ = Истина, значит строки будут удалены.
Какие еще нужны гарантии?
6. native-api 19 20.02.25 10:08 Сейчас в теме
(2) В другом расширении или в основной конфигурации (мой обработчик -- в расширении) могут быть другие обработчики, действующие независимо от моего.
И поскольку есть принципиальная возможность наличия других обработчиков, это намекает, что разработчики платформы, вероятно, предусмотрели какой-то механизм, остающийся действенным в этой ситуации. А если нет, то разработчики типовых придумали какой-то обход, т.к. им это, скорее всего, также нужно.
8. Sashares 33 20.02.25 10:24 Сейчас в теме
(6)
В другом расширении или в основной конфигурации (мой обработчик -- в расширении) могут быть другие обработчики, действующие независимо от моего.


Вообще пофиг.
Если другое расширение ломает логику работы конфигурации, это не проблема конфигурации, это проблема расширения и пользователя.
4. SlavaKron 19.02.25 18:12 Сейчас в теме
(1) Обычно такое делают программно после безусловного отказа ПередУдалением.
native-api; +1 Ответить
7. native-api 19 20.02.25 10:15 Сейчас в теме
(4) Интересно. А как тут обеспечить совместимость с другими обработчиками? Если интерактивного удаления не происходит, обработчики ПослеУдаления не будут вызваны. А программно все запрограммированные обработчики какого-то события вызвать нельзя, только руками, если как-то заранее их все знать.
9. SlavaKron 20.02.25 11:04 Сейчас в теме
(7) Никак, другие обработчики не нужны.
native-api; +1 Ответить
5. user2107191 19.02.25 19:03 Сейчас в теме
(1)
т.к. другой обработчик ПередУдалением может что-то поменять.
С этого места поподробнее, пожалуйста.
Ты умеешь в процессе одного удаления успевать нажимать на другое удаление???
10. native-api 19 20.02.25 11:26 Сейчас в теме
(1) Логика основной конфигурации отраслевого решения, с которым я работаю, удаляет подчиненные строки в ПередУдалением, определяя их по <таблица формы>.ВыделенныеСтроки .

Т.е. на то, что кто-то в расширении может отменить удаление, они не закладываются. Либо закладываются на то, что этот кто-то тогда добавит свой обработчик с вызовом перед ихним.
11. Sashares 33 20.02.25 11:53 Сейчас в теме
(10)
Т.е. на то, что кто-то в расширении может отменить удаление, они не закладываются.

И это правильно. Нельзя закладываться, что в расширении кто-то что-то сделает иначе.
Это в принципе нельзя предсказать.
Заменил типовое поведение в расширении - это полностью твоя задача сделать так, чтобы логика работы конфигурации не нарушилась.
3. miniogn 44 19.02.25 18:02 Сейчас в теме
Другой вариант -- не заморачиваться в форме, а в событии ПередЗаписью объекта проходить по всем подчиненным ТЧ и проверять наличие для каждой строки вышестоящей записи, если ее нет -- удалять. В данном конкретном случае это сработает, но ответ на вопрос остается неизвестным.

Это лучше сделать в любом случае.
native-api; +1 Ответить
Оставьте свое сообщение

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