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

Можете пояснить смысл кода из типовой конфигурации? УТ 11.4.13.71

Можете пояснить смысл кода из типовой конфигурации? УТ 11.4.13.71
Я
   DJ Anthon
 
09.12.20 - 08:23
Справочник ВариантыОтчетов, форма РазмещениеВРазделах
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если СообщенияОбОшибках <> Неопределено Тогда
        Отказ = Истина;
        ОчиститьСообщения();
        СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено,
            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
                |Подробности:
                |%2'"), СообщенияОбОшибках.Текст, СообщенияОбОшибках.Подробно), РежимДиалогаВопрос.ОК);
    КонецЕсли;
КонецПроцедуры


Показать вопрос пользователю - это показ кастомного сообщения юзеру, форма открывается.
Но из-за того, что перед ней стоит Отказ = Истина, родительская форма должна закрыться сразу же после открытия,
что автоматически вызывает закрытие формы кастомного сообщения (причем только с событием закрытия, а событие перед закрытием не вызывается).
То есть показаться пользователю шансов нет никаких. Это баг или фича?
И как можно исправить, чтобы форма кастомного сообщения не закрывалась после закрытия родительской формы?
   ДенисЧ
 
1 - 09.12.20 - 08:28
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю она, по коду, не привязывается к форме.

//

ОткрытьФорму("ОбщаяФорма.Вопрос", Параметры,,,,,ОписаниеОповещенияОЗавершении);
//
   DJ Anthon
 
2 - 09.12.20 - 08:40
(1) но тем не менее, если убрать Отказ = Истина, то форма на экране остаётся.

Можете сами убедиться. Надо только попробовать разместить какой-нибудь отчет из формы "Продажи - Отчеты по продажам - Все отчеты" командой контекстного меню "Разместить в разделах..." из списка вариантов отчета пользователем с неполными правами, например, менеджером по продажам. Сообщение должно выдать ошибку о нехватке прав, так как роли "Добавление и изменение личных вариантов отчетов" недостаточно для пользовательского размещения отчета, так как у этой роли есть дополнительное ограничение права "Изменение".
Под админом такое сообщение не может выскочить.


Вот так работает.

&НаКлиенте
Процедура Завершение(Результат, Параметры) Экспорт
    Закрыть();
КонецПроцедуры

&НаКлиенте
&Вместо("ПриОткрытии")
Процедура А_ПриОткрытии(Отказ)
    Если СообщенияОбОшибках <> Неопределено Тогда
//Anthon -< 09.12.2020

        ОчиститьСообщения();
        СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Новый ОписаниеОповещения("Завершение", ЭтотОбъект, ), 
            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
                |Подробности:
                |%2'"), СообщенияОбОшибках.Текст, СообщенияОбОшибках.Подробно), РежимДиалогаВопрос.ОК);
        Возврат;
//Anthon ->

        Отказ = Истина;
        ОчиститьСообщения();
        СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(Неопределено, 
            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1
                |Подробности:
                |%2'"), СообщенияОбОшибках.Текст, СообщенияОбОшибках.Подробно), РежимДиалогаВопрос.ОК);
    КонецЕсли;
КонецПроцедуры

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