|
v7: Процедура ПриЗакрытии() документа | ☑ | ||
---|---|---|---|---|
0
Mafiozaa
18.02.22
✎
05:06
|
Приветствую, возник вопрос, когда я закрываю документ, выскакивает штатное окно, сохранить (да/нет/отмена)
Создаю процедуру ПриЗакрытии() прописываю туда условия что мне нужны, условия такие, если нет пустых и дублей, то закрыть сохранить, иначе не дать возможность закрыть документ глушу СтатусомВозврата(0). Вопрос в том, что сперва отрабатывает штатная обработка, а моя лишь по нажатию на Да/Нет/Отмена тоесть если юзер нажмет да, сама форма не закроется, но док сохранится |
|||
1
vladmenleo
18.02.22
✎
05:28
|
(0) Штатно на кнопке ОК висят команды
#Записать Провести? Закрыть вот они и отрабатывают |
|||
2
Mafiozaa
18.02.22
✎
05:31
|
(1) Допустим, а как мне провалится в свойства свернуть развернуть и крестика чтоб посмотреть что на них действует, если в модуле ничего про это не прописано
|
|||
3
vladmenleo
18.02.22
✎
05:33
|
(2) ? что значит в свойства "свернуть развернуть и крестика"
|
|||
4
Mafiozaa
18.02.22
✎
05:35
|
(3) Я закрываю документ, не по какой то кнопке аля провести и тд на форме, а закрываю через штатный крестик на форме, по нажатию на крестик вылетает окно сохранить да/нет/отмена
|
|||
5
Mafiozaa
18.02.22
✎
05:35
|
(3) Это какая то предопределенная функция
|
|||
6
vladmenleo
18.02.22
✎
05:35
|
(2) Жмешь "крестик" - это закрытие формы, соответственно должна отработать процедура кнопки по умолчанию, а что там у тебя назначено тебе видней
|
|||
7
Mafiozaa
18.02.22
✎
05:37
|
(6) Воот, но процедуры в модуле документа нет, быть может он в глобальном модуле, но там не хотелось бы что то править
|
|||
8
vladmenleo
18.02.22
✎
05:39
|
(7) Процедура прямо в кнопке прописана
|
|||
9
vladmenleo
18.02.22
✎
05:40
|
(7) В свойствах кнопки вкладка дополнительно
|
|||
10
Mafiozaa
18.02.22
✎
05:42
|
(9) Я понимаю, как мне войти в свойства кнопки если это крестик, а не обычная кнопка на форме, когда я двойной щелчок делаю по крестику, вылетает свойства формы
|
|||
11
vladmenleo
18.02.22
✎
05:43
|
(10) Да забудь ты про крестик, нафиг он тебе сдался. Читай (6) до посинения
|
|||
12
vladmenleo
18.02.22
✎
05:44
|
(10) Вот из стандартной тис из процедуры приоткрытии
// кнопка по умолчанию Если (Форма.ТолькоПросмотр() = 1) ИЛИ ((ДатаДок < Макс(РабочаяДата(), ПолучитьДатуТА()) ) И (Выбран() = 1)) Тогда Форма.КнопкаПоУмолчанию("кнЗакрыть"); Иначе Форма.КнопкаПоУмолчанию("кнОК"); КонецЕсли; |
|||
13
Mafiozaa
18.02.22
✎
05:47
|
(12) Это ты где смотришь, в глобальном модуле? не в модуле документа же
|
|||
14
vladmenleo
18.02.22
✎
05:49
|
(13) в форме документа
|
|||
15
Kigo_Kigo
18.02.22
✎
09:12
|
По крестику - утедя будет попрос - сохранить, да нет отмена
если за то ты попадаешь должен попадать в процедуру ПриЗаписи(), Нет - тебя не должно волновать что там, док не запиишится и не сохранится, отмена- обратно в форму |
|||
16
Kigo_Kigo
18.02.22
✎
09:13
|
И вообще глупо анализировать данные в приЗакрытии, толку от этого ноль, надо ПриЗаписи()
|
|||
17
Guk
18.02.22
✎
09:52
|
(16) В некоторых случаях, очень даже не глупо. в 77 нет процедуры ПослеЗаписи, а иногда надо проанализировать что-то с записанным текущим документом. В новом документе в ПриЗаписи ТекущийДокумент() будет пусто...
|
|||
18
Злопчинский
18.02.22
✎
10:41
|
(7) "соответственно должна отработать процедура кнопки по умолчанию," нихрена подобного
по крестику отрабатывает не процедура кнопки по умолчанию, а ПриЗакрытии() |
|||
19
vladmenleo
18.02.22
✎
10:55
|
(18) Сначала срабатывает ПриЗаписи(), потом ОбработкаПроведения() и только потом ПриЗакрытии()
|
|||
20
Злопчинский
18.02.22
✎
11:06
|
||||
21
Ёпрст
18.02.22
✎
11:20
|
(19) только, ели была модифицированна форма
|
|||
22
Ёпрст
18.02.22
✎
11:20
|
да и то, там можно играться ПриЗаписиАепепроводить(флаг)
|
|||
23
Ёпрст
18.02.22
✎
11:21
|
ну и пр кнопку-по умолчанию, тут да, бред, не Пит
|
|||
24
Злопчинский
18.02.22
✎
11:24
|
(23) я даже кино снял про Бреда Непита в (20), не поленился..
Жду Оскара: - за сценарий - за лучшую озвучку - за лучшую роль второго плана |
|||
25
vladmenleo
18.02.22
✎
11:40
|
(20) Разговор про документ, поэтому кина не та :) я тоже проверил на документе и выводит именно в той последовательности что я показал
|
|||
26
vladmenleo
18.02.22
✎
11:42
|
(23) может про кнопку и ступил, согласен. а если не модифицировали ничего то тогда конечно только призакрытии, но зачем это вообще отрабатывать немного не понятно
|
|||
27
Злопчинский
18.02.22
✎
13:00
|
возьму на себя смелость утверждать что в документе ровно та же самая как в кино.
иначе была бы полная хрень |
|||
28
Злопчинский
18.02.22
✎
13:01
|
да даже если и модифицировали.
если модифицировали - то перед закрытием отработает ПриЗаписи но никакого отношения к кнопке по умолчанию не имеет |
|||
29
Злопчинский
18.02.22
✎
13:40
|
вторая серия.
форма документа ведет точно также как форма обработки. при закрытии окна никакие процедуры навешанные на "кнопку по умолчанию" не отрабатывают https://www.screencast.com/t/V6gYHzefz - демо . не вводите Мафиозу в заблуждение. |
|||
30
vladmenleo
18.02.22
✎
15:42
|
(29) Еще раз, для некоторых. в (26) я уже признал свою неправоту по поводу кнопки по умолчанию. Прочитай плиз внимательно (19) и закончим эту тупую дискуссию.
|
|||
31
Злопчинский
18.02.22
✎
16:09
|
919) не тупи. ОбработкаПроведения() срабатывает если документ проведен, да и то - при явном указании в коде ПриЗаписиПерепроводить()
|
|||
32
Злопчинский
18.02.22
✎
16:11
|
И при чем тут вообще обработка проведения если речь в ошибочном утверждении шла о срабатывании кнопки "по умолчанию" при закрытии крестиком...
документ вообще может не иметь режима проведения. . короче - все следим за своими словами пердельно бздительно! ;-) |
|||
33
серый КТУЛХУ
18.02.22
✎
19:36
|
vladmenleo перестаньте пороть чушь и плясать с кнопками по умолчанию как тот дурак с писаной торбой.
кнопки по умолчанию и прочиет процедуры при закрытии по "крестику"/[Esc] - никаким боком. читайте (18) по слогам до просветления и не сыпьте эпидермис в ленту. |
|||
34
Злопчинский
18.02.22
✎
19:44
|
(33) он уже понял всю глубину своего падения и сознался что ступил, но попытался увильнуть, приплетя обработкуПроведения зачем-то...
|
|||
35
Злопчинский
18.02.22
✎
19:44
|
хотя ладно, чего это мы злопствуем...
бывает ступил человек... |
|||
36
Mafiozaa
21.02.22
✎
08:50
|
(29) Посмотрел, логика ясна, но вот беда, нажимаю на крестик форма не закрывается, так как условие по закрытию не выполняется, но док в журнале записывается, вот пример наглядно
Процедура ПриЗаписи() Сохранить = 1; ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(КодМаркировки) = 1 Тогда Сообщить("В строке №: " + НомерСтроки + " " + "не внесен код маркировки. Документ не сохранен!!!"); Сохранить = 0; КонецЕсли; КонецЦикла; Если Сохранить = 1 Тогда ЗначениеВФайл(КаталогИБ()+"SaveMark\"+ДокОснование.НомерДок+ДокОснование.ДатаДок+"Mark.dat",ИтогТЗ); Записать(); КонецЕсли; КонецПроцедуры Процедура ПриЗакрытии() СтатусВозврата(0); КонецПроцедуры Логика какая, если есть пустые строки в документе док не сохраняем, и форму не закрываем пока не исправится, в итоге что вижу я, в доке пустые строки есть, форма не закрывается, но док в журнале записывается. А если пустых строк нет, то оно как бы правильно и отрабатывает, так вот почему при пустой строке, при форме которая не закрывается через крестик, происходит запись дока в журнал |
|||
37
Mafiozaa
21.02.22
✎
09:08
|
+ (36) При закрытии стоит статус возврата, тоесть он впринципе не должен мне форму закрывать ни при каких условиях, даже при полных строках он закрывает
|
|||
38
серый КТУЛХУ
21.02.22
✎
17:18
|
да не надо тебе ничего в ПриЗакрытии.
в ПриЗаписи - если есть ошибочная строка - сразу после сообщения влепи СтатусВозврата(0); и всё. |
|||
39
Злопчинский
21.02.22
✎
17:46
|
(37) трындеж. смотри/копай внимательнее
|
|||
40
Злопчинский
21.02.22
✎
17:55
|
(36) см. (38)
Если Сохранить = 1 Тогда ЗначениеВФайл(КаталогИБ()+"SaveMark\"+ДокОснование.НомерДок+ДокОснование.ДатаДок+"Mark.dat",ИтогТЗ); КонецЕсли; СтатусВозврата(Сохранить); КонецПроцедуры. . но тут надо сильно подумать что будет если во время записи документа платформа напорется на транзакцию и получится отлуп (или какойнить ч(м)удал затер номер или дату документа - запись сломается, а у тебя уже во внешний каталог инфа скинута, сие есть ябка Посему я бы подстраховался типа . Если Сохранить = 1 Тогда Попытка Записать(); Исключение Сообщить(ОписаниеОшибки); СтатусВозврат(0); Возврат; КонецПопытки; ЗначениеВФайл(КаталогИБ()+"SaveMark\"+ДокОснование.НомерДок+ДокОснование.ДатаДок+"Mark.dat",ИтогТЗ); КонецЕсли; СтатусВозврата(Сохранить); |
|||
41
Злопчинский
21.02.22
✎
17:58
|
(36) " так вот почему при пустой строке, при форме которая не закрывается через крестик, происходит запись дока в журнал"
потому что ты ывно не указал что ПриЗаписи() должна закончиться с отлупом по СтатусВозврата(0); . если ПриЗаписи заканчивается со статусВозврата = 1Ю то выполняется запись - поэтому делать саму Записать() в ПриЗаписи() - не всегда полезно... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |