Имя: Пароль:
1C
 
Подписка на событие обработка проведения
0 France
 
21.12.17
17:51
Сделал подписку на событие "ОбработкаПроведения", и по условия очищаю некоторые регистры накопления. ОтладНик показывает, что движения очистились, но после проведения все движения сохраняются.
Что делаю не так, и как очистить движения в подписке?
зы. В подумел проведения могу, но не хочу с поддержки снимать документ.
1 nordbox
 
21.12.17
17:54
А расширение?
2 nordbox
 
21.12.17
17:56
&Вместо
подсунуть свою
3 France
 
21.12.17
17:59
(1) да, лениво изучать.. к тому же, с хранилищем работаю..расширения, вроде как не то с хранилищем.. не?
4 vde69
 
модератор
21.12.17
18:09
смотря как очищаешь движения... показывай...
5 France
 
21.12.17
18:14
(4) Источник.Движения.ВыручкаИСебестоимостьПродаж.Очистить()
6 nordbox
 
21.12.17
18:15
(3)>> да, лениво изучать..  
)))
Тут просто почитать надо, ничего особо мудреного нет, а лишнего не сможешь сделать ))
https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/

мне вот лень "хвосты" подбивать,
просто лень открыть конфу и кнопки понажимать, моск отказывается, говорит: "Не делай плохого, не нажимай кнопки, не приноси беды в тихую жизнь, не обижай безвинных" )
7 Мимохожий Однако
 
21.12.17
18:16
(3) Там изучать на полчаса.
8 France
 
21.12.17
18:18
Да, изучал я, изучал)) и читал ссылку.. но, ни разу не применял.. с хранилищем расширение дружит?
9 Вафель
 
21.12.17
18:25
Источник.Движения.ВыручкаИСебестоимостьПродаж.Записывать.Истина;
10 nordbox
 
21.12.17
18:26
(8) Раньше расширение не работало с хранилищем, сейчас не знаю, надобности нет, поройся в инете, наверняка что то есть
11 France
 
21.12.17
18:32
(9) не.. пробовал уже.. пишит, что не установлен менеджер временных таблиц..
12 Вафель
 
21.12.17
18:41
(11) так это уже совсем другая ошибка
13 France
 
21.12.17
18:48
(12) да, там в типовом, в регистре записи какой то тупой запрос в при записи. Запрос.Выполнить() - но результаты вообще не анализируются - тупо вываливаеся 1С..
14 France
 
21.12.17
19:18
только через расширение, используя модуль проведения в режиме Вместо удалось убедить не делать лишних движений))
15 nordbox
 
21.12.17
19:31
(14)>>далось убедить не делать лишних движений))
Кого убедить?
16 Byasha
 
21.12.17
20:51
(0) Из подписки на проведение этот регистр не очистить.
Делай подписку на событие "Перед записью" набора записей регистра. В подписке получай регистратора и если это тот что тебе нужен делай очистку набора записей.
В ЕРП, КА и УТ в обработчике события "Перед записю" набора записей выполняются доп. движения и проверки.
Если в своей обработке вызывать метод "Записать", то срабатывает обработчик события. В самом обработчике активно используется менеджер ВТ, который после обработки очищается. Соответственно твой "второй" обработчик валится с ошибкой. И такая фигня почти по всем регистрам.
Так что единственный вариант - цеплятся через обработчик "перед записью" набора записей регистра.
17 vde69
 
модератор
21.12.17
20:55
Источник.Движения.ВыручкаИСебестоимостьПродаж.Записывать=Истина;
18 Byasha
 
21.12.17
20:58
(17) Не прокатит :-)
19 vde69
 
21.12.17
21:26
(16) почему? я делал http://catalog.mista.ru/public/236363/
20 Byasha
 
21.12.17
21:48
(19) Потому что Записывать = ИСТИНА устанавливается в типовой процедуре обработки проведения. И отрабатывает. В момент вызова глобального обработчика события весь набор движений уже записан. Но транзакция не завершена. В модуле набора записей регистра есть обработчик события "Перед записью". В этом обработчике события выполняются проверки. При выполнении проверки используется запрос с менеджером ВТ, который уничтожается после завершения проверки или во время проверки. Когда выполняется вызов "второй" обработки проведения опять отрабатывает обработчик события "Перед записью" набора записей. НО менеджер ВТ, который используется в процедуре - уже убит. И соответственно валится с ошибкой.
Если не влезать в код самого модуля проведения или процедур инициализации данных для проведения, то через глобальный обработчик события обработки проведения. ничего не получиться. Потому что нужно повторно выполнить запись набора записей. Что приведет к ошибке. В ЕРП, УТ и КА - это почти во всех регистрах накопления. И обойти это можно только через подписку на событие "Перед записью" или "При записи" самого набора записей регистра. Ну или модифицировать код процедур вызываемых в обработке проведения.
21 Byasha
 
21.12.17
21:53
(19) Ты приводишь пример для БП. Там такого хардкора как в ЕРП, КА 2 и УТ 11 нет. И для УПП, КА 1 и УТ 10 - это отработает на УРА. Но новых - только через обработку события перед записью набора записей регистра. Только хардкор.
22 France
 
21.12.17
23:22
(15) 1c
23 France
 
21.12.17
23:23
(16) да.. у меня и валился на ВТ.. потому, просто забил на все, и через расширение сделал
24 France
 
21.12.17
23:25
на ВТ валился именн изза менеджера временных таблиц.. а искать где и как их повторно инициализировать - времени жалко.. тем более, что через изменение типовой я за 30 минут все сделал, а за "не буду меня\снимать с поддержки\" протрахался 3 часа...
25 France
 
21.12.17
23:26
(17) не прокатит)) читал 18))..
26 France
 
21.12.17
23:28
(21) теперь колись - ты эту хрень писал?)))
27 tesseract
 
21.12.17
23:29
(20) Крайне сумбурно, но я без мата еще бы хуже написал.

(21) Нефиг дедлоки плодить. Делайте все запросы в менеджере, а запись в соответствующих модулях. Все правильно сделали наконец.
28 France
 
21.12.17
23:36
(27) ничего там не сумбурно, если протрахаться 3 часа на всю эту хрень.. все, что он там пишет - я сходу понял.. если бы он это написал сразу после моего сообщения, то я бы сэкономил три часа работы
29 tesseract
 
21.12.17
23:43
(28) Три? Я как-то 2 недели искал дедлок от франча в подписках, с тех пор стираю их как только увижу. ИбоНех.
30 France
 
21.12.17
23:47
(29) ну, я не франч.. и дедлоки у меня не найдешь.. и три часа для меня нормально - я не прог...
31 DmitriyDI
 
22.12.17
00:32
(17) я так делаю, все работает
(20) делал в ЕРП, просто надо еще добавить такой код:
Источник.Движения.ВыручкаИСебестоимостьПродаж.ДополнительныеСвойства.ДляПроведения.СтруктураВременныеТаблицы.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц

и вуаля проходит все проверки)
32 DmitriyDI
 
22.12.17
00:34
(31) ну в нужном мне случает с др. регистром все работает (а так смотреть перед записью добавить что не хватает и работает без проблем, в общие модули лезть не надо)
33 France
 
22.12.17
00:36
(31) я с допсвойствами дошел до попытки там таблицы очистить.. а методы создания ВР уже не стал искать, и через расширения зафигачил... но, теперь уже буду думать, оставить через расширения, или твой метод взять)) мне твой больше нравиться))
34 DmitriyDI
 
22.12.17
00:38
(33) да ЕРП жесть)) особенно типа отложенные обработчики проведения по регл. учету и т.д., как туда лезть сейчас буду смотреть)
35 France
 
22.12.17
00:41
(34) я в УТ 11)).. ЕРП - жесть, конечно, но мне она нравиться.. с отложенным проведением, конечно, тоже своя история))..  трудно отвыкать от привычки сразу видеть проводки.. особенно, когда идет внедрение..
36 France
 
22.12.17
00:41
уже два месяца с ЕРП не работаю - скучно)) не с чем сношать время))
37 France
 
22.12.17
01:11
(31) ептить)) работает же жжж))).. тут мне обещали чизбургер - уступаю его тебе))
респект и уважуха тебе))
38 France
 
22.12.17
01:12
таким способом можно изгаляться над базой и документами так, что ой мама не горюй, если не зная регистров начать их давить))
39 France
 
22.12.17
01:13
я то таким способом восстановил полезную фичу УПП, которая называлась что то типа "проводить по упр.учету"))
40 France
 
22.12.17
01:21
(31) упс.. ты так отложенное проведение по регучету обошел что ли?.. если да, то еще один чизбургер, но уже с меня))
41 tesseract
 
22.12.17
04:02
(40) Отложенное проведение это просто параметр. Саму функцию проведения давно вынули из "ОбработкаПроведения", как давно делали люди по заветам Гилева. Чтобы лишний раз не трогать перерасчет авансов и пр.
42 DmitriyDI
 
22.12.17
15:02
(40) отложенное проведение по регл учету обошел но по другому, подписку на событие при записи регистра хозрасчетный.
43 Byasha
 
22.12.17
15:25
(31) Да, это то же вариант. Я когда всю эту кухню разбирал с регистром партий разбирался. И там у меня подстановки пустого менеджера ВТ не прошел. Что-то потом не так пошло при закрытии месяца. Поэтому для себя решил использовать подписку при записи или перед записью набора записей. Да это не есть хорошо с точки зрения производительности, но во всяком случае отрабатывает уже по факту того как 1с сделает все свои расчеты, а я, если нужно чуток их подправлю :-)