Подписка на событие Перед записью регистра бухгалтерии #538917


#0 by 0xFFFFFF
Сделал подписку на событие, в которой при определенных условиях ставлю Отказ = Истина. Пытаюсь провести документ, все зависает. Хотя я так понимаю, должно выйти предупреждение типа "не удалось провести документ" и все. Но 1С висит, будто чего то ждет.
#1 by 0xFFFFFF
что может быть?
#2 by Ненавижу 1С
ну как обычно, покажи код
#3 by Ненавижу 1С
и посмотри при отладке где виснет
#4 by 0xFFFFFF
Если НЕ УправлениеДопПравамиПользователей.РазрешитьПроведениеПоВспомогательномуСчету И            (текСтрока.СчетДт = ВспомогательныйСчет или текСтрока.СчетКт = ВспомогательныйСчет) Тогда
#5 by AlexNew
Дальше можно не читать. Зачем дальше идти по циклу?
#6 by AlexNew
Хотя представляю, что там в УправлениеДопПравамиПользователей.РазрешитьПроведениеПоВспомогательномуСчету.
#7 by 0xFFFFFF
После Отказ = Истина; было возврат;, убрал здесь
#8 by 0xFFFFFF
Кстати Если Клиент - вообще не заходит в цикл похоже, т.к. документ проводится без проблем. А вот если убираем (Если клиент), то зависает.
#9 by AlexNew
А чего застеснялся?
#10 by 0xFFFFFF
Вообще так правильно делать - через подписку при записи регисра бухгалтерии?
#11 by AlexNew
Точно не заходит, если НЕ Клиент.
#12 by AlexNew
Нет у регистра есть процедура ПередЗаписью.
#13 by 0xFFFFFF
ну да, перед записью... Ну так я правильно понимаю, что должно выйти предупреждение о том, что невозможно провести документ?
#14 by AlexNew
ВспомогательныйСчет = ПланыСчетов.Хозрасчетный.Вспомогательный; в цикле и т.д. Извини, даже код смотреть не хочу. Напиши нормально.
#15 by Lys
А не проще и не оптимальнее ли делать эту проверку перед записью ДОКУМЕНТА?
#16 by AlexNew
Нет.
#17 by 0xFFFFFF
причешу потом. причем тут это?
#18 by Lys
Почему?
#19 by AlexNew
Для каждого документа прописывать.
#20 by AlexNew
Ты до сих пор стажер?
#21 by 0xFFFFFF
Если НЕ РазрешитьПроведениеПоВспомогательномуСчету И            (текСтрока.СчетДт = ВспомогательныйСчет или текСтрока.СчетКт = ВспомогательныйСчет) Тогда
#22 by 0xFFFFFF
Кстати, имеет ли значение, какие галки на общем модуле стоят? Сейчас стоят -Клиент (ТК) ... -Разрешить вызов сервера.
#23 by AlexNew
Не работает? Отладчик, что говорит? Cкорее всего еще по пути что-то записать пытаешься и входишь в бесконечный цикл.
#24 by 0xFFFFFF
А может быть из за того, что на это событие уже есть подписка (из типового функционала - проверка на дату запрета редактирования)? Они типа конфликтуют?
#25 by AlexNew
Здорово, я б до такого даже не додумался. Порядок срабатывания подписок на одно и то же событие я даже придумать не могу. Пиши есче (с)
#26 by 0xFFFFFF
а какая разница, какой у них порядок срабатывания?
#27 by 0xFFFFFF
Ведь если и срабатывают, то наверное последовательно, а не параллельно, так ведь.
#28 by AlexNew
Только наверно друг за другом без конца.
#29 by Lys
А ты телепатически определил по постам автора, чтоему требуется проверка проводок ВСЕХ видов документов?
#30 by AlexNew
Да, если он это не в документе прописал.
#31 by Lys
А давай спросим, наконец, начальника трансп.. то есть, автора. Тебе эту проверку для всех видов документов делать, или только для некоторых? Если для некоторых - то известно ли в явном виде, где в этих "некоторых" документах содержится счет, который тебе нужно проверять?
#32 by 0xFFFFFF
задача чтобы нельзя было проводить по нулевому счету. За исключением одного "суперюзеря". Зачем я буду гадать в каких доках что используется и перебирать их все.
#33 by AlexNew
Какая разница, там 2 подписки на одно событие.
#34 by Lys
Тогда вопрос снимаю. Можешь считать меня "стажером" - за давностью лет забыл, как счет 00 в предопределенных по имени называется=(
#35 by AlexNew
При чем здесь счет?
#36 by Lys
2 подписки на одно и то же событие могут "зацикливать" друг друга? Насколько помню библию - они просто выполняются друг за другом в произвольном (равновероятном) порядке.
#37 by Lys
При том, что если бы я знал задачу автора - вопрос не был бы задан.
#38 by AlexNew
Спасибо, на основании разрешения в и по собственному убеждению - считаю.
#39 by Lys
Ок, у нас в стране каждый имеет право на свое мнение. Пока что=) Только ответь на , желательно аргументированно.
#40 by AlexNew
Страница? Если ты что-то меняешь в Источнике - надо проверить?
#41 by Lys
Расшифруй, у меня под вечер телепатический модуль отключается.
#42 by 0xFFFFFF
Добавил в уже существующее до этого событие - то же самое, без разницы... Где то зацикливает, а вот где...
#43 by AlexNew
Страницу из ЖК, я могу ошибаться, никогда про порядок не читал, мне бы просто в голову не пришло так сделать.
#44 by AlexNew
В отладчике что???
#45 by 0xFFFFFF
Даже сделал не перебором источника, а предварительной выгрузкой в ТЗ (хотя какая фиг разница) - не помогат...
#46 by 0xFFFFFF
Что не пришло? Зачем корежить существующий модуль, если есть возможность добавить свой?..
#47 by 0xFFFFFF
отладчик даж в цикл не заходит т.е. кода будто и нет совсем.
#48 by AlexNew
Поставь в форме, модуле и подписке точки останова.
#49 by Lys
Мне бы тоже не пришло в голову сделать две одинаковые подписки. Страницу из ЖК не скажу, знание это я почерпнул не из ЖК, а из библии aka "Проф. разработка". И ее под рукой сейчас нет, а специально для тебя качать из инета - извини, нет желания... допускаю, что я тоже могу ошибаться. Однако, в свете - похоже, дело не в порядке подписок. Автор, запусти "замер производительности" с начальной строчки действия подписки, а после зависания через пару минут "отожми" - он тебе покажет, где именно зависает. Только на файловой версии, или переведи сервер в режим отладки...
#50 by 0xFFFFFF
"Мне бы тоже не пришло в голову сделать две одинаковые подписки." А нафига менять типовую подписку? - чтоб потом геморроя хватануть при обновлении? Тем более, если бы это было критично, система бы ругалась и не позволяла создавать вторую подписку, если на такое событие уже есть...
#51 by AlexNew
Ты прав, стр. 215 от 8.0 к 8.1.
#52 by 0xFFFFFF
Короче сделал все по простому ТабДв = Источник.Выгрузить; Для Каждого Стр из ТабДв Цикл этот код работает. Добавляем Отказ:
#53 by 0xFFFFFF
без всяких там условий и проверок. Просто тупо ставим отказ в цикле - висим.
#54 by Mort
Отладка в аут уходит на какой строке скажи по-человечески. Вообще по личным наблюдениям, подписки выполняются в порядке следования в дереве конфигурации, но рекомендуется "считать" что они выполняются в случайном порядке, чтобы мины в конфе не закладывать.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С