#0
by daringer
Здравствуйте. Делаю в подписке на события проверку перед записью документа, получаю Отказ = Истина. После выхода из процедуры должна быть прекращена запись документа с ошибкой, но док. все равно записывается. Причем если записывать уже созданный документ, то все отрабатывает нормально. Кто сталкивался с такой проблемой? 1С:Предприятие 8.3 (8.3.5.1098)
#2
by daringer
Подписка где отказ = истина - последняя в списке, т.е. выполняется последней. Проверил подписки "ПриЗаписи", там нигде флаг не сбрасывается. И вообще тогда и уже созданный объект тоже бы проводился
#6
by ДенисЧ
Вообще-то НЕ определён. Нигде не декларируется их последовательность. Если есть конфиденциальная информация - поделись
#8
by daringer
Нафиг тебе ссылка? Открой конфигуратор, сделай 2 подписки ПередЗаписью например и запиши документ.
#11
by daringer
Я говорю не про "ПриУстановкеНовогоНомера срабатывает ПОСЛЕ ПриЗаписи" я говорю в разрезе одного события. Если у вас много подписок на событие "ПередЗаписью" на один документ, то они будут выполняться в порядке их следования.
#12
by hhhh
ну и в чем вопрос? отладчиком фигачь пока не дойдешь до места, где Отказ = Ложь. А лучше сразу просмотреть те подписки, которые ваши г.нокодеры наваяли.
#13
by ShoGUN
Почитай целиком. Порядок выполнения подписок на события - не определён. Об этом явно написано много где, и обычно об этом говорят на курсах. Если ты в частном случае получил результат, который принял за истину - это твои персональные проблемы.
#14
by hhhh
не, ну на практике действительно идет подряд. Я менял их местами, действительно порядок поменялся.
#15
by GROOVY
Порядок выполнения подписок на событие в рамках одного события объекта не определен. Об этом и на партнерских форумах неоднократно писали сами разработчики платформы и не на партнерских форумах кучу раз.
#23
by daringer
В общем есть подписки, в которых отказ переходит из одной в другую. Затем доходит до УстановитьПрефиксИнформационнойБазыИОрганизации(Источник, СтандартнаяОбработка, Префикс) - здесь видимо теряется значение "Отказ", далее ЗаписатьВерсиюОбъекта(Источник, Отказ) - здесь отказ уже ложь!
#25
by Dmitrii
>> Делаю в подписке на события проверку перед записью документа, получаю Отказ = Истина. Уверен, что получаешь? В отладке доходил до этой строчки кода? >> Причем если записывать уже созданный документ, то все отрабатывает нормально. Может ты проверяешь реквизиты не в объекте, а в базе данных? Тогда всё сходится - при записи существующего документа в базе данных проверяемые реквизиты есть, а при записи нового документа в базе данных еще ничего нет и ты до строки Отказ=Истина не доходишь.
#26
by Dmitrii
У меня все мои обработчики подписок начинаются с кода Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда Возврат;
#28
by daringer
Я полагаю, это связано с префиксацией. Уже записанные объект проходит проверку, т.к. не вызывается обработчик "ПриУстановкеНовогоНомера"
#29
by daringer
Верно ли что если среди последовательности выпроняющихся подписок на события, имеющих в составе параметр отказ выполняется событие, не имеющее этого параметра, то значение параметра слетает?
#31
by daringer
Решил протестить. Создал документ, сделал 2 подписки на события "ПередЗаписью" и одну "ПриУстановкеНовогоНомера". В первом обработчике поставил Отказ = Истина. Значение Отказ передается в вторую подписку. Как бы все нормально. Но после того как отработало событие ПриУстановкеНовогоНомера, значение Отказ "слетает", док проводится.
#32
by daringer
Проверил на другой базе - там после отработки обработчика "ПередЗаписью" и подписок "ПерезЗаписью" сразу выдается ошибка проведения. У меня почему то ошибка не выдается, а продолжают отрабатывать следующие события.
#33
by hhhh
а после второй подписки, если нажимаешь в отладчике f11 сразу идет на ПриУстановкеНомера
#34
by daringer
Ну да, ПриУстановкеНомера вообще не должна отрабатываеть, т.к. перед записью был отказ = истина.
#37
by daringer
Там нет текста. Просто в первой подписке ПередЗаписью установил отказ = Истина. После отработки всех подписок ПередЗаписью запись должна быть прервана. но у меня она не прерывается. В ложь нигде не может устанавиваться, т.к. я создал новый документ и поставил на него 3 подписки.
#38
by hhhh
не после всех, а на вторую подписку уже не должно входить. Посмотрите, может "отказ" по английски. Или Истина в кавычках. И почему маленькими буквами? Лучше возьмите и копипастом перенесите откуда нибудь.
#39
by daringer
" не после всех, а на вторую подписку уже не должно входить" - нет, на вторую подписку должно переходить, проверьте сами (в рамках одного события) Регистр не влияет. Все написано верно. В базе наверно косяк, делаю тестирование и исправление, может поможет
#42
by daringer
Таких проблем вообще никогда небыло, никогда не заморачивался. Ставил перед записью отказ = истина и все всегда отрабатывало. А тут вот заметил что перестало работать, причем именно в моей базе. Тестил в новой пустой базе - все ок.
#45
by hhhh
но причина должна быть. Или есть еще подписки ПередЗаписью, про которые вы не знаете, или еще что-то.
#46
by daringer
О них невозможно не знать, я тестил на новом доке, сам создал подписки, ничего типового не использовал. Проверил поиском ссылок на объект(на всякий случай). Есть документ и 3 подписки. Все.
#47
by ktvladimir
судя по моей практике однотипыне подписки выполняются в порядке расположения их в конфигураторе. не знаю может и неопределен, но работает все время во всех конфигурациях в порядке следования их в конфигураторе
#48
by hhhh
там в подписке может вообще написано быть "ДокументСсылка". То есть на все документы распространяется. Причем тут ваш поиск?
#51
by stonewolf
Видел забавный глюк, как после такого обновления пропадал код в обработках, которые никто не трогал. Конфигуратор показывает, что текста модуля нет. Чистим кэш - текст появляется, как у Амаяка Акопяна.
#52
by daringer
Про ДокументОбъект не подумал, но врядли причина в этом. Т.к. есть 2 базы - рабочая клиент-серверная и локальная для разработки. В рабочей все норм работает, в "для разработки" глючит.
#56
by daringer
Все короче. Я затупил конкретно. Вы все это время верно говорили. У меня была подписка на ДокументОбъект, где признак в ложь устанавливался. Спасибо!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- 8.2.15 При проведении не срабатывает процедура модуля объекта "ПередЗаписью"
- Подписка на событие , обработка проведения, не срабатывает отказ
- Конвертация данных. Перед конвертацией объекта. Не срабатывает Отказ.
- ПередЗаписью срабатывает дважды
- v7: Как отловить отказ от сохранения и отказ от проведения документа
В этой группе 1С
- 1С Битрикс. ошибка "Argument is null or empty".
- Связь по владельцу для поля табличной части (управляемые формы)
- Быстрый отбор, вид сравнения в списке, на форме списка документов. УФ.
- АНТОР логистика - кто работал?
- Одновременное отображение двух окон в интерфейсе Такси
- Уникальный идентификатор 1С перевести в число из 11 цифр, разве возможно?
- УТ 11.1 Исчезает верхний колонтитул на четных страницах при двусторонней печати
- БП 2.0 Проблема закрытия месяца после свертки
- в регистре накопления оказались записи с регистратором объект не найден, удалить
- УТ 11 - отрицательные остатки
- выгрузка налоговой декларации УСН в .xls
- XSD схемы для файлов, получаемых через "выгрузить конфигурацию в файлы..."
- Зарплата и налоги в части "выходных дней для ухода за ребенком-инвалидом"
- Результат запроса в табличную часть реквизита формы)) 8.3
- КД удаление ПКО
- СКД. Отбор по вычисляемому полю
- Поиск в динамическом списке
- Чем открыть базу .DLC ?
- СКД отчет. Пустые ДоступныеПоляВыбора
- При подключении к базам происходит зависание.