- Модальные окна в управляемом приложении
- Управление режимом модальности
- Проблемы при открытии модальных форм на веб-клиенте
- Имитация модальной формы методом ОткрытьФорму()
- Открытие модальной формы по умолчанию
- Программирование в 1С:Предприятие
- 1 сентября 2011 г.
- Модальное открытие формы в 1с 8. Как вернуть результат ОткрытьМодально()
- Как открыть форму модально?
- 1С открыть форму модально
- В 8.3.5 можно выполнить автоматическое преобразование Модальных вызовов
- Статья решает задачи:
- 1 сентября 2011 г.
- Модальное открытие формы в 1с 8. Как вернуть результат ОткрытьМодально()
- Открыть форму модально, записать документ и закрыть его.
Модальные окна в управляемом приложении
В 1С:Предприятии доступна работа с модальными окнами. Данный режим позволяет блокировать работу с другими окнами пока не будет закрыто модальное окно. Этот механизм необходим когда для продолжения работы обязательно требуется ввести какие либо данные. Для открытия форм в модальном режиме существует специальный метод Форма.ОткрытьМодально() или глобальный метод ОткрытьФормуМодально(). Данные методы доступны в обычном и управляемом приложениях.
Управление режимом модальности
В новых версиях платформы добавилось новое свойство конфигурации «Режим использования модальности». Это свойство может быть установлено: Не использовать, Использовать с предупреждением, Использовать. С помощью данного глобального свойства устанавливается режим использования модальных окон во всей конфигурации.
Проблемы при открытии модальных форм на веб-клиенте
Конфигурации созданные на управляемом приложении могут работать через веб-клиент.
При использовании модальных окон в браузерах могут возникать определенные сложности. Браузеры мобильных устройств не поддерживают работу модальных окон. При использовании персональных компьютеров в браузерах может быть включена блокировка всплывающих окон.
Имитация модальной формы методом ОткрытьФорму()
Для решения данных проблем в платформе был разработан новый механизм открытия модальных окон. Если в конфигурации стоит запрет на использование модальных окон, то нельзя использовать методы модального открытия окон. Однако, есть возможность сделать окно модальным с помощью метода ОткрытьФорму(). В этом методе появились новые параметры «РежимОткрытияОкна» и «ОписаниеОповещенияОЗакрытии».
Парметр «РежимОткрытияОкна» — позволяет установить блокировку всех открытых окон 1С:Предприятия, кроме открываемого.
Параметр «ОписаниеОповещенияОЗакрытии» — позволяет определить процедуру вызываемую при закрытии формы.
Таким образом можно добиться модальности при открытии формы. В браузере такая псевдомодальная форма отрисовывается внутри родительского окна, тем самым не создавая всплывающие окна.
Открытие модальной формы по умолчанию
Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться
Источник
Программирование в 1С:Предприятие
Сайт о программировании в 1с версии 7.7 и 8.x
1 сентября 2011 г.
Модальное открытие формы в 1с 8. Как вернуть результат ОткрытьМодально()
Открытие формы модально — форма появляется на экране и блокирует другие окна, пока не будет закрыта.
МодФорма = ПолучитьФорму ( «ОсновнаяФорма» , ВладелецФормы );
Результат = МодФорма . ОткрытьМодально ();
Возникает проблема возврата результата, если форма не «для выбора»
В описании функции ОткрытьМодально() написано:
Форма.ОткрытьМодально (Form.DoModal)
ОткрытьМодально( )
Параметры: (необязательный)
Тип: Число . Время показа формы в секундах, по истечении которого форма будет закрыта с параметром закрытия Неопределено . Если значение параметра не задано, время показа не ограничено.
Значение по умолчанию: 0
Возвращаемое значение:
Тип: Произвольный. Команда закрытия формы.
Если форма открывалась для выбора, возвращает выбранное значение (или массив значений, в случае разрешенного множественного выделения в открываемой форме). Если значение не выбрано, возвращается Неопределено .
Описание:
Открывает форму в модальном режиме.
Я специально выделил фразу цветом. Получается: если форма определена «для выбора» — то она возвращает выбранные значения
В любых других случаях будет возвращаться — Неопределено.
Что же делать, когда у нас «обычная» форма (т. е. форма не определена как «для выбора») и мы хотим вернуть результат из формы после закрытия ?
В этом случае есть несколько решений:
1. Получив доступ к форме, мы можем вызывать различные функции и получать переменные. Естественно нужно, чтобы эти функции имели статус Экспорт
Например: МодФорма = ПолучитьФорму ( «ОсновнаяФорма» , ВладелецФормы );
РезультатФункции = МодФорма . НашаФункция ( «Параметры функции» );
Функция НашаФункция ( ПараметрыФункции ) Экспорт
Источник
Как открыть форму модально?
(8) >>. а открыть модально мне нужно уже у другого пользователя.
Это как? На другом компе что ли?
А я понял, это новый вирус — такое модальное окно выскакивает при открытии — вас 1с заблокирован за систематический просмотр бухгалтерских документов, отправьте смс по номеру такому то. Юзер нажимает закрыть окно и закрывается 1с ка))
Лан, не пятница седня, все умолкаю
(23) Рукалицо.
Застрелил бы.
ясн — Этакое табло электронное надо сделать.
В модуле приложения — процедуре при начале работы системы прописывайте обработчик получения документа и открывайте форму модально. (не забудьте проверку на пользователя)
В модуле формы при закрытии закрывайте приложение 1с.(Опять же только если пользователь тот, который нужен)
(30) Каких ошибок? Тут ошибка в голове, а не не незнание, как сделать с точки зрения программирования.
Приходит человек на работу, у него открывается 1С и тут же на экран выдается какая-то хрень, с которой работай (модально!) и ни-ни в сторону.
После этого чуваку нужно например сформировать отчет, не, обломись.
Сформировать печатную форму? Да пошел ты! Кто ты такой, чтобы иметь такие шикарные возможности?
Открыть посмотреть справочник номенклатуры. Перебьешься.
Посмотреть предыдущую смену? Проверить, не наплодил ли ты уже сегодня документов? Поглядеть, требование-накладная уже оформлена или нет? Ответ один, да пошел ты со своими дурацкими желаниями. Работай в чем, куда тебя пихают!
И при всем при том. Хочешь окольными путями куда-нить вылезти и что-нить натворить? Да пожалуйста.
Источник
1С открыть форму модально
В общем виде задача отказа от модальности заключается в том, чтобы заменить модальные методы их асинхронными аналогами.
Старая процедура, открывавшая модальное окно и обрабатывавшая полученные им данные, могла выглядеть так:
В новом варианте для формы ФормаВводТекста (которая будет открываться в блокирующем окне) нужно установить свойство РежимОткрытияОкна в значение БлокироватьВесьИнтерфейс. Это обеспечит модальность для пользователя:
А программный код вместо одной процедуры, как раньше, будет содержать уже две процедуры:
В первой процедуре открываем форму. При этом в последнем параметре мы передаём ей местонахождение второй процедуры, которая будет выполнена после того, как пользователь закроет окно. В данном случае эта процедура расположена в этом же модуле, но вообще может находиться и в другом.
Когда пользователь введёт данные и закроет форму, они будут обработаны в указанной нами второй процедуре, в которую мы просто перенесли «старый» код, обрабатывающий полученные данные.
Кроме форм, которые разработчик может открыть в модальном режиме (по своему желанию), существуют методы встроенного языка, которые всегда, независимо от желания разработчика, открывали модальные формы для ввода или выбора данных. Например, метод ВвестиЗначение().
Использовать такие методы в немодальном режиме ещё проще. Для всех таких методов в платформе сделаны методы-дублёры, при вызове которых нужно так же указать местонахождение процедуры, которая будет выполнена после того, как пользователь закроет окно.
Например, ниже показано использование старого метода ВвестиЗначение() и его нового метода-дублёра ПоказатьВводЗначения():
В 8.3.5 можно выполнить автоматическое преобразование Модальных вызовов
Теперь в простых, и в не очень простых, случаях вы можете сделать это автоматически (команда Модальные вызовы – Преобразовать модальный вызов):
Если вы преобразуете модальную функцию, то платформа добавит инициализацию переменной, в которую возвращается значение функции. Потому что в общем случае эта переменная может использоваться далее в той же процедуре:
Другой случай. Например, фрагмент, который вы преобразуете, содержит две ветки исполнения, одна из которых включает в себя модальный код, а другая нет. Платформа преобразует такой фрагмент в две процедуры:
Однако если вы преобразуете код, который находится, например, в модуле управляемого приложения, то полностью автоматическое преобразование вам выполнить не удастся:
Дело в том, что у глобального контекста нет свойства, позволяющего сослаться на него самого (ЭтотОбъект). А значит процедуру, обрабатывающую оповещение, нельзя разместить тут же, в модуле управляемого приложения. Её можно разместить, например, в каком-нибудь общем модуле. Эти действия вам нужно будет выполнить вручную:
Статья решает задачи:
- Как передать параметр в открываемую программно форму;
- Как вернуть параметр из открываемой программно формы;
Исходные данные:
- Имеется общая форма — «НашаФорма», с реквизитами:
- «МножительА» — заполняется при открытии формы, по значению переданного параметра;
- «МножительБ» — заполняется вручную;
1. Пишем процедуру по открытию «НашаФорма» и передаче в нее параметра «МножительА»
2. Пишем процедуру, которая при открытии «Наша форма» (в обработчике ПриСозданииНаСервере) будет заполнять реквизит «МножительА» по полученному значению
3. Пишем процедуру по вычислению результата умножения и возврату значения
Сайт о программировании в 1с версии 7.7 и 8.x
1 сентября 2011 г.
Модальное открытие формы в 1с 8. Как вернуть результат ОткрытьМодально()
Открытие формы модально – форма появляется на экране и блокирует другие окна, пока не будет закрыта.
МодФорма = ПолучитьФорму ( «ОсновнаяФорма» , ВладелецФормы );
Результат = МодФорма . ОткрытьМодально ();
Возникает проблема возврата результата, если форма не «для выбора»
В описании функции ОткрытьМодально() написано:
Форма.ОткрытьМодально (Form.DoModal)
ОткрытьМодально( )
Параметры: (необязательный)
Тип: Число . Время показа формы в секундах, по истечении которого форма будет закрыта с параметром закрытия Неопределено . Если значение параметра не задано, время показа не ограничено.
Значение по умолчанию: 0
Возвращаемое значение:
Тип: Произвольный. Команда закрытия формы.
Если форма открывалась для выбора, возвращает выбранное значение (или массив значений, в случае разрешенного множественного выделения в открываемой форме). Если значение не выбрано, возвращается Неопределено .
Описание:
Открывает форму в модальном режиме.
Я специально выделил фразу цветом. Получается: если форма определена «для выбора» – то она возвращает выбранные значения
В любых других случаях будет возвращаться – Неопределено.
Что же делать, когда у нас «обычная» форма (т. е. форма не определена как «для выбора») и мы хотим вернуть результат из формы после закрытия ?
В этом случае есть несколько решений:
1. Получив доступ к форме, мы можем вызывать различные функции и получать переменные. Естественно нужно, чтобы эти функции имели статус Экспорт
Например: МодФорма = ПолучитьФорму ( «ОсновнаяФорма» , ВладелецФормы );
РезультатФункции = МодФорма . НашаФункция ( «Параметры функции» );
Функция НашаФункция ( ПараметрыФункции ) Экспорт
Источник
Открыть форму модально, записать документ и закрыть его.
Сразу оговорюсь в программировании не силен — прошу сильно не пинать.
гуглил ответственно.
Есть обработка в которой нужно установить произвольный алгоритм.
Нужно открыть документ модально, записать его и закрыть его.
Почтеннейшие пожалуйста подскажите алгоритм.
предыстория длинна: были выгружены документы из седьмой торговли.
По понятным соображениям при обмене в созданных документах (например банковская выписка)) не устанавливаются счета взаиморасчетов с контрагентом.
Найдена обработка (универсальный подбор и обработка объектов) посредством которой в документы поступления на расч. счет установлен реквизит (счет расчетов 62.1 и 62.2)
После установки счетов документ перестал проводится групповой обработкой справочников и документов — с текстом ошибки:
по причине:
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
Ошибка выполнения запроса
по причине:
Ошибка при выполнении операции над данными:
Ошибка SQL: Деление на 0
по причине:
Ошибка SQL: Деление на 0
по причине:
Опытным путем определено, что при открытии документа и его закрытии (при этом изменения не сохраняются) документ проводится.
Обработка Универсальный подбор и обработка объектов позволяет произвести действияв произвольном алгоритме.
Попробовал перезаписать документ по алгоритму
Объект.Записать(РежимЗаписиДокумента.Запись)
Документ перезаписывается но так же не проводится.
В дополнение:
после выгрузки документа (исходный документ — банковская выписка) в документе сформированы реквизиты «Контрагент» и «ДоговорКонтрагента»
проставлены счета учета.
Провожу документ, документ проводится, но при этом не формирует движения по документу.
Опытным путем определено, если перевыбрать контрагента — обновляется договор контрагента и при проведении документа формируются движения по документу.
Для установки реквизитов использую обработку УниверсальныйПодборИОбработкаОбъектов которая позволяет производить изменения в документе с произвольным алгоритмом.
Вопрос:
Источник