Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как понять в ПослеЗаписиНаСервере что форма будет закрыта (нажато провести и закрыть)?

Как понять в ПослеЗаписиНаСервере что форма будет закрыта (нажато провести и закрыть)?
Я
   MaiorovYury
 
21.10.19 - 15:52
Всем доброго дня!
Собственно сабж
Есть форма документа, в которой в процедуре ПослеЗаписиНаСервере читаю еще кучу смежных данных. Соответственно если форма сразу же закрывается, то смысла в этом нет. Как понять - форма будет закрыта сразу после записи или нет?
 
 
   Beduin
 
1 - 21.10.19 - 15:56
ПриЗакрытии и ПередЗакрытием обработчики есть
   Kigo_Kigo
 
2 - 21.10.19 - 15:58
А в параметрах записи нельзя проверить что передается, там есть "выполнить" и "выполнить и закрыть" , что установлено в истину, иль я что то не так понял?
   MaiorovYury
 
3 - 21.10.19 - 15:58
(1) да, есть. Но они вызываются после ПослеЗаписиНаСервере, так что в моей задаче не помогут
   MaiorovYury
 
4 - 21.10.19 - 15:59
(2) в параметрах записи только РежимПроведения и РежимЗаписиДокумента
   Beduin
 
5 - 21.10.19 - 16:00
(3) Тогда объясни, зачем надо именно в этой процедуре читать данные?
   DrWatson
 
6 - 21.10.19 - 16:02
Событие ПередЗакрытием, делаем СтандартнаяОбработка = Ложь и всю логику реализуем сами. Так мы получим возможность запомнить, что форма закрывается.
   butterbean
 
7 - 21.10.19 - 16:04
(0) в любой непонятной ситуации - делай свою кнопку
   MaiorovYury
 
8 - 21.10.19 - 16:28
(5) а какие еще варианты есть? Мне в зависимости от статуса документа нужно скрывать определенные кнопки. Пользователь изменил статус, нажал записать - после записи мне нужно что-то сделать, причем делать это если форма закрывается смысла нет
Смотрел порядок выполнения обработчиков по ссылке ниже и ничего лучше не нашел
https://its.1c.ru/db/pubdevguide83/content/612/hdoc
   MaiorovYury
 
9 - 21.10.19 - 16:30
(6) так ПередЗакрытием не будет вызываться по кнопке Записать, а мне в таком случае надо как раз обновить данные на форме
   MaiorovYury
 
10 - 21.10.19 - 16:31
(7) не уж то это единственный вариант?)
   Дык ё
 
11 - 21.10.19 - 16:58
(10) да
   D_E_S_131
 
12 - 21.10.19 - 17:11
"причем делать это если форма закрывается смысла нет" - кому-то хуже от этого будет?
   MaiorovYury
 
13 - 21.10.19 - 17:30
(12) да, производительности хуже
Документ проводится 3 секунды, из них 1 секунду перечитываются данные
Таких проводок тысячи в день
   Александр Б
 
14 - 21.10.19 - 17:38
(13) Как вариант, типовую "Провести и закрыть" спрятать и добавить свою. В ней сделать нужный флаг.
   Mort
 
15 - 21.10.19 - 17:43
Может просто стоит подумать как сократить время чтения?
   pechkin
 
16 - 21.10.19 - 17:49
нужно читать не в после записи, а в при чтении на сервере
   bolero
 
17 - 21.10.19 - 17:50
(15) расскажи это разработчикам установки цен номенклатуры в УТ11
если там овер 1000 строк - можно смело на обед идти

может у него похожего порядка документ
   D_E_S_131
 
18 - 21.10.19 - 18:22
(13) "Мне в зависимости от статуса документа нужно скрывать определенные кнопки" - минуточку, какие "1 секунду перечитываются данные"? Мы же статус проверяем, который тут же в документе изменен.
   bolero
 
19 - 22.10.19 - 11:18
А у меня такая задача сегодня возникла:

При проведении заказа могут быть выданы предупреждения (не ошибки с отказом в проведении, а именно предупреждения, чтобы человек принял решение). Если ткнуть [Провести и закрыть] - эти предупреждения уходят в никуда.

К тому же заметил такой антипаттерн: люди хотят записать документ, а вместо этого нажимают [Провести и закрыть], а потом заново открывают его из списка. На вопрос "зачем" отвечают, что лично им это быстрее, чем найти на форме отдельные кнопки провести или записать.

Так что присоединяюсь к вопросу.
   Cyberhawk
 
20 - 22.10.19 - 11:22
Могу ошибаться, но и без кнопки можно отличить проведение с закрытием от проведения / записи без закрытия формы объекта - в первом случае объект не перечитывается
   Cyberhawk
 
21 - 22.10.19 - 11:22
+(20) Соответственно, как подвязаться к перечитыванию объекта уже сам найдешь
   Ns33
 
22 - 22.10.19 - 11:43
Такая идея:
ПередЗаписью - подключаешь обработчик ожидания, который примерно через 0.5 сек обновляет данные на форме
ПередЗакрытием - отменяешь обработчик. Если ПередЗакрытием  не вызвалось, значит форму не закрывают и обработчик отрабатывает.
   bolero
 
23 - 22.10.19 - 13:34
(19) ОбщегоНазначенияУТКлиент
&Вместо("ЗаписатьОбъектИЗакрыть")
Процедура ХХХ_ЗаписатьОбъектИЗакрыть(Форма, ПараметрыЗаписи)
    
    // { ХХХ

    Если ТипЗнч(Форма.Объект.Ссылка) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
        // Люди используют кнопку [Провести и закрыть] вместо обычной Провести, так как эта больше.

        // А там важные сообщения исчезают.

        // Ну ок, [Провести и закрыть] теперь работает как [Провести]

        ПараметрыЗаписи.ПринудительноЗакрытьФорму = Ложь;
    Иначе
        ПараметрыЗаписи.ПринудительноЗакрытьФорму = Истина;
    КонецЕсли;
    // } ХХХ

    ОчиститьСообщения();
    
    Если ПараметрыЗаписи.ЕстьВопросыПередЗаписью Тогда
        ПараметрыЗаписи.НовыйОбъект = Не ЗначениеЗаполнено(Форма.Объект.Ссылка);
        Форма.ПринудительноЗакрытьФорму = ПараметрыЗаписи.ПринудительноЗакрытьФорму;
        Форма.Записать(ПараметрыЗаписи);
    Иначе
        Если ЗаписатьОбъект(Форма, ПараметрыЗаписи) Тогда
            Форма.Закрыть();
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры



Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.