Вход | Регистрация

1С:Предприятие ::

Метки: 

веб-клиент. ОткрытьФорму() в ПриОткрытии

Я
   mr_K
 
12.10.17 - 15:48
Есть обработка. В ней основной назначена некая сервисная форма, у которой в ПриОткрытии проверяется какую форму открыть и выполняется открытие.
Код простой (это в сервисной форме):
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    Отказ = Истина;
    
    ДоступПользователя = ПроверитьПользователяНаДоступ();
    Если ДоступПользователя = "Количество" Тогда
        ОткрытьФорму("Обработка.ОценкаКачества.Форма.УправляемаяФормаКоличество");
.......

В веб-клиенте получаю сообщение "Использование модальных окон в данном режиме запрещено"

В СП про ОткрытьФорму прочитал все много раз. Нигде про модальность нет. В конфигурации даже включил режим использования модальности. Не помогает.
Есть идеи, как побороть?
 
 
   Mort
 
1 - 12.10.17 - 15:50
А каким кодом открывается сервисная форма?
И если уже на то пошло - форму нужно определять в менеджере обработки в соответствующем событии, а не через гланды.
   mr_K
 
2 - 12.10.17 - 15:53
Сервисная открывается интерактивно.
"И если уже на то пошло - форму нужно определять в менеджере обработки в соответствующем событии, а не через гланды." - а что здесь через гланды? Обработка. Внутри одной формы вызывается открытие другой. Все корректно. Но не пашет.
   Филиал-msk
 
3 - 12.10.17 - 15:57
(2) Через глубочайшие гланды здесь конкретно вот это:
Процедура ПриОткрытии(Отказ)
    
    Отказ = Истина;


Рады были помочь, приходите еще.
   Филиал-msk
 
4 - 12.10.17 - 15:59
(0) Да и про СП ты нап... обманул:

Примечание:
...

Обычные формы внешних обработок не поддерживаются.
В управляемом приложении не следует выполнять программное открытие и закрытие одной и той же формы в одном вызове встроенного языка.

   mr_K
 
5 - 12.10.17 - 16:01
(3) в данном случае - шли мимо, вот и ходите).
Там несколько категорически разных форм, в зависимости от пользователя должна открываться какая-то одна. Как это реализовать иначе? Нет понятно, что варианты есть. Но этот - самый очевидный и читаемый.
(4) Смотрим в книгу - видим фигу. Где я писал, что это внешняя обработка? Где здесь "программное открытие и закрытие одной и той же формы в одном вызове"?
   Mort
 
6 - 12.10.17 - 16:02
(2) Открывать левую форму чтобы открыть другую это и есть через гланды, когда существует событие специально для этого. Экономия серверных вызовов хотя бы.

А по поводу ошибки - ищи отладчиком модальный вызов. Может быть он и тут "ПроверитьПользователяНаДоступ();" сидит.
   mr_K
 
7 - 12.10.17 - 16:04
ПроверитьПользователяНаДоступ - там просто запрос. Результат которого эта функция и возвращает.
"когда существует событие специально для этого" - а можно с этого места поподробнее?
   Mort
 
8 - 12.10.17 - 16:05
ОбработкаМенеджер.<Имя обработки>.ОбработкаПолученияФормы (DataProcessorManager.<Имя обработки>.FormGetProcessing)
ОбработкаМенеджер.<Имя обработки> (DataProcessorManager.<Имя обработки>)
ОбработкаПолученияФормы (FormGetProcessing)
Синтаксис:

ОбработкаПолученияФормы(<ВидФормы>, <Параметры>, <ВыбраннаяФорма>, <ДополнительнаяИнформация>, <СтандартнаяОбработка>)
Параметры:

<ВидФормы>

Тип: Строка.
Имя стандартной формы.
<Параметры>

Тип: Структура.
Параметры формы. 
<ВыбраннаяФорма>

Содержит имя открываемой формы или объект метаданных Форма.
Если значение параметра изменено, то будет осуществлен поиск формы в пределах объекта, для которого открывается форма.
<ДополнительнаяИнформация>

Тип: Структура.
Дополнительная информация открытия формы.
Структура, содержащая поле ПовторноеИспользование (Reuse) типа Булево, которое указывает, кешируется ли форма на стороне клиента.
<СтандартнаяОбработка>

Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет (выбираются установленные разработчиком форма и параметры).
Значение по умолчанию: Истина.
Описание:

Обработчик события вызывается на сервере при получении стандартной управляемой формы.
Если требуется переопределить выбор открываемой формы, необходимо установить в параметре <ВыбраннаяФорма> другое имя формы или объект метаданных формы, которую требуется открыть, и в параметре <СтандартнаяОбработка> установить значение Ложь.
Замечание:

Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
   Юрий Лазаренко
 
9 - 12.10.17 - 16:09
(2) В интерфейсе у тебя должна быть кнопка или ссылка для открытия формы. Сейчас она скорее всего прицеплена к стандартному обработчику открытия формы, поэтому открывается форма обработки по умолчанию. Замены эту кнопку/ссылку на кнопку команды. В модуле команды определяй, какая форма нужна, и открывай сразу ее.

Или если все-таки через гланды хочется, то открывай из формы обработки по умолчанию, но не в процедуре ПриОткрытии. В процедуре ПриОткрытии запускай однократно обработчик ожидания с периодом 0.1 сек., открывай в нем нужную форму, а основную форму закрывай.
   mr_K
 
10 - 12.10.17 - 16:18
(8) Тут такое дело..С этой обработкой работатют как в управляемом так и в обысном приложении. В котором ОбработкаПолученияФормы - не отрабатывает.
Ок. Для обычного оставляю текущий код, для управляемого в менеджере пропишу.
Но мне так и не понятно, почему метод в (0) не работает.
(9) В веб-клиенте - переход происходит вообще из вне по ссылке. в обычном приложении - через меню.
 
 Рекламное место пустует
   mr_K
 
11 - 12.10.17 - 16:27
(9) Метод через гланды в веб-клиенте ошибок не выдает, форму не открывает)
   Юрий Лазаренко
 
12 - 12.10.17 - 17:26
(10) >> переход происходит вообще из вне по ссылке. в обычном приложении - через меню
Ну вот надо в меню разместить кнопку команды, и в модуле команды выбирать и открывать нужную форму.
   breezee
 
13 - 12.10.17 - 18:37
Попробуйте использовать "ПриСозданииНаСервере"
   mr_K
 
14 - 13.10.17 - 08:58
(12) В обычном приложении, где переход из меню происходит - проблем нет. Проблемы в веб-клиенте, куда переход осуществляется по http ссылке. В ней указать форму я не знаю как. Если есть такая возможность, буду благодарен за подсказку.
   mr_K
 
15 - 13.10.17 - 09:00
(13) Таже ерунда, что описал в (10). В обычном клиенте нет такой процедуры. Тут цель была написать универсальный код, отрабатывающий в любых ситуациях. С точки зрения документации 1С и СП он и был написан. Но почему-то не работает.
   mr_K
 
16 - 17.10.17 - 15:50
немного апну:
Самое смешное, что ОбработкаПолученияФормы в вебклиенте не отрабатывает.
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ДоступПользователя = ПроверитьПользователяНаДоступ();
    Если ДоступПользователя = "Количество" Тогда
        ВыбраннаяФорма = "УправляемаяФормаКоличество";
    ......


в тонком клиенте - ок. в вебклиенте - фигу.
Повторю вопрос: как в вебклиенте переопределить открываемую форму обработки. Переход к обработке происходит по внешней ссылки.


Список тем форума
Рекламное место пустует Рекламное место пустует
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует