|
Не срабатывает "Отказ" в "ПередЗаписью" документа | ☑ | ||
---|---|---|---|---|
0
daringer
12.02.15
✎
17:22
|
Здравствуйте. Делаю в подписке на события проверку перед записью документа, получаю Отказ = Истина. После выхода из процедуры должна быть прекращена запись документа с ошибкой, но док. все равно записывается. Причем если записывать уже созданный документ, то все отрабатывает нормально. Кто сталкивался с такой проблемой?
1С:Предприятие 8.3 (8.3.5.1098) |
|||
1
ДенисЧ
12.02.15
✎
17:25
|
Ещё одна подписка потом срабатывает, где сбрасывается этот флаг
|
|||
2
daringer
12.02.15
✎
17:27
|
Подписка где отказ = истина - последняя в списке, т.е. выполняется последней. Проверил подписки "ПриЗаписи", там нигде флаг не сбрасывается. И вообще тогда и уже созданный объект тоже бы проводился
|
|||
3
ShoGUN
12.02.15
✎
17:29
|
(2) Порядок выполнения подписок - НЕ ОПРЕДЕЛЕН.
|
|||
4
daringer
12.02.15
✎
17:32
|
Вообще то ОПРЕДЕЛЕН. Подписки выполняются в порядке следования их в конфигураторе.
|
|||
5
ShoGUN
12.02.15
✎
17:33
|
(4) Ссылку, желательно на официальную документацию, а не на собственные измышления.
|
|||
6
ДенисЧ
12.02.15
✎
17:34
|
(4) Вообще-то НЕ определён. Нигде не декларируется их последовательность.
Если есть конфиденциальная информация - поделись |
|||
7
Goggy
12.02.15
✎
17:35
|
Мне тоже было бы интересно узнать такое.
|
|||
8
daringer
12.02.15
✎
17:36
|
Нафиг тебе ссылка? Открой конфигуратор, сделай 2 подписки ПередЗаписью например и запиши документ.
|
|||
9
ShoGUN
12.02.15
✎
17:36
|
||||
10
ShoGUN
12.02.15
✎
17:37
|
(8) Только Шерлок Холмс мог правильно юзать дедуктивный метод. И то - не в 1С.
|
|||
11
daringer
12.02.15
✎
17:38
|
Я говорю не про "ПриУстановкеНовогоНомера срабатывает ПОСЛЕ ПриЗаписи" я говорю в разрезе одного события. Если у вас много подписок на событие "ПередЗаписью" на один документ, то они будут выполняться в порядке их следования.
|
|||
12
hhhh
12.02.15
✎
17:41
|
(11) ну и в чем вопрос? отладчиком фигачь пока не дойдешь до места, где Отказ = Ложь. А лучше сразу просмотреть те подписки, которые ваши г.нокодеры наваяли.
|
|||
13
ShoGUN
12.02.15
✎
17:41
|
(11) Почитай целиком. Порядок выполнения подписок на события - не определён. Об этом явно написано много где, и обычно об этом говорят на курсах.
Если ты в частном случае получил результат, который принял за истину - это твои персональные проблемы. |
|||
14
hhhh
12.02.15
✎
17:43
|
(13) не, ну на практике действительно идет подряд. Я менял их местами, действительно порядок поменялся.
|
|||
15
GROOVY
12.02.15
✎
17:43
|
Порядок выполнения подписок на событие в рамках одного события объекта не определен. Об этом и на партнерских форумах неоднократно писали сами разработчики платформы и не на партнерских форумах кучу раз.
|
|||
16
Гёдза
12.02.15
✎
17:44
|
Порядок определен, но не зафиксирован
|
|||
17
GROOVY
12.02.15
✎
17:45
|
(14) Мы как-то поменяли язык интерфейса платформы и порядок вызова поменялся.
|
|||
18
hhhh
12.02.15
✎
17:46
|
(15) Попробуйте взять типовую любую и расположить в ней подписки в произвольном порядке.
|
|||
19
ShoGUN
12.02.15
✎
17:46
|
(14) Это верно только при неизменных прочих условиях.
|
|||
20
daringer
12.02.15
✎
17:49
|
Спор о порядке, а вопрос не решен.
|
|||
21
ShoGUN
12.02.15
✎
17:49
|
(20) Вопрос решается отладчиком.
|
|||
22
ShoGUN
12.02.15
✎
17:49
|
+(21) Поскольку чудес не бывает.
|
|||
23
daringer
12.02.15
✎
17:51
|
В общем есть подписки, в которых отказ переходит из одной в другую. Затем доходит до УстановитьПрефиксИнформационнойБазыИОрганизации(Источник, СтандартнаяОбработка, Префикс) - здесь видимо теряется значение "Отказ", далее ЗаписатьВерсиюОбъекта(Источник, Отказ) - здесь отказ уже ложь!
|
|||
24
hhhh
12.02.15
✎
17:54
|
поищите поиском по конфе
Отказ = Ложь |
|||
25
Dmitrii
гуру
12.02.15
✎
17:55
|
(0) >> Делаю в подписке на события проверку перед записью документа, получаю Отказ = Истина.
Уверен, что получаешь? В отладке доходил до этой строчки кода? >> Причем если записывать уже созданный документ, то все отрабатывает нормально. Может ты проверяешь реквизиты не в объекте, а в базе данных? Тогда всё сходится - при записи существующего документа в базе данных проверяемые реквизиты есть, а при записи нового документа в базе данных еще ничего нет и ты до строки Отказ=Истина не доходишь. |
|||
26
Dmitrii
гуру
12.02.15
✎
17:58
|
У меня все мои обработчики подписок начинаются с кода
Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; |
|||
27
daringer
12.02.15
✎
17:59
|
(26) У меня тоже.
|
|||
28
daringer
12.02.15
✎
18:00
|
Я полагаю, это связано с префиксацией. Уже записанные объект проходит проверку, т.к. не вызывается обработчик "ПриУстановкеНовогоНомера"
|
|||
29
daringer
12.02.15
✎
18:33
|
Верно ли что если среди последовательности выпроняющихся подписок на события, имеющих в составе параметр отказ выполняется событие, не имеющее этого параметра, то значение параметра слетает?
|
|||
30
Гёдза
12.02.15
✎
18:35
|
номер никак не влияет на отказ.
сделай замер и увидешь где меняется |
|||
31
daringer
13.02.15
✎
08:56
|
Решил протестить. Создал документ, сделал 2 подписки на события "ПередЗаписью" и одну "ПриУстановкеНовогоНомера". В первом обработчике поставил Отказ = Истина. Значение Отказ передается в вторую подписку. Как бы все нормально. Но после того как отработало событие ПриУстановкеНовогоНомера, значение Отказ "слетает", док проводится.
|
|||
32
daringer
13.02.15
✎
09:13
|
Проверил на другой базе - там после отработки обработчика "ПередЗаписью" и подписок "ПерезЗаписью" сразу выдается ошибка проведения. У меня почему то ошибка не выдается, а продолжают отрабатывать следующие события.
|
|||
33
hhhh
13.02.15
✎
09:27
|
а после второй подписки, если нажимаешь в отладчике f11 сразу идет на ПриУстановкеНомера()
|
|||
34
daringer
13.02.15
✎
09:29
|
(33) Ну да, ПриУстановкеНомера вообще не должна отрабатываеть, т.к. перед записью был отказ = истина.
|
|||
35
daringer
13.02.15
✎
09:46
|
Походу с базой что то.
|
|||
36
hhhh
13.02.15
✎
09:47
|
тексты этих подписок можно посмотреть?
|
|||
37
daringer
13.02.15
✎
09:52
|
Там нет текста. Просто в первой подписке ПередЗаписью установил отказ = Истина. После отработки всех подписок ПередЗаписью запись должна быть прервана. но у меня она не прерывается. В ложь нигде не может устанавиваться, т.к. я создал новый документ и поставил на него 3 подписки.
|
|||
38
hhhh
13.02.15
✎
09:55
|
(37) не после всех, а на вторую подписку уже не должно входить. Посмотрите, может "отказ" по английски. Или Истина в кавычках. И почему маленькими буквами? Лучше возьмите и копипастом перенесите откуда нибудь.
|
|||
39
daringer
13.02.15
✎
10:10
|
" не после всех, а на вторую подписку уже не должно входить" - нет, на вторую подписку должно переходить, проверьте сами (в рамках одного события) Регистр не влияет. Все написано верно. В базе наверно косяк, делаю тестирование и исправление, может поможет
|
|||
40
hhhh
13.02.15
✎
10:12
|
(39) а какая логика? Почему вдруг должно помочь тестирование и исправление?
|
|||
41
daringer
13.02.15
✎
10:16
|
Логики нет. Я просто не знаю что делать в такой ситуации
|
|||
42
daringer
13.02.15
✎
10:21
|
Таких проблем вообще никогда небыло, никогда не заморачивался. Ставил перед записью отказ = истина и все всегда отрабатывало. А тут вот заметил что перестало работать, причем именно в моей базе. Тестил в новой пустой базе - все ок.
|
|||
43
WF72
13.02.15
✎
10:39
|
конфа случаем не на УФ?
|
|||
44
daringer
13.02.15
✎
10:40
|
УФ
|
|||
45
hhhh
13.02.15
✎
10:43
|
(42) но причина должна быть. Или есть еще подписки ПередЗаписью, про которые вы не знаете, или еще что-то.
|
|||
46
daringer
13.02.15
✎
10:45
|
О них невозможно не знать, я тестил на новом доке, сам создал подписки, ничего типового не использовал. Проверил поиском ссылок на объект(на всякий случай). Есть документ и 3 подписки. Все.
|
|||
47
ktvladimir
13.02.15
✎
10:46
|
судя по моей практике однотипыне подписки выполняются в порядке расположения их в конфигураторе. не знаю может и неопределен, но работает все время во всех конфигурациях в порядке следования их в конфигураторе
|
|||
48
hhhh
13.02.15
✎
10:47
|
(46) там в подписке может вообще написано быть "ДокументСсылка". То есть на все документы распространяется. Причем тут ваш поиск?
|
|||
49
stonewolf
13.02.15
✎
10:49
|
(0) Демоническое обновление + кэш?
|
|||
50
daringer
13.02.15
✎
10:50
|
(49) Походу да
|
|||
51
stonewolf
13.02.15
✎
10:53
|
(50) Видел забавный глюк, как после такого обновления пропадал код в обработках, которые никто не трогал. Конфигуратор показывает, что текста модуля нет. Чистим кэш - текст появляется, как у Амаяка Акопяна.
|
|||
52
daringer
13.02.15
✎
10:54
|
(48) Про ДокументОбъект не подумал, но врядли причина в этом. Т.к. есть 2 базы - рабочая клиент-серверная и локальная для разработки. В рабочей все норм работает, в "для разработки" глючит.
|
|||
53
daringer
13.02.15
✎
11:04
|
Щас кеш почищу, посмотрим
|
|||
54
daringer
13.02.15
✎
11:15
|
Не, чистка кеша не помогла.
|
|||
55
hhhh
13.02.15
✎
11:18
|
ну сделайте сравнение конфигураций, рабочей и тестовой
|
|||
56
daringer
13.02.15
✎
11:22
|
(55) Все короче. Я затупил конкретно. Вы все это время верно говорили. У меня была подписка на ДокументОбъект, где признак в ложь устанавливался. Спасибо!
|
|||
57
ShoGUN
13.02.15
✎
11:55
|
(56) Спорил ведь. Не верил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |