Имя: Пароль:
1C
1С v8
Не отменяется попытка установки пометки удаления, если Отказ = истина
0 DenSpb
 
08.04.13
11:04
Сделал подписку на события. Перед записью. Код процедуры ниже. Процедура устанавливает Отказ = Истина, выдает соответствующее сообщение, но документ все равно помечается на удаление. Почему не отменяет запись?

Процедура ПроверитьНаличиеПодчиненныхПередУстановкойПометкиУдаления(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
   Если Источник.ПометкаУдаления И Не Источник.Ссылка.ПометкаУдаления Тогда
       ОбработкаТабличныхЧастей.ПроверитьНаличиеПодчиненныхДокументов(Источник.Ссылка, Отказ);
       Если Отказ Тогда
           Сообщить("У документа есть подчиненные документы!!! Помечать на удаление документ нельзя!!!");
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
1 DenSpb
 
08.04.13
11:13
Конфа "Управление торговлей", редакция 10.3 (10.3.6.8) - 8.2 обычное приложение.
2 Maxus43
 
08.04.13
11:19
Отказ в ОбработкаТабличныхЧастей.ПроверитьНаличиеПодчиненныхДокументов(Источник.Ссылка, Отказ);

там русские буквы точно?
3 DenSpb
 
08.04.13
11:24
(2) Отказ - Русские. Проверил.
4 Maxus43
 
08.04.13
11:25
(3) Чудес не бывает (с) Доказано...
5 DenSpb
 
08.04.13
11:26
(4) Знаю, но почему дает помечать - не могу найти.
6 Maxus43
 
08.04.13
11:26
ОбщегоНазначения.СообщитьОбОшибке("У документа есть подчиненные документы!!! Помечать на удаление документ нельзя!!!", Отказ);
7 cw014
 
08.04.13
11:27
Есть вероятность что где-то дальше Отказ сбрасывается в Ложь
8 DenSpb
 
08.04.13
11:28
(7) по идее ,если в подписке установили Отказ = истина ,то дальше не должно идти.
9 Maxus43
 
08.04.13
11:28
(8) неа
10 Maxus43
 
08.04.13
11:29
отказ проверяется в конце транзакции поидее, в процессе им можно играть ещё
11 DenSpb
 
08.04.13
11:31
(6) сделал        
Если Отказ Тогда
           СообщитьОбОшибке("У документа есть подчиненные документы!!! Помечать на удаление документ нельзя!!!", Отказ);
           Возврат;
       КонецЕсли;
Не помогло
12 cw014
 
08.04.13
11:32
(11) А где ты это сделал?
13 DenSpb
 
08.04.13
11:35
(12) в той же процедуре. получилось
   
   Если Источник.ПометкаУдаления И Не Источник.Ссылка.ПометкаУдаления Тогда
       ОбработкаТабличныхЧастей.ПроверитьНаличиеПодчиненныхДокументов(Источник.Ссылка, Отказ);
       Если Отказ Тогда
           СообщитьОбОшибке("У документа есть подчиненные документы!!! Помечать на удаление документ нельзя!!!", Отказ);
           Возврат;
       КонецЕсли;
   КонецЕсли;
14 DenSpb
 
08.04.13
11:35
(12) хотя, как я понимаю - это одно и тоже. что и раньше было
15 Maxus43
 
08.04.13
11:48
база файловая?
16 DenSpb
 
08.04.13
11:53
Перенес процедуру в один из документов в модуль объекта, все сработало нормально. Выдало сообщение и не дало пометить на удаление. Видимо дальше где то Отказ ставится в ложь.
17 DenSpb
 
08.04.13
11:54
(15) рабочая - серверная, тестовая файловая - так что на обоих вариантах не работала.
18 Serg_1960
 
08.04.13
11:54
Что-то вы не те вопросы задаете :) Вот верный вопрос:

ТС, а ты уверен что другие подписки и обработчики корректно написаны и не затирают Отказ? Имхо, кривые ручки, никто не отменял :)
19 Maxus43
 
08.04.13
11:57
(18) вопрос (15) был для этого и задан)
(17) на файловой включай замер производительности, делай своё дело (где даёт пометить на удаление) и смотри замер. Ищи по словам Отказ, найдётся может строка предательская
20 DenSpb
 
08.04.13
11:57
(18) ну так и есть. Где то Отказ дальше в ложь устанавливается. Вопрос решится следующим образом. - В каждый нужный док в процедуру перед записью сделаю ссылку на процедуру ,аналогичную подписке на события.
21 Maxus43
 
08.04.13
11:58
(20) гениальное решение) подписки и придуманы чтоб 500 раз не прописывать одно и тоже, но хозяин барин
22 Зойч
 
08.04.13
11:59
в других подписках может быть Отказ = Ложь
23 Serg_1960
 
08.04.13
12:00
Не выход, тс. Найди и устрани. Поверь, у тебя где-то проблема осталась. Ружьё на стенки висит - оно обязательно выстрелит.
24 DenSpb
 
08.04.13
12:10
(20) работаю с базой недавно, она сильно переписана. Копаться нет желания. Больше времени потрачу на поиск.
25 DenSpb
 
08.04.13
12:10
(21) работаю с базой недавно, она сильно переписана. Копаться нет желания. Больше времени потрачу на поиск.
26 DenSpb
 
08.04.13
12:12
(23) Как раз выход. Если Отказ ставишь в процедуре ПередЗаписью объекта, то дальше уже не идет. Меня это устраивает. Сейчас пока так обойдусь, когда найду в чем дело, переделаю. Сейчас времени нет это искать.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший