|
Подскажите как отловить событие | ☑ | ||
---|---|---|---|---|
0
mzelensky
02.10.13
✎
08:22
|
Доброго всем!
Имеется докумен, который делает определенные движения по регистрам. Задача - проанализировать данные одного из регистров, сразу после того, как документ сделает по нему движения. Т.е. проблема в том, что в 1С нет события "После проведения" (ну или нечто подобное). Как-то задавался уже такой проблемой, нормального решения тогда не нашлось и пришлось делать немного через одно место. Возможные варианты: 1) В процедуре проведения сделать ручную запись в регистр. Делать это не хочется, т.к. из-за этого одни и теже данные будут записываться в регистр дважды (при ручной записи и автоматически) 2) В алгоритме расчета дополнить данные регистра данными, которые должен внести документ. Сделать можно, но это усложняет процесс расчета. Вот собственно и все, что приходит в голову. Есть еще какие-нибудь варианты? |
|||
1
shuhard
02.10.13
✎
08:29
|
(0) для Рг событие После проведения = После записи
|
|||
2
Defender aka LINN
02.10.13
✎
08:30
|
(0) "одни и теже данные будут записываться в регистр дважды" - а можно узнать, на основании чего сделан этот глубокомысленный выс... вывод?
|
|||
3
Philix
02.10.13
✎
08:33
|
(0) В модуль набора записей регистра можно поставить точку остановки на процедуру ПередЗаписью() или ПриЗаписи().
Только учти - если стоит автоматическое удаление движений - в эти процедуры будет два визита: 1. Удалить данные; 2. Добавить данные. И далее в отладчике смотри ЭтотОбъект (набор записей регистра) |
|||
4
mzelensky
02.10.13
✎
08:35
|
(2) На основании того, что первый раз данные запишутся в ручную, а второй раз автоматически после окончания процедуры "Проведение". Я не сказал, что данные задвоятся. Просто они будут записаны дважды (одни поверх других)
|
|||
5
mzelensky
02.10.13
✎
08:36
|
(3) Таким образом я получу данные, которые "планируется" внести в регистр, но по факту их там еще не будет. А мне нужно событие, когда "они уже там". Чтобы отработать запрос к таблице остатков этого регистра.
|
|||
6
mzelensky
02.10.13
✎
08:37
|
(1) Что-то я не вижу у регистра накопления событие "После записи".
|
|||
7
AllJoke
02.10.13
✎
08:39
|
(4) ,htl
|
|||
8
AllJoke
02.10.13
✎
08:41
|
в конце обработкипроведения поставить то что тебе нужно, не?
|
|||
9
kosts
02.10.13
✎
08:41
|
В середине процедуры проведения можно насильно выполнить запись. Попробовать сделать запрос. Я если что не в курсе увидит ли запрос новые записи, т.к. транзакция еще не зафиксирована...
|
|||
10
kosts
02.10.13
✎
08:41
|
(9) + Но проверить можно.
|
|||
11
mzelensky
02.10.13
✎
08:48
|
(8) (9) (10) читайте (4)
|
|||
12
kosts
02.10.13
✎
08:48
|
||||
13
Defender aka LINN
02.10.13
✎
08:50
|
(4) Ну вот на основании чего ты говоришь, что "а второй раз автоматически после окончания процедуры "Проведение""? На каком холме ты стоял, когда с неба ударила молния и Глас Нуралиев раскрыт лебе глаза?
|
|||
15
mzelensky
02.10.13
✎
08:54
|
(13) Теперь по вопросу
Ну вот на основании чего ты говоришь, что "а второй раз автоматически после окончания процедуры "Проведение""? А почему собственно НЕТ? При окончании процедуры проведения автоматически происходит запись движений. Извини, сейчас нет под рукой книги, чтобы процетировать данную мысль. |
|||
17
Defender aka LINN
02.10.13
✎
08:55
|
(15) Ну а ты потрудись ее найти. Правда, прочитанное может тебя шокировать.
Ну или хотя бы СП открой:
|
|||
18
AlexITGround
02.10.13
✎
08:56
|
(16) он не несет бред, так оно и есть, в процедуре не нужно принудительно записывать данные, они автоматически запишутся в регистр
|
|||
19
Funeral_Worm
02.10.13
✎
08:56
|
(0) Посмотреть в сторону подписок на события
|
|||
20
mzelensky
02.10.13
✎
08:57
|
(16) на сколько я помню - эта фишка появилась в 8.2
Меня интересует 8.1 |
|||
21
mzelensky
02.10.13
✎
08:58
|
(19) нет такой подписки.
|
|||
22
Funeral_Worm
02.10.13
✎
09:00
|
(21) А чем мешает подписка на событие ОбработкаПроведения?
|
|||
23
mzelensky
02.10.13
✎
09:06
|
(22) тем, что она вызывается ДО окончания транзакции. А следовательно данных в регистре еще нет.
По крайней мере у меня так получалось. Проверь. |
|||
24
mzelensky
02.10.13
✎
09:07
|
(17) ну и куда ты пропал, о великий пророк всемогущего "Нуралиева"? Больше мыслей не будет?
|
|||
25
mzelensky
02.10.13
✎
09:10
|
(17) и кстати, даже если пользоваться данной фишкой, то нужно делать:
Движения.ОстаткиТоваров.Записывать = Истина; ... наполняем набор записей ... Движения.Записать(); А потом выставялем Движения.ОстаткиТоваров.Записывать = ЛОЖЬ; так получается??? |
|||
26
Defender aka LINN
02.10.13
✎
09:30
|
(25) Ну, можешь сначала "Ложь" выставить. Можешь вообще не устанавливать, оно какбе по умолчанию.
(20) Такие вещи обычно уточняют, актуальная версия нынче 8.2, если уже не 8.3 |
|||
27
mzelensky
02.10.13
✎
09:32
|
(26) если сразу в "ложь", то "Движения.Записать();" тоже не внесет данные, ибо:
"Ложь - не происходит записи набора в информационную базу при вызове Записать коллекции движений документа" |
|||
28
mzelensky
02.10.13
✎
09:32
|
(26) Ок, тут согласен - тупонул.
Ищется вариант для платформы 8.1 еще идеи будут? |
|||
29
Defender aka LINN
02.10.13
✎
09:33
|
(27) Не вижу никаких причин, почему бы благородному дону не записывать конкретное движение
|
|||
30
mzelensky
02.10.13
✎
09:38
|
(29) т.е все-таки забить на эту "двойную" запись и все?
|
|||
34
Sammo
модератор
02.10.13
✎
09:47
|
Правило 2. Флейм в тематике
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |