Имя: Пароль:
1C
1С v8
Подписка на событие
,
0 qwerty072
 
26.07.11
13:30
созданы две подписки на события, первая перед записью счёта
вторая при проведении заказа

создал на основании счета на оплату покупателя документ заказ покупателя, провожу заказ покупателя срабатывает сначала подписка у счёта потом подписка заказа. мне не понятно, каким боком вообще срабатывает подписка которая у счёта стоит?!
1 GROOVY
 
26.07.11
13:31
Телепортирую: видимо в документе заказ происходит модифицирование документа счет.
2 zbv
 
26.07.11
13:31
мож стоит запись счета, при проведении/записи заказа.
3 qwerty072
 
26.07.11
13:32
(1) это понятно, т.е. это не штатный механизм, а кем то дописан
4 qwerty072
 
26.07.11
13:39
(3) прошарил весь заказ и нигде не увидел перепроведение счета
5 Живой Ископаемый
 
26.07.11
13:39
2(4) а подписки?
6 GROOVY
 
26.07.11
13:40
(4) Плохо искал. При программной записи заказа проблема есть? Или только при наличии формы?
7 qwerty072
 
26.07.11
13:48
(6) при записи есть проблема тоже, вроде что то, вот что нашёл
Процедура ПриЗаписи(Отказ)
   //+CRM
   CRM_ПриЗаписи (ЭтотОбъект, Отказ);
   //-CRM
   УдалитьРегистрациюДокументаВПоследовательностях(ЭтотОбъект);
   
   //начало
   Если ЗапОснование <> Неопределено Тогда
       ВерхнийДок=ЗапОснование.ПолучитьОбъект();
       МетаданныеДока = ВерхнийДок.Метаданные();
       Если ЕстьРеквизитДокумента("ЗаказПокупателя",МетаданныеДока) Тогда
           ВерхнийДок.ЗаказПокупателя = Ссылка;
           ВерхнийДок.Записать(РежимЗаписиДОкумента.Запись);
       КонецЕсли;    
   КонецЕсли;    
   //конец
   
КонецПроцедуры

корень зла здесь
8 qwerty072
 
26.07.11
14:17
(7) с этим разобрался
теперь вопрос вот в чём, в подписке на события документа заказ покупателя меняю ТЧ, после проведения в ТЧ измененный данные,а в движениях старые и у документа стоит звёздочка,типа документ был изменён, как понимаю, надо перепроводить будет в подписке на события заново, чтобы встали новые движения, ведь как помню подписка на события самая последняя после всех действий, т.е. после обработки проведения
9 vmv
 
26.07.11
14:20
(8) если подписчик перед записью, то ничего менять не надо, уточняйте без воды
10 qwerty072
 
26.07.11
14:21
(9) подписчик обработка проведения
11 vmv
 
26.07.11
14:22
(9) а подписчик пр проведении заказа

тогда делайте еще свой подписчик перед записью заказа, ибо модифицировать данные объекта при выполнения методов проведения - это кастрация как минимум.
12 catena
 
26.07.11
14:23
(10)А без изменения данных в подписке точно никак?
13 vmv
 
26.07.11
14:26
для передачи своих "признаков" между подписчиками используйте дополнительные свойства объекта, например

Источник.ДополнительноеСвойство.Вставить("ХаХаХаВашаПесенкаСпета", Истина);

как-то так
14 qwerty072
 
26.07.11
14:30
(11) т.е. все изменения перенести из подписчика при проведении в подписку на события при записи?!
просто думаю что не важно что там наделал при записи с документом, самое главное будет при проведении или я ошибаюсь?!

(13) интересная вещь, но не могу понять как её применить пока в моём случае
15 catena
 
26.07.11
14:32
Менять данные в документе при проведении очень и очень чревато... Тем более, те данные, которые должны отразиться в регистрах...
16 qwerty072
 
26.07.11
14:34
понял,спасибо
17 vmv
 
26.07.11
14:37
(14) не ПРИ записи, а в ПЕРЕД записью.

если занялись программирование, то задумывайтесь о фунндаментальной сути вещей и событий)

смысл модифицировать при записи или проведении, нравится насиловать систему?)
18 qwerty072
 
26.07.11
14:44
(17) описался
прекрасно понимаю разность этих двух событий
19 vmv
 
26.07.11
14:47
вообще, когда нужно изменить типовое "поведение" документа, то свои подписчики и дополнительные свойства самое оптимальное решение в смысле НЕ нарушения типовых механизмов
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.