1с показать вопрос кнопка по умолчанию
Когда появилась возможность публиковать 1С в интернете или устанавливать платформу 1С 8.3 на мобильные приложения, возникла проблема с модальными окнами.
Дело в том, что в мобильных приложениях (web интерфейсах) они не открываются вообще, а на настольных компьютерах в браузере они воспринимаются как всплывающие окна, и чаще всего заблокированы пользователем.
Какое-то время фирма 1С боролась с таким положением вещей и даже разработала сложный и ненадежный механизм для модальных окон. Но, например, на iPhone он до сих пор не работает (из источников на сайте 1С).
В связи с этим, фирма 1С решила вообще отказаться от модальных окон. Точнее, пока оставили такую возможность, но и появилась настройка, запрещающая полностью использовать модальность. В 1С 8.3 появилась возможность производить асинхронный вызов модальных окон.
Эту настройку можно найти в свойствах конфигурации.
Заходим в Конфигуратор, нажимаем правой кнопкой мышки на самую первую строчку и выбираем «Свойства». У кого все свойства не уместились на экране, прокручиваем до самого низа:
На данный момент существует три режима применения модальных окон:
- Использовать — позволяет использовать модальные окна в полной мере;
- Использовать с предупреждением — так же позволит появиться модальному окну, но выйдет предупреждение, что модальные окна использовать запрещено!;
- Не использовать — полностью исключает использование модальных окон.
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Теперь разберемся, как оформить новый функционал программно.
Задаем вопрос в 1С Предприятие 8.3
Начну с того, что нужно будет делать две процедуры. Первая, где задается сам вопрос, вторая, где он обрабатывается.
Я сразу напишу пример, а в комментариях будут пояснения. Так проще и наглядней:
На этом все, приятного программирования!
,
и думаю идея переобзывать кнопки в зависимости от ситуации уже посещала ваши светлые головы. Поделитесь, плиз, если это можно сделать! Или, если ТОЧНО нельзя.
Спасибо.
(2) ivanov_alex, этот как пример, ну вдруг не совсем понятно о какой функции идет речь.))
Не устраивают стандартные 1С-кие ответы!
Вопрос(,)
Синтаксис:
Вопрос(,,)
Назначение:
Вывести окно вопроса и получить ответ.
Возвращает ответную реакцию в виде числа или строки, в соответствии с заданием параметра :
-1 или 'Таймаут' ('Timeout'), если закончилось время ожидания ответа;
1 или 'ОК' ('ОК'), если если нажата кнопка OK;
2 или 'Отмена' ('Cancel'), если нажата кнопка Отмена;
3 или 'Стоп' ('Abort'), если нажата кнопка Стоп;
4 или 'Повтор' ('Retry'), если нажата кнопка Повтор;
5 или 'Пропустить' ('Ignore'), если нажата кнопка Пропустить;
6 или 'Да' ('Yes'), если нажата кнопка Да;
7 или 'Нет' ('No'), если нажата кнопка Нет.
Параметры:
- cтрока текста вопроса;
- определяет набор кнопок диалога в виде числа или строки (в скобках английское написание):
0 или 'ОК' ('ОК') - кнопка OK;
1 или 'ОК+Отмена' ('OK+Cancel') - кнопки OK и Отмена;
2 или 'Стоп+Повтор+Пропустить' ('Abort+Retry+Ignore') - кнопки Стоп, Повтор, Пропустить;
3 или 'Да+Нет+Отмена' ('Yes+No+Cancel') - кнопки Да, Нет, Отмена;
4 или 'Да+Нет' ('Yes+No') - кнопки Да, Нет;
5 или 'Повтор+Отмена' ('Retry+Cancel') - кнопки Повтор, Отмена;
(любое другое значение или отсутствие параметра равносильно 0);
- число секунд времени ожидания ответа (если опущен или 0, то без ограничения).
Подробнее см. в документации, глава 'Системные процедуры и функции'?>
(4) dvk09, ?! СПС, конешно, но это можно было и в синтакс-помощнике прочитать. Вопрос в другом был: можно ли вместо, нпр., Да+Нет чтобы в диалоге было Хочу+Нехочу.
Ну вот удачный пример http://sdrv.ms/IBKfu2 Как кнопку "Запросить согласование" сопоставить с стандартным ответом "Да", а "Отозвать запрос на согласование с ответом "Нет" ??
Тип: РежимДиалогаВопрос; СписокЗначений.
Задает состав и текст кнопок диалога, а также, связанные с кнопками значения.
При использовании типа СписокЗначений:
Значение – содержит значение, связанное с кнопкой. Это значение является возвращаемым значением при выборе кнопки. В качестве значения может использоваться значение перечисления КодВозвратаДиалога, а также другие значения;
Представление – задает текст кнопки. Если представление не задано и в качестве значения используется значение перечисления КодВозвратаДиалога, то используется стандартное представление;
Картинка – не используется (должна быть пустой);
Пометка – не используется (должна быть пустой).
При использовании типа СписокЗначений список не должен быть пустым.
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: использование диалогов в 1С
Автор уроков и преподаватель школы: Владимир Милькин
Давайте определимся, что же такое диалог? Вызов команды Сообщить является диалогом? А вызов команды ВвестиЧисло? А вызов ОткрытьЗначение?
Итак, диалог - это прежде всего элемент графического интерфейса , окно . А следовательно вызов Сообщить - диалогом не является, так как у него нет своего отдельного окна.
Диалог - это не просто окно. Это окно, которое открывается пользователю с целью вывода информации и (или) получения ответа.
Для того чтобы показать какой-либо диалог необходимо вызвать команду соответствующую этому диалогу и передать ей необходимые параметры. Команда - это обычная процедура или функция, только написанная не нами, а программистами фирмы 1С. Мы не можем менять эти команды, мы можем их только вызывать.
Предупреждение
Отличным примером диалога является вывод предупреждения пользователю:
Что мы видим? Вызов команды Предупреждение, в которую в качестве параметра передаётся строка "Осторожно".
Когда компьютер дойдёт до строчки, в которой вызывается эта команда, пользователю отобразится диалог предупреждения. И до тех пор, пока пользователь не закроет этот диалог, компьютер будет ожидать на этой же строчке. Только после закрытия диалога - выполнение программы продолжится и начнётся выполнение строки, следующей за вызовом диалога.
К примеру, пусть у нас есть такой код:
Как он будет выполняться?
В начале компьютер дойдёт до строчки №1 и выполнит команду Предупреждение с параметром "1". В этот момент пользователю покажется диалоговое окно с текстом "1", а компьютер замрёт на этой строчке и будет ожидать, пока пользователь закроет диалог. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
После закрытия диалога компьютер перейдёт к выполнению строчки №2 и выполнит команду Предупреждение уже с другим параметром "2". Пользователю снова покажется диалоговое окно, но уже с текстом "2", а компьютер замрёт уже на второй строчке и будет ожидать, пока пользователь закроет диалог.
Затем компьютер перейдёт к третьей строчке. Ну и так далее.
У команды Предупреждение параметр, отвечающий за текст, который выводится - не единственный. Есть ещё два дополнительных параметра:
Предупреждение(ТекстПредупреждения>, Таймаут>, Заголовок>)
Таймаут - означает количество секунд, через которое диалог закроется сам, если этого не сделает пользователь.
Заголовок - подменяет стандартный заголовок "1С:Предприятие" на строку пользователя.
К примеру, такой код:
покажет диалог с текстом "Осторожно." и заголовком "Внимание!", а также закроется через 5 секунд, если пользователь не сделает этого раньше:
А что если мы хотим задать только текст и заголовок окна, а таймаут не задавать?
Во-первых, мы можем передать в качестве таймаута ноль:
А во-вторых, мы можем просто оставить пустое место вместо параметра и система сама поймёт, что нужно оставить его значение по умолчанию:
Для того, чтобы узнавать обо всех возможных параметрах встроенных команд 1С - пользуйтесь синтакс-помощником так, как это описано в одном из предыдущих уроков (ссылка).
Ввод числа
Некоторые диалоги не только выводят какую-то информацию от нас пользователю, но и наоборот возвращают некий результат взаимодействия с пользователем. Примером такого диалога является ввод числа.
К примеру, напишем:
Зачем мы передаём в команду параметр Число? Во-первых, для того, чтобы отобразить начальное значение ввода в диалоге. А, во-вторых, чтобы вернуть в эту переменную значение, которое ввёл пользователь. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Но что если пользователь отказался от ввода и нажал кнопку "Отмена"? Как об этом узнать? Оказывается, функция ВвестиЧисло не только показывает диалог ввода числа, но ещё и возвращает нам Истина в том случае, если пользователь нажал кнопку "ОК" и Ложь, если он отменил ввод, нажав кнопку "Отмена".
Таким образом, более правильным будет такой код:
В переменную Результат (имя могло быть любым) возвращается Истина или Ложь в зависимости от того какую кнопку нажал пользователь ("ОК" или "Отмена").
В переменную Число возвращается число введенное пользователем.
Вопрос
Заключительным диалогом, который мы рассмотрим, будет является диалог вопроса пользователю.
Имя команды, которая вызывает этот диалог нам известна - Вопрос.
Теперь давайте посмотрим в синтакс-помощнике какие параметры принимает эта команда:
ТекстВопроса - это сам вопрос в текстовом виде, который увидит пользователь.
Кнопки - это одно из предопределенных значений, которые также можно посмотреть в синтакс-помощнике. Например, если передать в этот параметр:
- РежимДиалогаВопрос.ДаНет - в диалоге будет всего две кнопки Да и Нет.
- РежимДиалогаВопрос.ДаНетОтмена - три кнопки Да, Нет и Отмена.
- РежимДиалогаВопрос.ОкОтмена - две кнопки Ок и Отмена.
- И другие варианты кнопок.
- КодВозвратаДиалога.Нет
- КодВозвратаДиалога.Да
- КодВозвратаДиалога.Отмена
- И другие кнопки.
Таймаут - этот параметр нам уже знаком.
КнопкаПоУмолчанию - это кнопка, на которой будет фокус при показе окна. Её значения могут быть такими:
Заголовок - этот параметр нам уже знаком.
КнопкаТаймаута - если задать значение этой кнопки и параметр Таймаут, то именно на ней будет отображаться количество оставшихся секунд до закрытия диалога. У неё могут быть такие же значения как и у параметра КнопкаПоУмолчанию.
Уфф. Как видите, параметров много. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Но необязательно использовать их все. Как следует из синтакс-помощника обязательными к заполнению являются только первые два:
Вопрос-то мы задали. Хорошо бы теперь получить ответ - выспался пользователь или нет Из того же синтакс-помощника мы узнаём, что кнопка которая была нажата возвращается в качестве результата вызова команды Вопрос:
Модальность
Все примеры диалогов, которые мы рассмотрели - являются модальными, потому что компьютер, показывая диалог, замирает на той же строчке и не идёт дальше, пока диалог не закроется.
Ещё можно сказать, что когда мы показываем модальный диалог - пользователь может работать только с этим диалогом. Работа со всей остальной частью системы блокируется, пока не закроется диалог.
Таким недостатком не обладают немодальные версии диалогов, но к ним переходить нам ещё рано.
Я не буду первооткрывателем ошибки, но возможно добавлю в в свою карму чужого сэкономленного времени. Я мучился с этой ошибкой полгода.
Умер ноутбук бухгалтера. На нем был установлен СБИС (и запрещенный к копированию ключ ГазПромБанка), и ключи, как любит делать ТП СБИСа был.
Многим рассказываю про такую штуку, и многие хотят, реализуя под каждого я нашел несколько вариантов у каждого есть свои плюсы и минусы.
Стояла задача найти Конрагента в справочнике по ИНН и КПП (кто знает, что такое обособленное подразделение, поймет). Логика проста - найти .
Эти фотографии уже встречались ранее, но не было описано как это сделано. На этот раз я напишу, не много, но будет понятно. И возможно.
Давным давно, почти три года назад звонит мне знакомая, со старой работы: -"Привет, я разбила матрицу на своем нетбуке, за сколько ег.
Всем добра. Задача: В некую таблицу скопировать все значения из столбца другой таблицы где значение справа равно некоторому. Мысли: .
Встала задача - перед записью документа произвести некоторые проверки и задать вопрос пользователю, в зависимости от ответа - провести доку.
С каждым днем все больше внедряются системы видеонаблюдения, в связи с этим системы удешевляются, и появляется оборудование работающее .
Многие используют сервисы облачного хранения файлов для резервных копий. Одним из приоритетов является Яндекс.Диск, из-за изначального о.
А как можно программно нажать "Да" в стандартном 1с-ком диалоге (РежимДиалогаВопрос.ДаНет)? Как называется форма и кнопка?
Никак. Можно установить значение по умолчанию и таймаут закрытия. эти данные передабтся параметрами при создании окна.
Спасибо за ответ. Так и сделал.
Что-то.
Я не буду первооткрывателем ошибки, но возможно добавлю в в свою карму чужого сэкономленного времени. Я мучился с этой ошибкой полгода.
Умер ноутбук бухгалтера. На нем был установлен СБИС (и запрещенный к копированию ключ ГазПромБанка), и ключи, как любит делать ТП СБИСа был.
Многим рассказываю про такую штуку, и многие хотят, реализуя под каждого я нашел несколько вариантов у каждого есть свои плюсы и минусы.
Стояла задача найти Конрагента в справочнике по ИНН и КПП (кто знает, что такое обособленное подразделение, поймет). Логика проста - найти .
Эти фотографии уже встречались ранее, но не было описано как это сделано. На этот раз я напишу, не много, но будет понятно. И возможно.
Давным давно, почти три года назад звонит мне знакомая, со старой работы: -"Привет, я разбила матрицу на своем нетбуке, за сколько ег.
Всем добра. Задача: В некую таблицу скопировать все значения из столбца другой таблицы где значение справа равно некоторому. Мысли: .
Встала задача - перед записью документа произвести некоторые проверки и задать вопрос пользователю, в зависимости от ответа - провести доку.
С каждым днем все больше внедряются системы видеонаблюдения, в связи с этим системы удешевляются, и появляется оборудование работающее .
Многие используют сервисы облачного хранения файлов для резервных копий. Одним из приоритетов является Яндекс.Диск, из-за изначального о.
Читайте также: