|
Подписка на событие регистра ПередЗаписью и ПриЗаписи | ☑ | ||
---|---|---|---|---|
0
PVS_Mtl
04.05.16
✎
08:01
|
Есть независимый регистр сведений, периодический. Если делается запись через МенеджерЗаписи, то вначале происходит удаление, потом вставка. Если через набор записей, то удаления (т.е. срабатывания ПередЗаписью с нулевым количеством) нет. Когда используем менеджер, запись всегда одна, и в первое срабатывание ПередЗаписью она из таблицы удаляется. Когда используем набор, передЗаписью срабатывает один раз и старые записи в таблице есть.
Задача - универсальный код для подписки (вызванной как посредством менеджера, так и набора), использующий "старые" записи в ПриЗаписи. Где-то на форуме мне попадалось решение с использованием временной таблицы для передачи удаляемых записей. Если не трудно, покажите ссылку. |
|||
1
PVS_Mtl
04.05.16
✎
10:52
|
Для передачи удаленных записей между двумя ПередЗаписью собираюсь использовать временную таблицу, менеджер временных таблиц передавать через экспортную переменную модуля обычного приложения.
Жаль, не могу найти пример с сайта... |
|||
2
Лефмихалыч
04.05.16
✎
10:56
|
ЭтотОбъект.ДополнительныеСвойства.Вставить("СтарыйНабор", ДанныеКоторыеХочешьПередаватьМеждуСобытиямиИПодписками)
|
|||
3
Лефмихалыч
04.05.16
✎
10:57
|
получать, соответственно
ЭтотОбъект.ДополнительныеСвойства.СтарыйНабор или СтарыйНабор = Неопределено; Если не ЭтотОбъект.ДополнительныеСвойства.Свойство("СтарыйНабор", СтарыйНабор) Тогда ВызватьИсключение "Сектор 'Б' на барабане, вы - банкрот, всё у вас сгорело к четовой матери!"; |
|||
4
PVS_Mtl
04.05.16
✎
12:33
|
Спасибо за ответ! Но в подписке нет переменной ЭтотОбъект, а есть Источник. И в случае первого прогона ПередЗаписью источник один, а при втором прогоне совершенно другой. Это было в первую очередь проверено, задолго до написания вопроса. Или же я чего-то в ответе не поняла.
|
|||
5
PVS_Mtl
04.05.16
✎
12:35
|
Т.е. источник меняется, и допсвойство не видно.
|
|||
6
hhhh
04.05.16
✎
12:37
|
(5) откуда второй прогон? вы же нам только что сказали, что нет второго прогона?
|
|||
7
PVS_Mtl
04.05.16
✎
12:40
|
(6) Если делается запись через МенеджерЗаписи, то вначале происходит удаление, потом вставка. Итого два прогона ПередЗаписью. Первый раз с нулевым количеством.
Если делается запись через НаборЗаписей, прогон всегда один, второго нет. |
|||
8
hhhh
04.05.16
✎
12:43
|
(7) ну вы передаете данные через ДополнительныеСвойства внутри одного прогона. Между ПередЗаписью и ПриЗаписи. Зачем вы второй прогон сюда?
|
|||
9
PVS_Mtl
04.05.16
✎
12:49
|
(8) В том-то и дело, что я их хочу передать во второй прогон, если он есть.
Т.к. если прогонов было 2, старых данных на втором прогоне в таблице нет. А если один (всего один и второго не будет), старые данные есть. Транзакция заканчивается после второго прогона в общем случае. В приЗаписи мне нужно каким-то способом определить, какой по счету прогон - второй или первый. Если он второй, старые данные брать из временной таблицы. А то получается, что иначе работа алгоритма должна зависеть от того, при помощи какого объекта был создан набор записей. |
|||
10
Лефмихалыч
04.05.16
✎
12:59
|
(4) вот жешь беда-то необоримая...
|
|||
11
Лефмихалыч
04.05.16
✎
13:01
|
(7) это происходит пир любой записи в регистр
|
|||
12
Лефмихалыч
04.05.16
✎
13:02
|
короче, автор, ты сруйню затеял.
Зачем тебе это все? Людскими словами можешь объяснить - для чего ветка? |
|||
13
PVS_Mtl
04.05.16
✎
13:06
|
(12) Чтобы при окончании транзакции из двух прогонов в окончательном ПриЗаписи получить старые данные.
|
|||
14
PVS_Mtl
04.05.16
✎
13:08
|
Видела раньше ветку, где решалась аналогичная задача. Сейчас не могу найти. Хотелось бы посмотреть, может в ней решение удачней моего с экспортной переменной для менеджера временных таблиц.
|
|||
15
Лефмихалыч
04.05.16
✎
13:34
|
(13) не получишь. Живи с этим
|
|||
16
Лефмихалыч
04.05.16
✎
15:05
|
Даже если передЗАписью делать запрос к регистру по значениям отбора из Источника, пхать это в ДополнительныеСвойства, то при втором вызове ПередЗаписью источник будет уже другой и там ни чего в допсвойствах не будет.
Если - во временное хранилище только разве, но открытым и нерешаемым остается вопрос, как во втором вызове обработчика угадать ИД записи во временном хранилище. |
|||
17
PVS_Mtl
04.05.16
✎
16:02
|
(16) Уже недели 2 работает вариант с помещением в ТЗ, а её в параметр сеанса. Есть намерение сделать через временную таблицу (см выше), а менеджер временных таблиц передавать через экспортную переменную модуля обычного приложения. Но помню, видела тут изящный вариант, но похоже никто больше на него не обратил внимания, а я как назло не могу найти.
|
|||
18
ptiz
04.05.16
✎
16:08
|
(17) Ой, нехорошо через общую переменную - не будет работать на сервере. Либо параметр сеанса, либо где-то в БД хранить - еще один регистр "удаленных записей" или этот же с признаком "к удалению".
|
|||
19
Элит
04.05.16
✎
16:27
|
Я решала подобную задачу в Документообороте. Удалось "двойной" заход решить через проверку регистра сведений "история событий". Иначе никак не получалось.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |