|   |   | 
| 
 | 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Ю то выполняется запись - поэтому делать саму Записать() в ПриЗаписи() - не всегда полезно... | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |