Как, по аналогии, с базами 1С 8, работащими в режиме обычного интерфейса быстро закрыть разом все вкладки или окна в интерфейсе «Такси» баз, работающих в режиме управляемого приложения.
Если происходит обновление редакции базы 1С 8, то чаще всего это приводит к тому, что изменяется интерфейс — на работающий в режиме управляемого приложения. Тогда у пользователей, ранее работавших в обычном интерфейсе, возникают вполне логичные вопросы о том, где находятся те или иные кнопки в новом интерфейсе, и есть ли они вообще.
Таким примером является кнопка функции «Закрыть все», которая в базах 1С 8, работавших в режиме обычного приложения размещалась в меню «Окна», нажатие по которой позволяло закрыть все открытые окна.
Рис. 1. Кнопка «Закрыть все» в интерфейсе обычного приложения
В современных, новых редакциях конфигураций 1С 8, интерфейс другой. И сразу найти функционал, отвечающий за закрытие всех вкладок пользователю становиться найти проблематично, если не знать, где он находиться. Отметим, что такие конфигурации обеспечивают работу в окнах, которые открываются как вкладки рабочей области окна программы.
Самая простая и нелепая ошибка в 1С восстановить положение окна
Заголовки вкладок размещены все по одной линии над рабочей областью. Можно закрыть каждую вкладку по отдельности, нажимая на крестик «X» у правого края вкладки. А можно вызвать контекстное меню, если нажать правой кнопкой мыши на любой из вкладок. И в открывшемся меню выбрать пункт «Закрыть все». Он закроет все вкладки окон, которые открыты на текущий момент.
Нажатие на изображении увеличит его
Рис. 2. Кнопка «Закрыть все» в интерфейсе «Такси»
Выше был приведен пример для управляемого режима базы 1C 8, запущенной в интерфейсе «Такси».
Ниже приведен пример для другого интерфейса, который называется «Формы в закладках», и он похож по внешнему виду на предыдущий, т.к. окна отображаются в виде вкладок, но способ закрытия всех вкладок отличается.
Рис. 3. Изменение внешнего вида интерфейса базы 1С 8 в «Параметрах»
Чтобы выполнить закрытие всех закладок необходимо перейти в подменю «Окна» «Главного меню» В подменю «Окна» переходим по кнопке «Все окна. » .
Не закрывается 20 счет: поиск ошибки с помощью ОСВ по сч. 20 (при распр-нии затрат) для 1С:УПП,КА
Нажатие на изображении увеличит его
Рис. 4. Переход к функционалу закрытия всех открытых вкладок в интерфейсе «Формы в закладках»
В отрывшемся окне «Все окна» выделяем все окна, удерживая клавишу «Shift» клавиатуры и кнопку стрелки «↓» (Вниз) или «↑» (Вверх) в зависимости от того, какой исходно пункт списка Вы выбрали — первый или последний. После того как пункты списка открытых окон выделены, нажимаем кнопку «Закрыть окна».
Рис. 5. Кнопка «Закрыть окна» для закрытие всех открытых вкладок сеанса работы 1С8 в режиме Предприятие
Пример того, как выполнить закрытие всех окон в режиме управляемого приложения 1С 8 интерфейса «Такси» или «формы в закладках», можно наглядно увидеть в видео ниже:
Или по ссылке на YouTube:
Источник: www.azhur-c.ru
Закрытие навязчивых окон 1С
Программа для закрытия навязчивых окон в 1С и других приложениях. Использую ее, т.к. часто в копиях баз, предоставляемых клиентом при работе возникают навязчивые сообщения, на закрытие которых тратится драгоценное время.
Клиенты часто предоставляют мне копии своих баз. В последнее время 1С стало выдавать много навязчивых оповещений, которые мешают мне, как разработчику. Я трачу своё время на закрытие этих ненужных мне оповещений.
Вот примеры таких оповещений:
Чтобы решить проблему раз и навсегда, я заказал программисту небольшую программку на Си, которая закрывает окна по их заголовку.
Как использовать программу
Программа называется kwnd.exe.
Заголовки окон нужно написать в файле kwnd без расширения и разместить в одной папке с kwnd.exe. Каждый заголовок должен быть с новой строки.
Для приведенных выше навязчивых окон 1С файл заголовков окон kwnd выглядит так:
Информация — Бухгалтерия предприятия, редакция 3.0 Рекомендуется обновить версию конфигурации
Программа консольная, не имеет графического интерфейса.
Программа работает в бесконечном цикле, но не завершается, проверяет список окон по таймеру. Если указать при запуске kwnd.exe числовой параметр, то очередь будет опрашиваться раз в указанное количество секунд.
Пример для запуска проверки очереди раз в секунду:
kwnd.exe 1
Второй экземпляр kwnd.exe не запускается, программа выдает предупреждение, что она уже запущена. Снять программу можно через диспетчер задач:
Программа не нагружает процессор, несмотря на то, что постоянно проверяет список окон.
Для автозапуска программы используйте команду shell:startup или shell:common startup для открытия папки автозапуска текущего или всех пользователей.
В папке разместите ярлык на программу:
После этого можно забыть о навязчивых сообщениях.
У некоторых пользователей были проблемы с работой программы, т.к. они прописывали запуск из планировщика и, возможно, программа запускалась от имени администратора, а не текущего пользователя, поэтому лучше прописывать ярлык в папку автозапуска.
Как определить заголовок программы
Обычно нет проблем визуально определить заголовок окна. Но иногда нужно получить точное название.
Для точного определения заголовка я использую Au3Info.exe от программы AutoIt.
Ее можно получить после установки AutoIT. Или скачать отдельно, она работает и отдельно от пакета AutoIt.
Также можно использовать AU3_Spy из пакета AutoHotKey и множество других подобных программ.
Получить программу
Исходный код программы:
#pragma hdrstop #pragma argsused #ifdef _WIN32 #include #else typedef char _TCHAR; #define _tmain main #endif #include #include #include #include #include #include // подключаем строки #include // подключаем файлы #define NAME_CONSOLE «myConsole» using namespace std; HWND hWnd; HANDLE mutex;//Глобальный хендл мютекса int _tmain(int argc, _TCHAR* argv[]) //При открытии программы пытаемся создать мютекс. //Мютекс — такой объект, который можно увидеть из любого приложения системы mutex=CreateMutex(NULL,true,»kWnd»); DWORD result; result = WaitForSingleObject(mutex,0);//А теперь пытаемся его захватить себе //Если его захватить не получается, значит мютекс уже захватил кто-то другой if(result!=WAIT_OBJECT_0) cout<«the program is already running, and the second copy cannot be started»; Sleep(5000); exit(-1); > FreeConsole(); // переменная для сброса строки, прочитанной из файла.
// Используется в ходе подсчета строк в файле, больше ни для чего не нужна string AS; // определим количество строк в файле в переменной i int i=1; ifstream file(«kWnd»); while (getline(file, AS)) i++; > if (i 0) cout <«Файл пуст» ; return -1; > // Динамическое выделение памяти для массива s string *s; s=new string[i]; // запишем все строки в массив, чтобы постоянно не ходить на диск // Заполнение массива s значениями строк из файла file.clear(); file.
seekg(0, std::ios::beg); for (int k = 1; k i; k++) getline(file, s[k]); > file.close(); // обязательно закрываем файл что бы не повредить его // . поехали . char str[1024]; while (1) for (int k = 1; k i; k++) strcpy(str,s[k].c_str()); hWnd = FindWindow(NULL, _T(str)); if(IsWindow(hWnd)) SendMessage(hWnd,WM_SYSCOMMAND,SC_CLOSE,0); > > if (argc>0) Sleep(argc*1000); > //При выключении программы освобождаем мютекс, если он был у нас захвачен ReleaseMutex(mutex); //И удаляем его. CloseHandle(mutex); delete[] s; return 0; >
Источник: geniy1s.ru
Как в управляемых формах закрыть все окна (хождение по мукам)
В управляемых формах 1С v8.3 не всё так просто, как было в обычных формах и, зачастую, требуются более сложные действия, чтобы выполнить «простейшее» для «старого» интерфейса действие.
- Как это было в обычных формах:
- Цепочка действий
- Программное закрытие всех форм
- Резюме:
Как это было в обычных формах:
Меню «ОкнаЗакрыть всё» …. и всё — все окна моментально закрыты! (кроме случаев когда есть модифицированность формы, либо есть обработчик запрещающий закрытие либо закрытие без подтверждения)
Теперь же у нас передовая технология «Такси» — «потому что быстрая»).
Цепочка действий
Выходим в меню/Окна/Все окна (уже 3 нажатия, но это еще не всё)
Часть вторая «Сдвинуть мышь вправо, найти кнопку «Закрыть окна» и нажать, …… и нет не всЁ. Потому что закроется только одно выделенное — текущее окно.
Нажимаем «Выделить все» — это если горячими клавишами «Ctrl+A», либо встать на верхний и через Shift и движением стрелкой вниз выделить все (все строки должны стать желтыми), а любителям мышкой, никак…. только по одному
Затем уже нажимаем «Закрыть окна» и ….. интерфейс поворочался 2-3 секунды, но закрыл окна.
Остались в списке два окна и окно диалога не закрылось — еще одно лишнее действие по его закрытию.
Программное закрытие всех форм
Окна = ПолучитьОкна();
Для Каждого Окно Из Окна Цикл
Если Не Окно.Основное Тогда
Для каждого Форма из Окно.Содержимое Цикл
Форма.Закрыть();
КонецЦикла;
КонецЕсли;
КонецЦикла;
Этот код закроет все окна кроме файлов созданных средствами 1С: текстовых,табличных документов, открытых через Показать() .
С версии 8.3.8 при закрытии нельзя вызывать серверные процедуры, данный вариант закрытия всех ПередЗавершениемРаботыСистемы в приложении не позволяет обойти ошибку.
Система понимает, что ты уже в стадии закрытия и сообщение выходит, в момент Форма.Закрыть(); хотя верилось что можно обойти без доработки всех форм.
Резюме:
Посчитайте сами: сколько лишних действий по банальному закрытию всех окон.
В некоторых случаях будет достаточно несколько раз нажать «Esc» и окна последовательно закроются, но это тоже не 3 клика.
Я не удивлюсь, что есть «волшебная» команда, которая позволяет, это сделать быстрее, но даже если она и существует, то не «интуитивно» понятна — и не на поверхности, как должна быть в «совершенном» интерфейсе.
Люди кончают самоубийством оттого, что получают по почте одну рекламу.
— Фредерик Бегбедер
Источник: capitally.ru