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


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

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

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


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

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

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