1с как программно закрыть все окна

1С 8.2 УП : Форма

Программно закрыть ВСЕ открытые окна и активировать рабочий стол?

Что касаемо активации рабочего стола, то тут так:
Код 1C v 8.2 УП

Похожие FAQ

Еще в этой же категории

Как на управляемой форме разместить список регистра сведений с отбором? 17
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом » ДинамическийСписок» В поле » Основная табли Форма

Программное создание таблицы значений с условным оформлением 11
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Как установить параметр динамического списка? 11
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Как обновить динамический список или реквизит на форме клиента? 11
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Поле выбора

Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Источник

Как в управляемых формах закрыть все окна (хождение по мукам)

Как в управляемых формах закрыть все окна (хождение по мукам)

В управляемых формах 1С v8.3 не всё так просто, как было в обычных формах и, зачастую, требуются более сложные действия, чтобы выполнить «простейшее» для «старого» интерфейса действие.

Как это было в обычных формах:

Меню «Окна\Закрыть всё» …. и всё — все окна моментально закрыты! (кроме случаев когда есть модифицированность формы, либо есть обработчик запрещающий закрытие либо закрытие без подтверждения)

Читайте также:  Как делаются отливы для окон

Теперь же у нас передовая технология «Такси» — «потому что быстрая»).

Цепочка действий

Выходим в меню/Окна/Все окна (уже 3 нажатия, но это еще не всё)

Часть вторая «Сдвинуть мышь вправо, найти кнопку «Закрыть окна» и нажать, …… и нет не всЁ. Потому что закроется только одно выделенное — текущее окно.

Нажимаем «Выделить все» — это если горячими клавишами «Ctrl+A», либо встать на верхний и через Shift и движением стрелкой вниз выделить все (все строки должны стать желтыми), а любителям мышкой, никак…. только по одному

Затем уже нажимаем «Закрыть окна» и ….. интерфейс поворочался 2-3 секунды, но закрыл окна.

Остались в списке два окна и окно диалога не закрылось — еще одно лишнее действие по его закрытию.

Программное закрытие всех форм

Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
Если Не Окно.Основное Тогда
Для каждого Форма из Окно.Содержимое Цикл
Форма.Закрыть();

КонецЦикла;
КонецЕсли;
КонецЦикла;

Этот код закроет все окна кроме файлов созданных средствами 1С: текстовых,табличных документов, открытых через Показать() .

С версии 8.3.8 при закрытии нельзя вызывать серверные процедуры, данный вариант закрытия всех ПередЗавершениемРаботыСистемы в приложении не позволяет обойти ошибку.

Система понимает, что ты уже в стадии закрытия и сообщение выходит, в момент Форма.Закрыть(); хотя верилось что можно обойти без доработки всех форм.

Резюме:

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

В некоторых случаях будет достаточно несколько раз нажать «Esc» и окна последовательно закроются, но это тоже не 3 клика.

Я не удивлюсь, что есть «волшебная» команда, которая позволяет, это сделать быстрее, но даже если она и существует, то не «интуитивно» понятна — и не на поверхности, как должна быть в «совершенном» интерфейсе.

Реклама магазина самообслуживания: треска, стоящая в очереди за cобственной печенью.

Источник

Как закрыть все окна, открытые внутри главного окна программы?

Пытаюсь программно закрыть все открытые окна на стороне пользователя — документов, элементов справочника, какие-то рекламные (переход на 3.0 в бухгалтерии). Пробовал несколькими способами — не удается.

В управляемом приложении есть функция ПолучитьОкна(), но она не работает в обычном.

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

Скачал внешнюю компоненту — состоит из двух частей-обработок, одна регистрация DLL-ки, вторая собственно, через нее закрывает все окна. Все бы хорошо, но через раз база вываливается с дампом при попытке запустить их программно. То есть если открывать вручную друг за другом, все работает, а если точно так же, но в коде — вываливается и не могу понять причину падения. По крайней мере, вылет всегда происходит на строчке ScrptCtrl.AddCode(Текст), где ScrptCtrl = Новый COMОбъект(«MSScriptControl.ScriptControl»);

Читайте также:  Как сделать крышу над окном

Сделал еще более нелепый костыль — в интерфейсе можно добавить кнопку на панель и назначить одно из действий по умолчанию — например, «Закрыть все окна». Проблема в том, что при назначении стандартных действий указание сочетания клавиш становится недоступно, и можно только приписать амперсанд перед первой буквой текста команды, чтобы она срабатывала по нажатию комбинации Alt+ . Причем комбинация срабатывает только, если кнопка на главной панели!

Есть ли более простые и удобные способы закрыть все окна, пусть даже с вопросами о сохранении, если данные в форме были модифицированы?

Источник

Форма

Программно закрыть ВСЕ открытые окна и активировать рабочий стол?

Что касаемо активации рабочего стола, то тут так:
Код 1C v 8.2 УП

Похожие FAQ

Еще в этой же категории

Как на управляемой форме разместить список регистра сведений с отбором? 17
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом » ДинамическийСписок» В поле » Основная табли Форма

Программное создание таблицы значений с условным оформлением 11
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Как установить параметр динамического списка? 11
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Как обновить динамический список или реквизит на форме клиента? 11
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Поле выбора

Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Читайте также:  Выскакивает окно error что это

Источник

Закрыть модальное окно программно.

Во время проведения дока открываю модальное окно обработки, чтобы выдать сообщение. Но вот надо бы его закрыть через 10 сек., если пользователь в ступоре. А не получается. Попробовал так (в форме обработки):

Код
Показать полностью

не работает. Хелп! И возможно ли без использования ВК?

В модальных формах не работает ОбработкаОжидания()
но есть решение без использования ВК.

Сhe Burashka Написал:
——————————————————-
> В проведение пихать вопрос — двойка.
> Вместо модального окна выдай
> Предупреждение(«Программер-ламер!»,60) — будет
> ждать 1 мин.
> + есть решение в формексе вроде обработку ожидания
> мождно и для модального окна

Че, ты прав, конечно. Но. Это — замут самого пользователя. Уж очень любит он такие в**боны. Решение уже найдено и внедрено. Юзверь одобрил. Оч даже понравилось ему.
Смысл в чем: во время проведения снимается профит из регистра партий и передается в эту модальную обработку, которая спрашивает, чо делать: игнорировать тек. позицию, игнорировать все, или не проводить документ вообще. А когда у него (юзверя) манагер тупит и смотрит на модальное окно как баран — база для всех в незаконченой транзакции зависла. Я это понимаю, юзверь это понимает, а вот манагер — не понимает. И мешает всем работать. Поэтому по таймауту — не проводим нафиг да и все.

ЗЫ: Когда МонопольныйРежим()=1 никаких обработок, предупреждений, сообщений и т.п. не выводится.

LiS Написал:
——————————————————-
> ЗЫ: Когда МонопольныйРежим()=1 никаких обработок,
> предупреждений, сообщений и т.п. не выводится.

ИМХО правильный замут. Это нужно для перепроведения документов и восстановления последовательности.

Но ИМХО нельзя исключать программного (пакетного) [пере]проведения документов в немонопольном режиме. Подумай об этом.

LiS Написал:
> Смысл в чем: во время проведения снимается профит
> из регистра партий и передается в эту модальную
> обработку, которая спрашивает, чо делать:
> игнорировать тек. позицию, игнорировать все, или
> не проводить документ вообще.

Я бы эту проверку вставил до проведения документа. Делается так:
В формуле кнопки Провести:
ПроверкаПередПроведением(); #Записать Провести

В модуле формы:

Код
Показать полностью

Заодно решается проблема, о которой написала poppy.

2 Сhe Burashka:
Использовать Предупреждение() или Вопрос() в процедуре проведения — еще большая засада, чем модальную форму обработки. Ибо в них тайм-аут работает только при активном окне 1С. Вредителей, которые бросают одинэску на открытых модальных окнах, и переключаются в другие приложения, достаточно.

Источник

Поделиться с друзьями