|
v7: Запись при проведении...? | ☑ | ||
---|---|---|---|---|
0
Злопчинский
27.06.18
✎
12:15
|
Вот задумался... без теста даже не могу однозначно сказать... (тупой, старый, склеротик, ногами не пинайте)
Программный код обработки: Док.НайтиДокумент(КакойТоДокумент); Док.Реквизит1 = КакоеТоНовоеЗначение1; //было какое-то старое значение, присваиваем новое Док.Провести(); Вопрос1: при проведении документа выполняется запись документа? Вопрос2: при УСпешном проведении что будет в Реквизит1 - новое значение или старое? Вопрос3: при НЕуспешном проведении что будет в Реквизит1 - новое значение или старое? |
|||
1
1Сергей
27.06.18
✎
12:17
|
1: Да
2: Новое 3: Старое Зы Я тоже тупой, старый, склеротик. Могу ошибаться |
|||
2
Cool_Profi
27.06.18
✎
12:24
|
Злоп, ты чего????
|
|||
3
HawkEye
27.06.18
✎
12:38
|
(2) мундиаль отвлекает )))
|
|||
4
Эльниньо
27.06.18
✎
12:40
|
На всякий случай сделать:
Док.НайтиДокумент(КакойТоДокумент); Док.Реквизит1 = КакоеТоНовоеЗначение1;//было какое-то старое значение, присваиваем новое Док.Записать(); Док.Провести(); склероз запрещает или старость? |
|||
5
HawkEye
27.06.18
✎
12:43
|
(4) запрещает понимание того, что одно записать лучше двух записать с точки зрения оптимальности выполнения кода....
|
|||
6
nysyssimara
27.06.18
✎
13:05
|
а по-моему
1) нет 2) старое 3) старое Обязательно: Док.Записать(); Док.Провести(); |
|||
7
Масянька
27.06.18
✎
13:07
|
(6) Еще голосовалку потребуй...
(2) И на старуху бывает проруха (С) В данном случае, Злоп попался... |
|||
8
Эльниньо
27.06.18
✎
13:14
|
(5) "Лучше перебздеть, чем недобздеть" © народное
|
|||
9
Diman_Kr
27.06.18
✎
13:23
|
Достаточно провести()
|
|||
10
HawkEye
27.06.18
✎
13:26
|
(8) тогда предлагаю так:
Записать провести записать и контрольный Провести! ))) |
|||
11
Масянька
27.06.18
✎
13:31
|
(10) В голову...
(8) А если посмотреть вооруженным глазом... Можно увидеть 2 звездочки... (С) |
|||
12
Эльниньо
27.06.18
✎
13:50
|
Ну да. И совершенно наплювать, что там понаписано ПриЗаписи()
Программисты, мля |
|||
13
Карст
27.06.18
✎
14:15
|
а есть - при записи перепроводить ...
|
|||
14
Злопчинский
27.06.18
✎
20:51
|
(4) Запрещает нагрузка на общий журнал.
|
|||
15
Злопчинский
27.06.18
✎
20:53
|
(13) нету. Документом манипулирую программно. ПриЗаписиПерепроводить - метод интерактивной формы документа.
|
|||
16
Злопчинский
27.06.18
✎
20:53
|
(12) Пофиг что там написано призаписи. документом манмипулируется программно.
|
|||
17
Злопчинский
27.06.18
✎
20:54
|
В итоге - кто-то может сказать однозначно? ибо мнения - разделились...
|
|||
18
HawkEye
27.06.18
✎
21:13
|
(17)
да старое старое т.к. записать выполниться перед проведением... |
|||
19
HawkEye
27.06.18
✎
21:14
|
(18) блин.... наоборот конечно..
да новое новое... ))) |
|||
20
GreyK
27.06.18
✎
22:01
|
(17) При проведении документ записывается, и в модуле проведения документа можно менять его реквизиты.
|
|||
21
Сияющий в темноте
27.06.18
✎
22:22
|
То,что документ при проведении записывается,не означает того,что запишется обьект документа.При проведении модуль документа заново открывается и компиллируется,и,очень возможно,что обьект документа будет прочитан из памяти,кроме того,если документ новый,и будет вызван метод провести,то документ получит ссылку,но в случае ошибки проведения будет откат-вопрос,что будет со ссылкой и не получится ли два склеенных документа?
|
|||
22
Злопчинский
27.06.18
✎
22:49
|
(21) похожую хрень мы рассматривали с Ходжиком - здесь же относительно недавно. Возможно при Провести() записывается в базу в журнал только признак проведения и выполняется модуль проведения...
|
|||
23
Cthulhu
27.06.18
✎
22:52
|
(22): нет.
|
|||
24
Злопчинский
27.06.18
✎
22:55
|
А вот спецы говорят что будет
Да. Новое. Старое. итого уже три мнения.... |
|||
25
Cthulhu
27.06.18
✎
23:01
|
(22)
точнее - полу-нет. да, выполняется только модуль документа. нет - если в модуле документа изменяются реквизиты документа - эти изменения сохраняются. вне зависимости от успешности проведения. прим.: там еще такой прикол есть. попробуй провести несколько документов подряд с вот таким кодом модуля документа: Перем глПерМод; Процедура ОбработкаПроведения() глПерМод=глПерМод+1; Сообщить("гдПерМод = "+глПерМод,""); КонецПроцедуры глПерМод=0 // как думаешь - что в окне сообщений получишь если программно провести три таких документа подряд? |
|||
26
Cthulhu
27.06.18
✎
23:02
|
(24): т.е. (19) - не спец. Ок.
|
|||
27
Вася Теркин
28.06.18
✎
06:19
|
1.Да
2.Везде новое 3. Док.Реквизит1 = Новое Док.Ссылка.Реквизит1 = старое |
|||
28
Вася Теркин
28.06.18
✎
06:20
|
(ё17) См 27
|
|||
29
Вася Теркин
28.06.18
✎
06:22
|
(20) А если в модуль проведения поставить
Реквизит1 = Ссылка.Реквизит1 Это надежно защитит реквизит от любой записи в проведенном документе |
|||
30
Web00001
28.06.18
✎
06:34
|
Мне одному непонятно, почему ТС тупо не проверит, прежде чем ветку создавать?
|
|||
31
HawkEye
28.06.18
✎
08:50
|
(30) ты не одинок )) написать проверочный тест у меня заняло 2 минуты ))
|
|||
32
serpentt
28.06.18
✎
09:08
|
(6) Поддерживаю
если программно изменить реквизит в документе и Провести() Нового значения в реквизите не будет... обязательно использовать Записать() |
|||
33
Эльниньо
28.06.18
✎
10:04
|
Самому стало интересно.
А ежели в модуле есть строчка типа: Если Рекизит1 = ЧёТаТам Тогда |
|||
34
Сияющий Асинхраль
28.06.18
✎
10:45
|
Проверил :-) , Результаты неожиданные :-) Получается так:
1 - Да; 2 - Да; 3 - Да; Пункт 3 меня удивил, но делал такое. Документ с парой реквизитов - Контрагент (справочник.Контрагенты) и галкой "Ошибка". В модуле проведения написал: Если Ошибка = 1 Тогда СоздатьОбъект("Справочник.Труляля"); // Нет такого справочника... КонецЕсли; И сделал обработку с реквизитами "ТекДок", текКонтр и "Ошибка" с кодом: БегомПоДокам = СоздатьОбъект("Документ.Новый1"); Если БегомПоДокам.НайтиДокумент(ТекДок) = 1 Тогда БегомПоДокам.Контрагент = текКонтр; БегомПоДокам.Ошибка = Ошибка; БегомПоДокам.Провести(); КонецЕсли; Оказалось, что при генерации ошибки в документе реквизит Контрагент в любом случае записывается... |
|||
35
Cthulhu
28.06.18
✎
11:32
|
спасибо за "лакмус", кстати.
(всегда полезно узнавать - кто дает советы, разбираясь в вопросе, а кто - и не разбираясь, и не потратив предварительно пару минут чтобы проверить))) |
|||
36
serpentt
28.06.18
✎
12:36
|
(34)
второй и третий вопрос... ЧТО значит ДА. Ответ непонятен |
|||
37
Сияющий Асинхраль
28.06.18
✎
12:57
|
(36) Если непонятно, замени слово "Да" на слово "Новое". Так будет понятней...
|
|||
38
Злопчинский
28.06.18
✎
18:48
|
Читаю...
интересно.. и весело... |
|||
39
HawkEye
28.06.18
✎
20:53
|
(32) не трынди...
(36) да - значит новое запись (не вызываемая явно) выполняется до начала транзакции провести, поэтому если провести прерывается, запись уже проведена и отката не происходит... |
|||
40
vova1122
29.06.18
✎
09:46
|
а есть еще один пункт который не разбирали. Если документ проведен. И после изменения реквизита будет неуспешное проведение. что тогда будет в реквизите?
|
|||
41
Эльниньо
29.06.18
✎
12:20
|
(38) Клюшки это вообще всегда весело
Ты знал, что при удалении помеченного на удаление документа, отрабатывает ОбработкаУдаленияПроведения()? |
|||
42
Cthulhu
29.06.18
✎
15:44
|
(40): разбирали. новое значение.
(41): неоднозначность формулировки детектев - 1) при пометке на удаление (программно или в дивлоге) или при удалении программном или при удалении через "удаление помеченных"?.... |
|||
43
Эльниньо
29.06.18
✎
15:59
|
(42) При программном удалении помеченных
|
|||
44
Cthulhu
30.06.18
✎
00:14
|
(43) ухты, класс, что обработкаудаленияпроведения хитрая xpeнь с "двойным дном" - знал, но вот до одотудова не добрался. спасибо, пригодится.
и тогда такой вопрос: обнуление статуса возврата как-то влияет на процесс? |
|||
45
Cthulhu
30.06.18
✎
00:15
|
(43): так стоп. программное(!) удаление помеченных = это как?
знаю встроенное удаление помеченных. знаю программное удаление. что за зверь "программное удалени помеченных"??? |
|||
46
Cthulhu
30.06.18
✎
00:17
|
(45)+ прогаммное удаление - в смысле метод ".Удалить()", помеченное оно или нет - как-то побоку...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |