Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Вопрос в 1С 8.3 — отказываемся от модальности в управляемых формах с помощью асинхронных вызовов

Когда появилась возможность публиковать 1С в интернете или устанавливать платформу 1С 8.3 на мобильные приложения, возникла проблема с модальными окнами.

Дело в том, что в мобильных приложениях (web интерфейсах) они не открываются вообще, а на настольных компьютерах в браузере они воспринимаются как всплывающие окна, и чаще всего заблокированы пользователем.

Какое-то время фирма 1С боролась с таким положением вещей и даже разработала сложный и ненадежный механизм для модальных окон. Но, например, на iPhone он до сих пор не работает (из источников на сайте 1С).

В связи с этим, фирма 1С решила вообще отказаться от модальных окон. Точнее, пока оставили такую возможность, но и появилась настройка, запрещающая полностью использовать модальность. В 1С 8.3 появилась возможность производить асинхронный вызов модальных окон.

Эту настройку можно найти в свойствах конфигурации.

Заходим в Конфигуратор, нажимаем правой кнопкой мышки на самую первую строчку и выбираем «Свойства». У кого все свойства не уместились на экране, прокручиваем до самого низа:

режим использования модальности

На данный момент существует три режима применения модальных окон:

  • Использовать — позволяет использовать модальные окна в полной мере;
  • Использовать с предупреждением — так же позволит появиться модальному окну, но выйдет предупреждение, что модальные окна использовать запрещено!;
  • Не использовать — полностью исключает использование модальных окон.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

 

Теперь разберемся, как оформить новый функционал программно.

Задаем вопрос в 1С Предприятие 8.3

Начну с того, что нужно будет делать две процедуры. Первая, где задается сам вопрос, вторая, где он обрабатывается.

Я сразу напишу пример, а в комментариях будут пояснения. Так проще и наглядней:

&НаКлиенте

Процедура ЗадатьВопрос(Команда)



Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос",
ЭтотОбъект); // Прописываем название процедуры-обработчика.



ПоказатьВопрос(Оповещение, "Сегодня хорошая погода?",  // вместо привычного "Вопрос", теперь "ПоказатьВопрос"

РежимДиалогаВопрос.ДаНетОтмена,

0,  // задержка (секунды). необязательно

КодВозвратаДиалога.Да, // задает кнопку по умолчанию. необязательно

"Демонстрируем немодальные окна." // устанавливаем заголовок. необязательно

);

КонецПроцедуры



&НаКлиенте

Процедура ПослеОтветаНаВопрос(Результат, Параметры) Экспорт // здесь, думаю, комментировать нечего



Если Результат = КодВозвратаДиалога.Да Тогда

Сообщить("Приятного отдыха на свежем воздухе!");

Иначе

Сообщить("Оставайтесь дома!");

КонецЕсли;



КонецПроцедуры

На этом все, приятного программирования!

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 11 на “Вопрос в 1С 8.3 — отказываемся от модальности в управляемых формах с помощью асинхронных вызовов
  1. Добрый вечер. Подскажите пожалуйста нет ли у вас готовой конфигурации по созданию тестирования людей для примера, написанной на управляемых формах?

    Ответить

    • Здравствуйте!

      Нет, на управляемых формах, к сожалению, нет.

      Ответить

  2. Если мне надо вставить вопрос в процедуру ПередЗаписью то куда передавать оповещение? Писать свою процедуру которая запишет (проведет) и закроет окно формы как-то не айс.

    Ответить

    • ПередЗаписью есть и в формах объектов, там доступен клиентский контекст и можно отправлять вопросы и оповещения.

      Ответить

  3. Здравствуйте! Только начинаем работать в 1с комплексная автоматизация 2.0. При создании штатного расписания вводим оклад, районный коэффициент рассчитывается автоматически, а Северная надбавка не считается. Даже если внести сумму северной надбавки вручную, она не включается в фонд оплаты труда. В настройках учёта зарплаты поставили галочку «включать в фот», территориальные условия тоже занесли. В чем может быть дело? Заранее спасибо за ответ.

    Ответить

  4. Зачем две процедуры на клиенте?!
    &НаКлиенте
    Процедура ЗадатьВопрос(Команда)
    Ответ = Вопрос(«Сегодня хорошая погода?»,РежимДиалогаВопрос.ДаНет,0,КодВозвратаДиалога.Да,»Демонстрируем немодальные окна»);
    Если Ответ = КодВозвратаДиалога.Да Тогда
    Сообщить(«Приятного отдыха на свежем воздухе!»);
    иначе
    Сообщить(«Оставайтесь дома!»);
    КонецЕсли;
    КонецПроцедуры

    Ответить

    • Вопрос открывает МОДАЛЬНОЕ ОКНО, а в примере описано решение БЕЗ МОДАЛЬНЫХ окон. И пояснение почему модальные использовать не надо

      Ответить

  5. Скажите, а почему вторая процедура должна быть Экспортная ?

    Ответить

    • по причине:
      Не найден экспортируемый метод: ПослеОтветаНаВопрос

      Ответить

  6. Нужен показатьвопрос 1с 8.3 примеры

    Ответить

  7. А как при ответе, скажем, «да», продолжить выполнение кода. Например, мы задаем вопрос в поцедуре ПередЗаписью() и если юзер уверен в своих действиях, продолжаем штатную запись?

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.