![]() |
![]() |
![]() |
|
Параметры обработчика подписки на события | ☑ | ||
---|---|---|---|---|
0
selenat
02.08.10
✎
13:06
|
Чего-то на ИТСе как-то скудно инфы по механизму подписки на события. Кто скажет с ходу, почему в событии ПриЗаписи нет параметров РежимЗаписи и РежимПроведения?
|
|||
1
Maxus43
02.08.10
✎
13:08
|
(0) в доп свойства пиши что хочеш, их видно из подписчиков
|
|||
2
butterbean
02.08.10
✎
13:08
|
потому что они ПередЗаписью
|
|||
3
selenat
02.08.10
✎
13:10
|
(1) как это делается?
|
|||
4
selenat
02.08.10
✎
13:13
|
(2) в перед записью - эт понятно. Мне в ПриЗаписи надо...
|
|||
5
butterbean
02.08.10
✎
13:15
|
(4) их там просто нет
|
|||
6
Maxus43
02.08.10
✎
13:15
|
(3) в УПП например везде напихано:
//Сделаем переменные доступными из подписок на события ДополнительныеСвойства.Вставить("СтруктураШапкиДокумента", СтруктураШапкиДокумента); |
|||
7
selenat
02.08.10
✎
13:17
|
(6) а в каком месте напихано?
|
|||
8
selenat
02.08.10
✎
13:19
|
Прочитал про ДополнительныеСвойства в СП. Я правильно понимаю, что можно создать подписку на событие ПередЗаписью, там пихнуть в ДополнительныеСвойства эти режимы и использовать в ПриЗаписи?
|
|||
9
Maxus43
02.08.10
✎
13:21
|
(7) в УПП напихано в основном в обработке проведения. Но юзать можно не только там
(8) ну это в отладчике погляди, точно не скажу. |
|||
10
Maxus43
02.08.10
✎
13:21
|
(8) в самом документе это пихается, доп свойства. не в подписках. Подписки их видят просто
|
|||
11
selenat
02.08.10
✎
13:23
|
(9) в обработке проведения? Любопытно. Событие ПриЗаписи отрабатывается до обработки проведения. С чего бы в обработке проведения туда пихать что-то? О-о
|
|||
12
selenat
02.08.10
✎
13:24
|
(10) не хотелось бы курочить сам документ. Щас попробую через обработчик перед записью....
|
|||
13
Maxus43
02.08.10
✎
13:24
|
(11) там используется для других подписок, не для подписки "ПриЗаписи". Я про суть говорю, что эти доп.свойства - видны из подписок
|
|||
14
selenat
02.08.10
✎
13:28
|
(13) понял, спасибо.
|
|||
15
selenat
02.08.10
✎
13:37
|
Получилось передать из ПередЗаписью через дополнительные свойства в ПриЗаписи. Максус, спасибо!
|
|||
16
Maxus43
02.08.10
✎
13:38
|
(15) да незачто)
|
|||
17
selenat
03.08.10
✎
17:50
|
Еще вопрос по подписке на события. Хочу для набора записи регистра накопления отслеживать вызван ли он из нужного мне места. Для этого в этом месте пишу:
СтруктураДополнительныхСвойств = новый Структура; СтруктураДополнительныхСвойств.Вставить("МойВызов",Истина); НаборЗаписей.ДополнительныеСвойства.Вставить("СтруктураДополнительныхСвойств",СтруктураДополнительныхСвойств); В подписке на события Перед записью вставляю код: СтруктураДополнительныхСвойств = Новый Структура; ЕстьСтруктураДополнительныхСвойств = Источник.ДополнительныеСвойства.Свойство("СтруктураДополнительныхСвойств",СтруктураДополнительныхСвойств); //ЕстьМойВызов = Источник.ДополнительныеСвойства.СтруктураДополнительныхСвойств.Свойство("МойВызов",МойВызов); Если НЕ ЕстьСтруктураДополнительныхСвойств Тогда Отказ = Истина; ИначеЕсли (НЕ СтруктураДополнительныхСвойств.МойВызов) Тогда Отказ = Истина; КонецЕсли; СтруктураДополнительныхСвойств.Удалить("МойВызов"); Источник.ДополнительныеСвойства.Вставить("СтруктураДополнительныхСвойств",СтруктураДополнительныхСвойств); Но откуда бы не вызывалась запись набора, МойВызов всегда есть и равен Истина. Почему он не прибивается после вызова из моего места? |
|||
18
selenat
04.08.10
✎
08:54
|
Вопрос (17) актуален
|
|||
19
selenat
04.08.10
✎
09:48
|
Проверил в отладчике, что после записи набора, вызываемой из нужных мне мест, МойВызов очищается из структуры. Но почему-то при входе в ПередЗаписью из другого места программы, где я его не передаю, он все равно есть и равен истина. Как так может быть?
|
|||
20
Maxus43
04.08.10
✎
10:12
|
СтруктураДополнительныхСвойств = новый Структура; - это лишнее помоему вобще. Она уже есть эта структура, и не пустая помоему.
(17) Первый код куда вставлен? в документ? Эта структура принадлежит именно документу. В подписке на событие удалять чтото из структуры - смысла нет. В рамках Подписки - удалится, в рамках документа - останется. Подписка не возвращает это свойство назад в документ. Имхо... надо копать |
|||
21
selenat
04.08.10
✎
10:14
|
(20) весь код в общем модуле. Инициируется подписками на события документа...
|
|||
22
selenat
04.08.10
✎
10:16
|
(20) СтруктураДополнительныхСвойств - это просто переменная, которую нужно определить как структуру. Это не предопределенный в платформе объект...
|
|||
23
Andry888
04.08.10
✎
10:17
|
(17) "Для этого в этом месте пишу:" точное место где это воткнуто можно озвучить?
|
|||
24
Maxus43
04.08.10
✎
10:18
|
(22) путаеш только)
Если первый код пихает всегда истину, то почему не должно быть истиной... в каких местах это всё выполняется непонятно |
|||
25
selenat
04.08.10
✎
10:23
|
(23) Код
СтруктураДополнительныхСвойств = новый Структура; СтруктураДополнительныхСвойств.Вставить("МойВызов",Истина); НаборЗаписей.ДополнительныеСвойства.Вставить("СтруктураДополнительныхСвойств",СтруктураДополнительныхСвойств); написан в процедуре общего модуля, которая выполняется как обработчик подписки на событие ПриЗаписи некоторых документов. В этой процедуре я программно записываю движения в определенный регистр. Цель этих действий в том, чтобы не позволить прибить мои движения в обработкеПроведения. Чтобы процедура, которая прибивает все движения документа, мои движения оставила в покое... |
|||
26
selenat
04.08.10
✎
10:26
|
(24) Потому что когда выполняется запись набора, я пытаюсь прибить из дополнительных свойств набора эту штуку. Т.е. работает как флаг. Перед нужным мне вызовом истина, когда отработали - ложь.
|
|||
27
selenat
04.08.10
✎
10:26
|
+26 точнее не ложь, а вообще удаляю. Но ложь тоже пробовал присваивать - та же фигня...
|
|||
28
Maxus43
04.08.10
✎
10:37
|
"процедура, которая прибивает все движения документа" - это какая?
|
|||
29
selenat
04.08.10
✎
10:39
|
(28)
ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ); |
|||
30
selenat
04.08.10
✎
10:40
|
+29 в начале обработки проведения любого документа. Мне нужно, чтоб мои движения она не трогала. При этом хочу обойтись без вставок в типовой код, одними подписками на события...
|
|||
31
Maxus43
04.08.10
✎
10:43
|
(29) Причем тут подписки? там кода то в док вставить... копейки. помоему не теми средствами задачку решаем...
|
|||
32
mikecool
04.08.10
✎
10:44
|
Процедура ПередЗаписью()
ДополнительныеСвойства.Вставить("Модифицированность", Модифицированность); ДополнительныеСвойства.Вставить("РежимЗаписи", РежимЗаписи); КонецПроцедуры в обрабботчике подписки Источник.ДополнительныеСвойства.Свойство("Модифицированность", Модифицированность); Если Модифицированность = Неопределено Тогда Модифицированность = Ложь; КонецЕсли; Источник.ДополнительныеСвойства.Свойство("РежимЗаписи", РежимЗаписи); Источник.ДополнительныеСвойства.Свойство("ОбработкаУдаленияПроведения", ОбработкаУдаленияПроведения); Если ОбработкаУдаленияПроведения = Неопределено Тогда ОбработкаУдаленияПроведения = Ложь; КонецЕсли; |
|||
33
selenat
04.08.10
✎
10:48
|
(31) это без вопросов. Но хотелось бы обойтись без этого.
(32) я тебе даже больше скажу. Это работает не только из процедуры ПередЗаписью, но и из подписки на событие ПередЗаписью. А вот проблему (17) победить не удается... |
|||
34
mikecool
04.08.10
✎
10:51
|
(33) в 17 - начало кода из модуля набора записей?
|
|||
35
selenat
04.08.10
✎
10:53
|
(34) первая часть кода в общем модуле, откуда вызывается запись набора. Вторая часть кода тоже в общем модуле, вызывается по подписке на событие ПередЗаписью моего набора записей регистра накопления...
|
|||
36
selenat
04.08.10
✎
11:11
|
Не, я конечно могу вставить несколько строчек в
ОбщегоНазначения.УдалитьДвиженияРегистратора(ЭтотОбъект, Отказ); Но все-таки хочется отработать чисто, чтобы все мои доработки сидели в отдельном модуле, а код типовой оставался нетронутым... |
|||
37
selenat
04.08.10
✎
11:35
|
(32) кстати да. Я перемудрил слегка...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |