Имя: Пароль:
1C
1С v8
Подписка ПриЗаписиДокумента - как тихо сохранить документ?
,
0 1с-кин
 
19.01.12
16:59
Меняю номер в подписке, присваиваю объекту - появляется модифицированность, и выскакивает снова подтверждение на запись - и снова в подписку по рекурсии.
Как бы этого избежать?
1 mikecool
 
19.01.12
17:00
использовать ПередЗаписью
2 1с-кин
 
19.01.12
17:10
(1) ПередЗаписью еще не сформирован сам номер. А заменять нумератор - не планирую :)
3 Alex_MA
 
19.01.12
17:11
подписка ПриУстановкеНомвогоНомера
4 pumbaEO
 
19.01.12
17:12
Меняю номер в подписке -  А заменять нумератор - не планирую : две взаимоисключающие фразы.
5 1с-кин
 
19.01.12
17:17
(3) там тоже номер еще не сформирован.
(4) меняю = подправляю нули лидирующие.
6 pumbaEO
 
19.01.12
17:20
Перенумератор уже скачал... :)
ПриУстановкеНомвогоНомера, но нумератор твой.
7 1с-кин
 
19.01.12
17:21
Да мне не нужен новый нумератор, мне нули убрать нужно ))
8 1с-кин
 
19.01.12
17:22
притом если подколючать новый нумератор - в старых доках номера стираются навечно.
9 Maxus43
 
19.01.12
17:24
>>Меняю номер в подписке, присваиваю объекту - появляется модифицированность
насколько я помню - это не реально, ПриЗаписи (объекта, не формы)- меняй что хочеш без предупреждений.
"Подписка" ПриЗаписи - если это подписка на событие - ничо не выскочит, подписки на формы не работают
10 1с-кин
 
19.01.12
17:26
(9) если бы работало - я бы не спрашивал :)
а оно выскакивает после "доделки" номера на форме - подтвердить да/нет.
11 Maxus43
 
19.01.12
17:30
(10) дак я и говорю - доделывай номер у объекта самого а не на форме
12 Maxus43
 
19.01.12
17:31
ну и модифицированность = Ложь можеш попробовать после изменения номера в контексте формы
13 1с-кин
 
19.01.12
17:32
(11) так и меняю по подписке, а после выскакивает - снова отрабатывают события по форме.
(12) подписка и события на форме напрямую не связаны - а "вязать" их, так смысл в подписке?
14 1с-кин
 
19.01.12
17:33
+ (13) т.е. мы не можем управлять, что должно выполняться после подписки.
15 Maxus43
 
19.01.12
17:38
что ты понимаеш под "Подпиской"?
16 1с-кин
 
19.01.12
17:45
(15) ну не на журнал "Голые телки на бампере" же :)
Подписка на событие.
17 Maxus43
 
19.01.12
17:48
подписка на событие работает только с объектом, форме его не назначить, значит если в подписке поменять реквизит объекта - не будет никаких вопрошаний что мол изменилось, записать или нет. Если такое предупреждение - значит меняеш что-то в форме перед записью
18 igork1966
 
19.01.12
17:50
(7) Т.е. нумератор хочешь сломать кодом?  ;-o
19 mikecool
 
19.01.12
17:51
(13) как умудрился вызвать событие формы после подписки?
20 igork1966
 
19.01.12
17:52
(18) + Нормальные герои всегда идут в обход
21 1с-кин
 
19.01.12
18:04
(19) да кто его знает - почему запись номера у объекта вызывает модификацию ... чего-то.
Почему "чего-то" - потому что модифицирую объект (у которого нет свойства "модифицируемость"), а звездочка горит у формы - именно после присвоения "нового" номера.
убираю присвоение - модифицированности нет.
Вот и задался вопросом - а как по-тихому разрулить.
22 Maxus43
 
19.01.12
18:05
(21) код подписки в студию
23 1с-кин
 
19.01.12
18:09
(22) а нужно кому?
вот без этого - никаких изменений (и в номере тоже), с ним - все ок, кроме повторного вызова опять ПриЗаписи.
Подписка сама - тоже на ПриЗаписи.:

Источник.Номер = Префикс + Номер;
24 1с-кин
 
19.01.12
18:14
Соответственно, Источник - это ОбъектДокумент, когда после подписки возвращается - уже модификация горит.
Если номер не записывать в объект - не горит.
25 acsent
 
19.01.12
18:16
Префикс не так добавляется
26 1с-кин
 
19.01.12
18:29
(25) а как? они оба строковые
27 1с-кин
 
20.01.12
00:03
(25) если про брать Организация.Префикс - так здесь он плюс допы.
28 1с-кин
 
23.01.12
16:12
В общем, вот такие пироги с нумерацией:
- использовать Нумератор нельзя - "старые" номера волшебным образом стираются, и восстановить их можно только заново записав. Так что отказался сразу.
- в подписке ПриУстановкеНовогоНомераДокумента - нет как такового самого нового номера документа: он еще не создан. Для этого используем метод документа УстановитьНовыйНомер().
Это дает другой эффект - при УстановитьНовыйНомер() вызывается подписка ПриУстановкеНовогоНомераДокумента, и возникает бесконечная рекурсия. Так что эта подписка тоже отклоняется.
- подписка на "ПриЗаписиДокумента": новый номер уже сформирован автоматическим Нумератором, но присвоение нового номера вызывает модификацию формы (т.к. ПриЗаписиДокумента вызывает ПриЗаписиФормы, и новый номер дает модификацию эелментов формы), и отработку всего сопуствующего функционала - снова по "ПриУстановкеНовогоНомера, вопросы "данные изменились - что делать?" и т.д.
А как передать в подписку, что нужно сохранять "тихо" в форме - непонятно. Вроде никак.
Поэтому отклоняем.
- подписка на событие ПередЗаписью. Форма и документ еще не записаны, т.е. ПриЗАписиФормы не отрабатывает при смене номера. НосСнова нет формирования исходного номера документа. Ставим опять УстановитьНовыйНомер().
Чтобы новый номер не формировался в уже созданном документе - ставим проверку на "ЭтоНовый?"
Чтобы не стирался уже введенный номер (например, введенный вручную) ставим еще проверку и на ЗначениеЗаполнено(Номер).
Вот так заработало.
В общем, использовать подписки для модификации самих же вызвавших подписку объектов - не предусмотрено. Много проблем, а иногда и простто невозможно.
Назначение подписок - реагировать на события документов (и др. объектов) и заполнять какие-то третьи объекты данными на основе введенных в Источник.
29 ptiz
 
23.01.12
16:46
Использовать метод .Записать() в ПриЗаписи() еще не предлагали?
30 1с-кин
 
24.01.12
17:42
(29) это вы в подписке будете вызывать метод Записать() ?! ))