gifts2017

Внешняя компонента для управления главным окном 1С:Предприятие

Опубликовал Евгений (le_) в раздел Программирование - Внешние компоненты

Маленькая внешняя компонента для управления главным окном 1С:Предприятие версии 8.2.

Компонента может быть полезной, программистам, использующим в решениях на 1С окна и диалоги других приложений Windows.

Например, при программном открытии документов MS Office или использовании диалогов, вызываемых из WSH, окно 1С может терять фокус или видимость. Вернуть их можно будет с помощью этой компоненты.

Компонента разработана по технологии Native. Размер всего 12 кб.

Работает только в Windows с 1С v. 8.2 (обычное приложение, толстый и тонкий клиент управляемого приложения).

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


Методы компоненты

Метод Русский синоним Действие
Minimize   Свернуть Сворачивание окна в панель задач
Maximize   Развернуть Разворачивание окна во весь экран
Hide       Скрыть Сокрытие главного окна 1С
Show       Показать Показ главного окна 1С (после скрытия)
ShowNormal РазвернутьВОкно Показ окна в неполноэкранном режиме
MoveOnTop  ПереместитьНаПереднийПлан Перемещение окна на передний план
SetAlwaysOnTopOn ЗакрепитьПоверхВсехОкон Закрепление окна поверх всех окон (только для обычного приложения)
SetAlwaysOnTopOff СнятьЗакрепление Снятие закрепления (только для обычного приложения)
CloseMessages ЗакрытьОкноСообщений Закрытие окна сообщений
CloseAllChildForms ЗакрытьВсеДочерниеФормы Закрытие всех дочерних форм главного окна 1С (только для обычного приложения)

 

 

 

 

 

 

 

 

 

Скачать файлы

Наименование Файл Версия Размер
Внешняя компонента для управления главным окном 1С (архив rar) 28
.rar 42,03Kb
19.02.15
28
.rar 42,03Kb Скачать
Только компонента, без конфигурации. Эта компонента включает в себя необходимые библиотеки MS Visual Studio (см. комментарий 15). 11
.rar 45,73Kb
19.02.15
11
.rar 45,73Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Spektr Тунда (Spektr) 01.05.12 11:58
Не могу распаковать архив.
Выдает сообщение:
"Неизвестный метод в 1Cv8.1CD
Неизвестный метод в MWC.dll
Ошибка - сбой при операции"
2. Евгений (le_) 01.05.12 13:37
3. Константин Матвеев (koka) 02.05.12 10:14
Расширение функционала 1С - однозначно плюс.
Компонента работает правильно. Но столкнулся с таким моментом. Есть код (вызывается по доп. кнопке в примере):
					ПолноеИмяРабФайла = "C:\Temp\Схема локальной сети.vsd";

					ДокДляБуфераОбмена = Новый COMОбъект("Visio.Application"); 
					ДокДляБуфераОбмена.Visible = False; 
					ДокументВизио = ДокДляБуфераОбмена.Documents.OpenEx (ПолноеИмяРабФайла, 2);
					Для i = 1 По ДокДляБуфераОбмена.ActiveWindow.Page.Shapes.Count Цикл
						 ДокДляБуфераОбмена.ActiveWindow.Select( ДокДляБуфераОбмена.ActiveWindow.Page.Shapes.Item(i), 2);
					КонецЦикла;
					ДокДляБуфераОбмена.ActiveWindow.Selection.Copy();
					
					// ...  Обработка буфера обмена
					
					ДокументВизио.Close();

					ГлавноеОкно.ПереместитьНаПереднийПлан();
			//		ГлавноеОкно.Показать();
...Показать Скрыть


Открывается документ Visio, копируется содержимое в буфер обмена для дальнейшей обработки, закрывается документ.
Фокус убегает на окно, открытое ПЕРЕД вызовом Главного Окна 1С. Методы компоненты MWC.dll отрабатывают, но не перемещают окно 1С на передний план. Скорее всего что-то в Windows сдвигается. Было бы здорово, поправить этот нюанс.
Прикрепленные файлы:
Схема локальной сети.vsd
4. Евгений (le_) 02.05.12 10:19
(3) koka, вечером попробую воспроизвести, доработаю.
5. Евгений (le_) 03.05.12 01:30
(3) koka, попробуйте обновленную компоненту.
6. Константин Матвеев (koka) 03.05.12 09:46
(5) le_, Попробовал.
1. В XP: Первый раз основное окно 1С (вызванное из конфигуратора) переместилось на передний план после вызова и закрытия Visio. Однако после этого не получалось (кроме одного раза) разными ухищрениями: на переднем плане остаётся приложение, бывшее активным ДО вызова приложения на 1С. А на панели задач кнопка управления окном 1С помигала и осталась подсвеченной (просится нажать на неё).
2. В 7-ке: Работает стабильно. Может и первый вариант работал стабильно? Я не пробовал.

Выводы: Обработка хорошая, дорабатывать для ХР смысла видимо нет - особенности операционки.
7. defini (defini) 03.05.12 11:04
Эх.. такое бы для подчиненных окон внутри самой 1с...
8. Евгений (le_) 03.05.12 11:16
(6) koka, да, я ваш пример под Win7 тестировал. Чуть позже под XP попробую допилить...
9. Евгений (le_) 27.02.13 12:16
Компонента обновлена. Добавлен метод для закрытия окна сообщений.
10. Юрий Осипов (yuraos) 27.02.13 18:33
Люблю всякие интерфейсные фишки!
А нельзя как-нибудь еще управлять и внутренними окнами 1С-ки
наподобии ВК FormEx.dll которая для 1с-7.7 ???

Меня в частности интерисует возможность изменения
места положения окна формы.

У форм есть свойства Ширина и Высота, которые можно изменять.
А вот свойств Лево и Верх к сожалению нет.

А так хочется иногда открыть форму в определенном месте,
например, выравнять по какому-нибудь элементу другой формы.
11. Лев Корл (lev6975) 04.08.14 08:19
Помню, пару лет назад, скачал какую - то компоненту, которая позволяла управлять, к примеру, прозрачностью главного окна программы - шутковали у клиентов - бух базу открывает, а она на дисплее бледнеет и полностью растворяется:-)))))))))))))))))))))
Вот, как называется эта dll, запамятовал... Там ещё можно было вывести аналоговые часы на раб.стол 1с...
Если помнит кто эту компоненту, то как она называется?Отсюда и качал, по - моему, откуда - то...
12. Евгений Долиновский (Dolly_EV) 15.10.14 14:56
13. Мурат Жананов (murat_) 18.02.15 23:13
Добрый день! Есть вопросы по данной компоненте:
1) Кто-нибудь проверял работу данной ВК под ОС x64 ? Пробовал запустить на Server 2008 х64 - компоненту подключает, но не создает объект "Addin.MWC.MainWindowCommander", выдает ошибку "Тип не определен (Addin.MWC.MainWindowCommander)". На Windows 7 х32 все нормально работает.
Есть в планах у автора доработать компоненту для х64 систем ?
2) Вопрос автору, чем вызвано ограничение метода "SetAlwaysOnTopOn" только для обычного приложения ?
Есть возможность доработать для управляемого приложения ?
14. Евгений (le_) 19.02.15 10:02
(13)
Вопрос автору, чем вызвано ограничение метода "SetAlwaysOnTopOn" только для обычного приложения ?

Использование этого метода становится неудобным в режиме предприятия, при использовании управляемого приложения, при установке свойства Сервис - Параметры - Режим открытия форм - В отдельных формах.

Работу компоненты под х64 проверю...
15. Евгений (le_) 19.02.15 11:13
(13) Описанная вами проблема на Server 2008 х64 связана с отсутствием там библиотек среды MS Visual Studio, используемых в компоненте.
Для решения проблемы либо установите Распространяемый пакет Visual C++,
либо скачайте вариант компоненты с включенными в неё необходимыми библиотеками (размер компоненты в этом случае уже увеличивается до 103 кб). Смотрите раздел с файлами в этой публикации.
16. Мурат Жананов (murat_) 20.02.15 22:59
le_, благодарю за быстрый ответ!
(14)
Может конечно ошибаюсь, но просто подумал, зная хендл отдельного окна УФ, наверно можно было бы применить те же настройки к текущему окну как и для главного?
(15)
Пакет VC++ я уже устанавливал до этого. Без него моя ВК не подключалась совсем, ОС выдавал ошибку, что нет библиотеки msvcr120.dll.
Обновленная ВК заработала сразу на Windows Server 2008 R2 Standart, большое спасибо!
А за вариант компоненты с включенными в неё необходимыми библиотеками еще отдельно спасибо.
17. Мурат Жананов (murat_) 20.02.15 23:02
В таблице методов ошибка или действительно метод так называется "ПеременститьНаПереднийПлан" ?
18. Мурат Жананов (murat_) 20.02.15 23:26
После некоторых манипуляций с методами компоненты уже хотя бы удалось активизировать окно на передний план после открытия. До этого в Windows 7 окно просто "мигало" в панели задач и не активизировалось. В идеале конечно хотелось бы закрепить поверх остальных окон всегда.
19. Мурат Жананов (murat_) 20.02.15 23:35
Использование этого метода становится неудобным в режиме предприятия, при использовании управляемого приложения, при установке свойства Сервис - Параметры - Режим открытия форм - В отдельных формах.

Смотря какая задача решается. Для меня, например, необходимо скрыть главное окно и показать УФ обработки, закрепив его поверх остальных. Мне кажется, можно было бы закрепить главное окно, открыть УФ в режиме "БлокироватьВесьИнтерфейс", скрыть главное окно. Либо еще лучше, сразу закрепить УФ обработки, а главное - скрыть не показывая сразу.
20. Евгений (le_) 21.02.15 12:36
Может конечно ошибаюсь, но просто подумал, зная хендл отдельного окна УФ, наверно можно было бы применить те же настройки к текущему окну как и для главного?

Можно, конечно, но в моем случае управляется именно главное окно.

В таблице методов ошибка или действительно метод так называется "ПеременститьНаПереднийПлан" ?

Это была опечатка здесь, в описании. Поправил.
21. GoGi SmIr (orlovskiy-a) 03.07.15 14:09
Добрый день. Скачал и первый и второй вариант dll, но в сожалению не могу их зарегистрировать. Пробовал через regsvr32 пишет что точка входа DllRegisterServer не найдена, если с ключами i n то точка входа dllInstall не найдена. Если через regasm, то error RA0000 сбой при загрузке из-за недопустимой сборки .net. Подскажите что делать. Пробовалось на win 7 64 и 86 и win2008r2.
22. Евгений (le_) 03.07.15 17:47
(21) orlovskiy-a, это native-компонента, её не нужно регистрировать.
23. Денис Вовк (CyberWo1f) 27.10.15 14:39
А можно узнать, как в С++ получить хендл главного окна 1С?
Тоже пишу компоненту, но в С++ не силен, просто интересно, как это сделать.
24. Евгений (le_) 27.10.15 19:33
(23) CyberWo1f, ответил личным сообщением.
25. Seva __ (seva1405) 15.11.15 18:09
а куда ее нужно положить? никак не получается пишет {Обработка.ПримерРаботыСКомпонентой.Форма.Форма.Форма(22)}: Тип не определен (Addin.MWC.MainWindowCommander)
26. Seva __ (seva1405) 15.11.15 20:58
27. Den (Dvornik) 12.04.16 11:02
Один вопрос, она остаётся в папке. Как её удалить потом?
28. Евгений (le_) 12.04.16 14:40
29. Den (Dvornik) 13.04.16 08:42
(28) le_, Ошибка при вызове метода контекста (УдалитьФайлы): Ошибка удаления файлов: Ошибка доступа к файлу
30. Den (Dvornik) 13.04.16 08:59
Отвечу сам. Всё оказалось проще. Методов отключения нет, поэтому присвоил Неопределено.

ГлавноеОкно=Неопределено;
	Попытка
		УдалитьФайлы(Местоположение);
 ..... и т.д.

Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа