1с формы в отдельных окнах как включить
Область применения: управляемое приложение, мобильное приложение.
1. Для открытия форм следует применять метод глобального контекста ОткрытьФорму (при использовании версии платформы 1С:Предприятие 8.2 и более ранних версий – также ОткрытьФормуМодально ). Применение альтернативного способа, с получением формы и ее последующим открытием с помощью метода ПолучитьФорму , не рекомендуется.
Рекомендация обусловлена соображениями
- повышения устойчивости кода, работающего с формой, за счет разделения программного интерфейса для работы с формой и деталей ее внутренней реализации,
- а также сохранения единой стилистики кода прикладных решений.
Кроме того, применение глобального метода ОткрытьФорму гарантирует выполнение инициализации формы на сервере в обработчике ПриСозданииНаСервере . Этот подход помогает сосредоточить весь код инициализации формы в одном месте и исключает "случайное" обращение к серверу, связанное с инициализацией формы, между строками кода
2. В случаях когда форма требует параметризации при открытии, все ее параметры следует указывать в наборе параметров формы. Таким образом, набор параметров формы декларативно описывает возможности формы по ее параметризации.
Параметры формы из этого набора могут быть указаны в вызывающем коде при открытии формы ( ОткрытьФорму ).
3. Не следует применять другие способы параметризации формы при открытии. Например, нужно избегать обращения к методам и свойствам формы после ее открытия.
Например, вместо
следует по той же причине использовать параметры формы:
ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));
4. Для получения результата работы формы, вместо непосредственного обращения к элементам и реквизитам формы
ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …
следует использовать процедуры-обработчики оповещений, которые будут вызваны при завершении работы пользователя с формой:
Оповещение = Новый ОписаниеОповещения("БольшеНеПоказыватьНапоминаниеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаВопроса". Оповещение, РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс);
.
&НаКлиенте
Процедура БольшеНеПоказыватьНапоминаниеЗавершение(БольшеНеПоказыватьНапоминание, Параметры) Экспорт
Если БольшеНеПоказыватьНапоминание = Неопределено Тогда
Возврат;
КонецЕсли;
Если БольшеНеПоказыватьНапоминание Тогда
// …
При этом возвращаемое значение формы формируется в коде модуля формы с помощью метода формы Закрыть .
5. Другие ограничения:
- Обработчик события формы ПриОткрытии не должен содержать код по открытию какой-либо другой формы, так как это может привести к нарушению порядка отображения окон. В этом случае рекомендуется использовать обработчик ожидания на короткий интервал или открывать другие формы интерактивно, например, по нажатию на кнопку.
- Не рекомендуется выполнять программное открытие и закрытие формы в одном обработчике. Такие действия должны быть разнесены по времени. Например, закрытие формы можно выполнять в обработчике ожидания.
- При использовании в конфигурации Библиотека стандартных подсистем и разработке форм (рабочих мест), предназначенных только для внешних пользователей, следует явно блокировать открытие таких форм в сеансах "обычных" пользователей. Для этого следует устанавливать параметр Отказ при создании формы на сервере с помощью функции ЭтоСеансВнешнегоПользователя общего модуля Пользователи или ПользователиКлиент :
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
…
КонецПроцедуры
6. Следующие виды форм должны быть всегда доступны пользователю в режиме 1С:Предприятия из меню "Все функции" вне зависимости от того, размещены ли соответствующие объекты в командном интерфейсе приложения или нет:
Любой начинающий разработчик управляемого приложения 1С, который дошел до открытия управляемых форм заметил, что новая форма открывается всегда не поверх текущего окна, а в соседнем окне. Этот режим открытия называют Независимым. Но очень часто для удобства работы пользователей форму нужно открыть именно поверх всех имеющихся окон. Разберемся, как это работает.
Прежде чем изучать открытие формы программно, познакомимся с очень интересным свойством управляемой формы 1С, которое называется РежимОткрытияОкна. Именно это свойство отвечает, каким образом откроется новое окно. Это свойство принимает три значения: Независимый, Блокировать окно владельца и Блокировать весь интерфейс.
Если у формы 1С установлен Независимый режим открытия окна, то форма откроется в отдельном окне, как на рисунке ниже.
Здесь и далее приведена конфигурация из книги «Основы разработки в 1С: Такси».
В том случае если установлен режим Блокировать окно владельца или Блокировать весь интерфейс, то форма откроется по верх всех окон.
Только в случае режима Блокировать окно владельца, будет заблокирована форма, в которой было инициализировано открытие новой формы. А в случае режима Блокировать весь интерфейс заблокируется весь интерфейс программы 1С. По сути, форма откроется в модальном режиме.
Со свойством формы разобрались, перейдем к открытию формы при помощи программного кода. Делать мы это будем при помощи уже знакомого нам метода ОткрытьФорму. Как работает этот метод, читайте в моей статье:
У этого метода есть последний седьмой параметр, который называется РежимОткрытияОкна, этот параметр имеет тип системное перечисление РежимОткрытияОкнаФормы, которое содержит в себе уже знакомые нам режимы: Независимый, Блокировать окно владельца и Блокировать весь интерфейс.
Если мы в методе ОткрытьФорму установим в седьмой параметр какое-либо значение, то форма откроется согласно этому значению.
Ниже приведены все три варианта открытия окна формы с использованием параметра РежимОткрытияОкна:
ОткрытьФорму ( «Документ.УстановкаЦен.Форма.ФормаДокумента» .
РежимОткрытияОкнаФормы . Независимый );
ОткрытьФорму ( «Документ.УстановкаЦен.Форма.ФормаДокумента» .
РежимОткрытияОкнаФормы . БлокироватьОкноВладельца );
ОткрытьФорму ( «Документ.УстановкаЦен.Форма.ФормаДокумента» .
РежимОткрытияОкнаФормы . БлокироватьВесьИнтерфейс );
Изучайте управляемые формы 1С с моими статьями:
Открытие управляемой формы существующего объекта
Открытие управляемой формы 1С на основании другого объекта
Открытие обычной формы в управляемом приложении 1С
Очень подробно вопросы по работе с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Многие начинающие думают, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 9 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 9 шагов»
- Без сложных технических терминов.
- Более 500 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 16%: vCph8bW3rE
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей
Так стало (в 8.3.10):
Не подскажете как запустить этот режим при старте, или как вернуть эту функцию?
Ответ:
1C, начиная с версии 8.3.10.2168, действительно убрали возможность включения режима "отдельных окон" из интерфейса пользователя.
Но многим пользователям (особенно бухгалтерам) этот вариант интерфейса в отдельных окнах бывает действительно необходим, например, когда нужно открыть два отчёта в соседних окнах для более удобной работы с ними.
Скажу сразу, что для веб-клиента эту возможность больше не включить, это связано с тем, что работа в отдельных окнах внутри одной страницы не приветствуется современными браузерами.
Для тонкого или толстого же клиента вернуть эту возможность (если очень хочется) можно и сейчас мы рассмотрим как.
Для этого заходим в настройки базы в стартере 1С (выделив базу и нажав кнопку "Изменить"):
Нажимаем "Далее" и находим поле "Дополнительные параметры запуска".
Добавляем в него параметр /isdi
У меня получилось вот так:
Теперь запускаем нашу базу обычным образом и радуемся режиму работы в отдельных окнах:
Но к нашему огорчению некоторые журналы и отчёты по-прежнему будут открываться в главном окне программы (а не отдельно, как нам хотелось бы).
И сейчас я покажу как добиться того, чтобы два отчёта (например, 2 оборотно-сальдовые ведостомости) открылись в соседних (отдельных) окнах.
Для этого формируем первую оборотку, а далее выбираем в её закладке в правом верхнем углу пункт "Все действия"-"Открыть новое окно":
Открылось отдельное окно с отчётом:
Таким же образом открываем и состыковываем нужное количество отчётов для более удобной работы с ними:
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Так стало (в 8.3.10):
Не подскажете как запустить этот режим при старте, или как вернуть эту функцию?
Ответ:
1C, начиная с версии 8.3.10.2168, действительно убрали возможность включения режима "отдельных окон" из интерфейса пользователя.
Но многим пользователям (особенно бухгалтерам) этот вариант интерфейса в отдельных окнах бывает действительно необходим, например, когда нужно открыть два отчёта в соседних окнах для более удобной работы с ними.
Скажу сразу, что для веб-клиента эту возможность больше не включить, это связано с тем, что работа в отдельных окнах внутри одной страницы не приветствуется современными браузерами.
Для тонкого или толстого же клиента вернуть эту возможность (если очень хочется) можно и сейчас мы рассмотрим как.
Для этого заходим в настройки базы в стартере 1С (выделив базу и нажав кнопку "Изменить"):
Нажимаем "Далее" и находим поле "Дополнительные параметры запуска".
Добавляем в него параметр /isdi
У меня получилось вот так:
Теперь запускаем нашу базу обычным образом и радуемся режиму работы в отдельных окнах:
Но к нашему огорчению некоторые журналы и отчёты по-прежнему будут открываться в главном окне программы (а не отдельно, как нам хотелось бы).
И сейчас я покажу как добиться того, чтобы два отчёта (например, 2 оборотно-сальдовые ведостомости) открылись в соседних (отдельных) окнах.
Для этого формируем первую оборотку, а далее выбираем в её закладке в правом верхнем углу пункт "Все действия"-"Открыть новое окно":
Открылось отдельное окно с отчётом:
Таким же образом открываем и состыковываем нужное количество отчётов для более удобной работы с ними:
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Упр.формы, 8.3.6, режим совместимости интерфейса - Версия 8.2. Ну т.е. - упр.формы, не такси.
Необходимо, чтобы по умолчанию у пользователей открывалось приложение в режиме "Формы в отдельных окнах", а не "Формы в закладках". Как можно сделать?
Глобальный контекст (Global context)
ОткрытьФорму (OpenForm)
Вариант синтаксиса: По названию
Тип: Структура.
Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
П = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П);
Форма.Открыть();
Владелец формы - форма или элемент управления другой формы.
(необязательный)
Тип: Произвольный.
В данном параметре может быть задан некоторый ключ, значение которого будет использоваться для поиска уже открытых форм. Если будет найдена форма с таким же ключом уникальности, вместо открытия новой формы будет активизирована найденная форма.
Ложь - искать форму с ключом уникальности по умолчанию, Истина - не искать форму вообще, любое другое значение устанавливает ключ уникальности, по которому будет произведен поиск.
Значение по умолчанию: Ложь.
(необязательный)
Тип: ОкноКлиентскогоПриложения;ВариантОткрытияОкна.
Окно приложения, в котором будет открыта форма.
Применимо только для управляемой формы. Окном может быть только основное окно приложения или вспомогательное окно формы.
Если указан тип ВариантОткрытияОкна, окно формы будет создано согласно выбранному варианту.
(необязательный)
Тип: Строка, Неопределено.
Если содержит значение, отличное от Неопределено, то это значение присваивается свойству НавигационнаяСсылка формы, полученной в результате вызова данного метода, и свойство АвтоНавигационнаяСсылка этой формы устанавливается в Ложь.
Значение по умолчанию: Неопределено.
(необязательный)
Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после закрытия формы со следующими параметрами:
- значение, переданное при вызове метода Закрыть открываемой формы,
- значение, которое было указано при создании объекта ОписаниеОповещения.
Если параметр не указан, то по завершению никакая процедура вызвана не будет.
Игнорируется на мобильной платформе.
(необязательный)
Тип: РежимОткрытияОкнаФормы.
Указывает режим открытия окна управляемой формы.
Игнорируется на мобильной платформе.
Значение по умолчанию: Неопределено.
Вариант синтаксиса: По форме
Тип: Форма; УправляемаяФорма.
Форма или управляемая форма. В режиме тонкого и веб-клиентов только управляемая форма.
(необязательный)
Тип: ОкноКлиентскогоПриложения; ВариантОткрытияОкна.
Окно приложения, в котором будет открыта форма.
Применимо только для управляемой формы. Окном может быть только основное окно приложения или вспомогательное окно формы.
В случае использования ВариантОткрытияОкна, окно формы будет создано согласно выбранному варианту.
Возвращаемое значение:
Тип: Форма; УправляемаяФорма.
Открывает и возвращает форму или управляемую форму. В тонком и веб-клиенте только управляемую форму. Перед открытием осуществляется поиск уже открытой такой же формы. Поиск осуществляется по типу формы, значениям ключевых параметров формы, владельцу формы, пользовательскому ключу уникальности.
Можно открывать уже полученную форму. В этом случае в параметрах передается уже полученная форма и окно, в котором открыть форму.
Можно открыть по имени формы. В этом случае в параметры передаются имя формы, параметры формы, владелец, ключ уникальности и окно, в котором должна быть открыта форма.
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Примечание:
Для варианта "По названию" параметры вызова аналогичны параметрам метода ПолучитьФорму.
Обычные формы внешних обработок не поддерживаются.
В управляемом приложении не следует выполнять программное открытие и закрытие одной и той же формы в одном вызове встроенного языка.
Если при открытии обычной формы в параметре указано не стандартное имя формы, передаваемые параметры не обрабатываются.
В процессе выполнения может быть несколько обращений к серверу. Часть из них кэшируются. Как минимум одно обращение к серверу есть всегда и оно не кэшируется. Кэширование зависит от версии платформы и версии конфигурации в целом. Если установлена низкая скорость соединения и не указывается текущая строка, то кэшируется форма выбора. Очистка кэша осуществляется с периодичностью в 20 мин. Удаляются формы, которые не использовались в этот период времени.
См. также:
Глобальный контекст, метод ПолучитьФорму
Глобальный контекст, метод ПолучитьОбщуюФорму
Глобальный контекст, метод ОткрытьФормуМодально
Любой начинающий разработчик управляемого приложения 1С, который дошел до открытия управляемых форм заметил, что новая форма открывается всегда не поверх текущего окна, а в соседнем окне. Этот режим открытия называют Независимым. Но очень часто для удобства работы пользователей форму нужно открыть именно поверх всех имеющихся окон. Разберемся, как это работает.
Прежде чем изучать открытие формы программно, познакомимся с очень интересным свойством управляемой формы 1С, которое называется РежимОткрытияОкна. Именно это свойство отвечает, каким образом откроется новое окно. Это свойство принимает три значения: Независимый, Блокировать окно владельца и Блокировать весь интерфейс.
Если у формы 1С установлен Независимый режим открытия окна, то форма откроется в отдельном окне, как на рисунке ниже.
Здесь и далее приведена конфигурация из книги «Основы разработки в 1С: Такси».
В том случае если установлен режим Блокировать окно владельца или Блокировать весь интерфейс, то форма откроется по верх всех окон.
Только в случае режима Блокировать окно владельца, будет заблокирована форма, в которой было инициализировано открытие новой формы. А в случае режима Блокировать весь интерфейс заблокируется весь интерфейс программы 1С. По сути, форма откроется в модальном режиме.
Со свойством формы разобрались, перейдем к открытию формы при помощи программного кода. Делать мы это будем при помощи уже знакомого нам метода ОткрытьФорму. Как работает этот метод, читайте в моей статье:
У этого метода есть последний седьмой параметр, который называется РежимОткрытияОкна, этот параметр имеет тип системное перечисление РежимОткрытияОкнаФормы, которое содержит в себе уже знакомые нам режимы: Независимый, Блокировать окно владельца и Блокировать весь интерфейс.
Если мы в методе ОткрытьФорму установим в седьмой параметр какое-либо значение, то форма откроется согласно этому значению.
Ниже приведены все три варианта открытия окна формы с использованием параметра РежимОткрытияОкна:
ОткрытьФорму ( «Документ.УстановкаЦен.Форма.ФормаДокумента» .
РежимОткрытияОкнаФормы . Независимый );
ОткрытьФорму ( «Документ.УстановкаЦен.Форма.ФормаДокумента» .
РежимОткрытияОкнаФормы . БлокироватьОкноВладельца );
ОткрытьФорму ( «Документ.УстановкаЦен.Форма.ФормаДокумента» .
РежимОткрытияОкнаФормы . БлокироватьВесьИнтерфейс );
Изучайте управляемые формы 1С с моими статьями:
Открытие управляемой формы существующего объекта
Открытие управляемой формы 1С на основании другого объекта
Открытие обычной формы в управляемом приложении 1С
Очень подробно вопросы по работе с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Многие начинающие думают, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 9 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 9 шагов»
- Без сложных технических терминов.
- Более 500 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 16%: vCph8bW3rE
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Блокирующее или независимое открытие форм объектов
Область применения: управляемое приложение.
1. По умолчанию, при создании форм некоторых типов объектов (справочников, планов видов характеристик и др.) им устанавливается режим открытия с блокированием окна владельца (свойство РежимОткрытияОкна установлено в значение БлокироватьОкноВладельца ). Для таких форм предполагается, что работа с ними всегда выполняется "за один заход", без необходимости переключения в другие формы. Тем самым, предотвращается одновременное открытие нескольких форм такого типа, и как следствие, рабочее пространство пользователя не "замусоривается" лишними окнами.
2. Это умолчание платформы рекомендуется изменять в тех случаях, когда форма представляет из себя «рабочее место», т.е. с помощью нее осуществляется доступ к большому функциональному блоку. В частности, если при работе с формой в обычных сценариях работы может потребоваться
- открытие других самостоятельных форм (отчетов, справочников и т.д.) из глобального командного интерфейса приложения;
- сравнение двух и более объектов между собой;
а также если в панели навигации формы
- содержится большое количество переходов к связанной информации (например, к подчиненным справочникам);
- есть переходы к параметризируемым отчетам.
Для таких форм необходимо установить свойству РежимОткрытияОкна значение Независимый. Как правило, это формы документов.
3. Для конфигураций, разрабатываемых на платформе 1С:Предприятие 8.3.9 и ранее, не следует открывать формы в режиме ВариантОткрытияОкна.ОтдельноеОкно , поскольку в конфигурациях, рассчитанных на работу в режимах «Такси» или «В закладках», такой режим открытия форм значительно усложняет пользователю настройку приложения для работы в веб-клиенте.
В большинстве случаев такие формы можно перевести на открытие в режиме блокирования окна владельца или независимо (что технически не приводит к открытию отдельного окна в веб-браузере в режимах интерфейса «Такси» или «В закладках», но визуально будет выглядеть для пользователя так же, как открытие отдельного окна).
Исключение составляют случаи, когда в конфигурации предусмотрено, что форма открывается таким способ только в тонком клиенте или только в режиме «В отдельных окнах».
Читайте также: