Установка пометки удаления документа на основании пометки удаления другого документа

1. Treshem 23.08.17 09:57 Сейчас в теме
Добрый день. Платформа 1С:Предприятие 8.3 (8.3.9.2233). Конфига: 1.6.28.4(сильнодоработанная). Подскажите как лучше сделать. Есть документ "Реализация". На его основании создаётся документ "Отчёт". Нужно при установке пометки на удаление в документе "Реализация" устанавливать пометку на удаление в документе "Отчёт". Так же желательно тоже самое на счёт проведения.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. japopov 68 23.08.17 10:02 Сейчас в теме
(1) Обрабатываете событие ПриЗаписи в объекте документа Реализация. Там собираете список подчинённых документов Отчёт и помечаете их на удаление, если надо (разумеется, нужны разные ветки Если в зависимости от ПометкаУдаления Реализации).
Имейте в виду: всё, что ПриЗаписи, выполняется в одной транзакции. То есть,
1) при ошибке в одном из подчинённых документов вся цепочка не будет обработана, включая основной документ;
2) всё должно делаться очень быстро и с минимумом проверок и движений - тормоза гарантированы.
3. Fox-trot 158 23.08.17 10:13 Сейчас в теме
(2) дабы избежать тормозов, то можно создать некий флаг типа
Перем НужноПошалить;

Процедура ПередЗаписью()
 //здесь делаем проверку на чегото там
 НужноПошалить = ПроверкаМоегоУсловияНаЧеготоТам(Ссылка);
КонецПроцедуры

Процедура ПриЗаписи()
 Если НужноПошалить Тогда
  // чтото делаем = удаляем, помечаем и тд
 КонецЕсли;
КонецПроцедуры
Показать
4. japopov 68 23.08.17 10:18 Сейчас в теме
(3) А смысл? Проходим цепочку событий:

Реализация ПередЗаписью. Проверки-проверки, транзакция не началась
начинается транзакция
Реализация ПриЗаписи. Строится список Отчетов (уже затраты времени), и ДЛЯ КАЖДОГО из них
Отчет ПередЗаписью
Отчет ПриЗаписи
Отчет ПослеЗаписи
транзакция завершается (только теперь!)
Реализация ПослеЗаписи.

Итак, где тут экономия в Вашем варианте? Увы, это из другой темы совет...
5. Fox-trot 158 23.08.17 11:36 Сейчас в теме
(4) так код был для документа Реализация ващета
7. japopov 68 23.08.17 12:12 Сейчас в теме
(5) Так я тебе потому и написал прохождение событий, ващета. Транзакция начнётся на документе Реализация и закончится на нём же, а все Отчеты войдут в неё. И если в Отчетах код не оптимизирован, то будут блокировки. Ващета.

(6) Хорошее решение, я сам использовал (я ещё делал обработку рег.заданием, чтобы вынести за время загруженности сервера, там была долгая и печальная логика, так что в ночь - самое то). Чревато Ваше решение только тем, что будет разница во времени между удалением Реализации и обработкой соответствующих Отчетов. И, как показывает практика, юзеры бывают, что твои бараны: никакие сообщения не помогают, если они хотят увидеть результат "прям сразу".
Так что, лучше бы просто тупым кодом делать, в одной транзакции, только код вычистить по возможности. Но если будут при этом тяжкие блокировки, то Ваше решение - единственное, согласен.
8. Goleff74 215 23.08.17 12:20 Сейчас в теме
(7)
Ну, так ФЗ запускаем сразу. Если пользователи интерактивно хотят видеть прям сразу и это принципиально, то программно при интерактивном изменении РТУ вставить ОжидатьЗавершения и пусть котиков смотрят :)
По времени блокировка интерфейса пользователя займет столько же, но параллельность работы не пострадает.
9. japopov 68 23.08.17 12:24 Сейчас в теме
(8) А что, вариант! Я как-то не догадался блокировать интерфейс на время выполнения фонового задания... Впрочем, IMHO, если уж начали спотыкаться на блокировках при удалении - самое время строить регзадания и выносить обработку в часы затишья.
10. Kinestetik 23 24.08.17 17:04 Сейчас в теме
(1) Лучше, наверное, это в подписке на событие делать?
Nelli_A86; +1 Ответить
6. Goleff74 215 23.08.17 11:39 Сейчас в теме
При записи РТУ при не отказе запускаем фоновое, которое уже дербанит отчеты. Только при этом реализовываем протокол отработки фонового и предупреждение юзера по этому протоколу. Зато на блокировках страдать не буим.
Если отчет только один, то скопировать поведение системы РТУ/СФ.
Оставьте свое сообщение

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