INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Сорокин Сергей | Ведущий программист 1С | МоскоуСофт

«Удаленные сотрудники: учет и систематизация работы»

Многие среди нас имеют возможность самостоятельно выбирать, как работать над проектами. И часто при ограниченных времени и бюджете есть возможность привлечь к сотрудничеству удаленного специалиста высокой квалификации. Без личной встречи, без подробного анализа резюме или даже возможности выдать тестовое задание ­ как можно безопасно привлечь к работе нового человека? Причем сделать это так, чтобы минимизировать свои риски, решить задачу за приемлемый срок и найти себе в команду нового сотрудника. План: ­- Бюджет. Как понять, что удаленный специалист не понимает задачу? Когда фрилансер обойдется дороже штатного специалиста? ­- Поиск и экспресс­проверка квалификации. Незнакомый фрилансер сразу назвал цену и сроки – когда это должно насторожить? ­- Организация контроля. Автоматические способы контроля и «ручные». ­- Системы мотивации. Особенности нематериальных систем мотивации удаленных сотрудников. - Информационная безопасность. Вы уверены, что фрилансер не скопирует себе архив базы клиента? ­- Оценка результатов работы. Простая система оценки удаленных сотрудников. ­- Системы учета. Компетенции, ответственность, культура общения и поведения, интеллект.

ActiveX контейнер для управляемого интерфейса системы 1С:Предприятие

Программирование - Внешние компоненты

30
Внешняя компонента "ControlContainer" для платформы "1С:Предприятие" v.8.2, 8.3, реализующая размещение ActiveX объектов на управляемых формах системы 1С:Предприятие.

   Как известно, компания 1С лишила разработчиков возможности размещения ActiveX объектов на управляемой форме. Обходные пути, конечно же есть, они неоднократно были описаны в публикациях, например, в этой - //infostart.ru/public/61064/. Но все они сводятся к вставке элементов управления в поле HTML документа, что лишь частично удовлетворяет потребность в их использовании. Большой минус такого подхода - понижение уровня безопасности в свойствах Internet Explorer'a.
   И вот возникла идея написать контейнер ActiveX объектов для управляемых форм. Решение, представленное в публикации, является на данный момент единственной альтернативой размещения ActiveX объекта вне поля HTML документа.
   Работа с компонентой очень проста, поскольку компонента имеет всего лишь два метода (описание приемов работы с компонентой продемонстрировано в приложенных обработках). Всё остальное делает платформа 1С:Предприятие.

Примечание: в версиях платформы 1С:Предприятие выше 8.3.11 изменились классы окон, поэтому на этих платформах следует использовать в качестве окна для контейнера элемент с типом ФорматированныйДокумент, а в функцию УстановитьActiveX в качестве второго параметра передавать значение 1 или использовать альтернативную функцию ВставитьActiveX. Подробности см. в справочной системе внешней компоненты.

P.S. Поскольку компонента выполнена по технологии COM, она должна быть зарегистрирована утилитой regsvr32.exe с правами администратора. 
Реализация внешней компоненты - 32-битная, соответственно и клиент 1С:Предприятия, к которому будет подключаться компонента, также должен быть 32-битный.

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

 

Не для коммерческого использования (см. лицензионное соглашение).

  

30

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

Наименование Файл Версия Размер
ActiveX контейнер для управляемого интерфейса системы 1С:Предприятие (архив)
.zip 59,15Kb
14.08.18
91
.zip 2.3 59,15Kb 91 Скачать
ActiveX контейнер для управляемого интерфейса системы 1С:Предприятие (установочный файл)
.ZIP 321,76Kb
14.08.18
0
.ZIP 2.3 321,76Kb Скачать

См. также

Комментарии
Сортировка: Древо
1. Ksu 23.09.14 16:17 Сейчас в теме
Есть вопрос по использованию данной компоненты.
Каким образом ее публиковать в системе? через regsvr32 выдается ошибка и соответственно дальше дело не идет
Сделала стандартным способом архив компоненты с манифестом.
Установка проходит, а компонента не подключается.
код инициализации пишу такой:
	Try      
		AttachAddIn("CommonTemplate.MGS_CtrlCont","CtrlCont");
		ObjectVK = New ("AddIn.CtrlCont.ControlContainer");
	Except
		Try
			InstallAddIn("CommonTemplate.MGS_CtrlCont");
			AttachAddIn("CommonTemplate.MGS_CtrlCont","CtrlCont");
			ObjectVK = New ("AddIn.CtrlCont.ControlContainer");
		Except
			Message("Внешняя компонента ControlContainer не установлена!");
		EndTry;
	EndTry;

Показать
2. premier 160 23.09.14 16:51 Сейчас в теме
А какая именно ошибка выдаётся при регистрации через regsvr32?
В какой ОС пытаетесь регистрировать?
Какая разрядность у операционной системы?
Не зная всего этого, я не смогу Вам подсказать.
3. Ksu 23.09.14 17:05 Сейчас в теме
(2)
С регистрацией в системе разобралась. Надо было запустить регистрацию от администратора.
Собственно система win7
Хочется автоматизировать установку у пользователей
4. premier 160 24.09.14 10:58 Сейчас в теме
Windows 7 упрямая операционка в плане безопасности.
Попробуйте в каталог с компонентой поместить .bat или .cmd файл, содержащий вызов: regsvr32.exe CtrlCont.dll
и уже его запускать от имени администратора. По крайней мере запустить файл проще, чем писать в командной строке.
5. kolayuk 18.12.14 11:29 Сейчас в теме
Здравствуйте, не могли бы вы предоставить исходники данной компоненты? Есть задача интегрировать свое окно в существующую форму 1С, через FindWindowEx это сделать проблематично, тк там куча окон с одинаковыми классами у всех ЭУ, нужно хотя бы получить HWND конкретной формы, очень интересно как вы это решили. Собственно интересуют даже не столько исходники конкретной компоненты, сколько технология создания своих элементов управления. Спасибо! Мои контакты: kolayuk at gmail.com
6. premier 160 18.12.14 14:17 Сейчас в теме
(5) Здравствуйте. Если бы Вы внимательно прочитали публикацию, Вы, наверняка, уже давно реализовали бы свою задачу. В описании есть несколько моментов, которые явно указывают на механизм поиска окна на управляемой форме.
ТипПоляФормы (обязательный)
Тип: Число.
Тип элемента формы, в который будет вставлен элемент управления.
Возможные значения:
0 - поле диаграммы (Диаграмма, ДиаграммаГанта, Дендрограмма)
1 - поле форматированого документа, поле HTML документа.


Поиск, соответственно, и производится по дочерним окнам формы с указанными классами.
Чтобы компонента могла правильно разместить элемент управления в поле формы,
следует размещать на форме только одно поле с указанным типом, иначе элемент
управления будет размещен в произвольном поле с подходящим типом,
не занятом другим элементом управления.


А по поводу технологии создания своих элементов управления, если Вы, конечно, имеете ввиду внешнюю компоненту, которой, собственно и является ActiveX контейнер, есть масса информации на дисках ИТС. С описанием и примерами.
7. qwsachka 21.05.15 03:09 Сейчас в теме
Здравствуйте Premier !

Использование вашего контейнера позволит использовать любые ActiveX , которые зарекомендовали себя в обычных приложениях ?

Меня интересует Перехватчик клавишь , которым я пользовался на 8.1 . Подключить его в ваш контейнер не удалось .

Имеется ли у вас пример работы с перехватчиком клавишь , подобно данной публикации ? Мне нужно получать событие нажатия клавиши Enter , когда я пишу что-нибудь в Форматированном документе .
8. premier 160 27.05.15 16:15 Сейчас в теме
(7) qwsachka, отвечу по порядку:
Использование вашего контейнера позволит использовать любые ActiveX , которые зарекомендовали себя в обычных приложениях ?
Я тестировал контейнер на ActiveX объектах как сторонних производителей, так и разработанных мной. Все работали.

Меня интересует Перехватчик клавишь , которым я пользовался на 8.1 . Подключить его в ваш контейнер не удалось .
Если Перехватчик - это ActiveX объект, то должен был подключиться.

Имеется ли у вас пример работы с перехватчиком клавишь , подобно данной публикации ? Мне нужно получать событие нажатия клавиши Enter , когда я пишу что-нибудь в Форматированном документе .
В принципе, реализовать такой Перехватчик вполне возможно (я даже писал ВК с похожим функционалом для 1С 7.7). Но вот привязать его к какому-то конкретному элементу на управляемой форме будет достаточно проблематично.
9. nay2k 29.07.15 15:20 Сейчас в теме
Здравствуйте, premier.
У меня следующая проблема. Мне нужно подключить ActiveX компоненту по работе со считывателем смарт-карт (Сайт компоненты - http://www.scardsoft.com/main.php3?Theme=SCardX).
Подключаю ее вот таким образом:
 SCardX_Easy = Контейнер1.УстановитьActiveX("SCardXEasy.SCardX_Easy", 1);

Компонента подключается, располагается на форме и я ее вижу как СomОбъект.
Далее мне нужно заполнить некоторые свойства компоненты. При этом в компоненте происходят некоторые манипуляции(отключение от ридера, что конкретно происходит внутри - не знаю
После выполнения следующего кода
SCardX_Easy.SmartCardService = 1

1с прерывает отладку, дальнейший код не выполняется и 1с вываливается с ошибкой платформы при любом действии.
В неуправляемой форме подобной ошибки не возникает, правда там не СomОбъект создается, а ActiveX родным методом подключается.
10. premier 160 31.07.15 11:20 Сейчас в теме
(9) nay2k, ActiveX и Сom - это разные названия одной и той же технологии, раньше такие объекты OLE назывались, так что создаются объекты, разработанные по одной и той же технологии. Вообще, странно, конечно, что-то, не то видимо с контейнером. Хотя я массу ActiveX объектов на ней тестировал. И своих и от Microsoft как на скриншоте. Ничего не падало. И события отрабатывались корректно. Может, в платформе 1С дело? Я отлаживал на 8.2 (разные подрелизы) и на 8.3.5.1098. Вы на какой платформе 1С SCardX_Easy подключали? Мне так кажется, что дело в платформе 1С. У меня есть элемент управления web-камерой, который преспокойно работает на всех платформах 1С, которые я использовал и вот сообщение, что на управляемой форме платформа падает (там тоже использовался контейнер)! Поставлю самый последний релиз 8.3, потестирую.
11. premier 160 31.07.15 11:43 Сейчас в теме
Кажется понял. Ошибка вываливается в тонком клиенте. Причем на платформе 8.3.6, в 8.3.5 всё работает...
12. nay2k 03.08.15 12:09 Сейчас в теме
(11) Да именно в тонком клиенте. Версия платформы - 8.3.4.437. Т.е ошибка именно из-за платформы?
Спасибо, вас и за контейнер и за ответы! На этот раз мне проще было переписать обработку под толстый клиент, но в дальнейшем надеюсь пригодится.
13. pp77 28.08.15 09:45 Сейчас в теме
Добрый день!
Если регистрировать в реестре через regsvr32 и подключать
ПодключитьВнешнююКомпоненту("AddIn.ControlContainer")

компонента работает великолепно

Но это не удобно, т.к. придется регистрировать на каждом клиенте.

Попытался сделать так:
УстановитьВнешнююКомпоненту("ОбщийМакет.ActiveX_UF");


ОбщийМакет.ActiveX_UF это макет (двоичные данные) в который загружен архив zip содержащий:

1. файл манифеста "MANIFEST.xml" :

<?xml version="1.0" encoding="UTF-8"?>
<bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
<component os="Windows" path="CtrlCont.dll" type="Com" arch="i386"/>
</bundle>
2. сама dll

УстановитьВнешнююКомпоненту отрабатывает на ура, но подключить не удается, строка подключения:
ПодключитьВнешнююКомпоненту("ОбщийМакет.ActiveX_UF","ControlContainer")
возвращает ложь
можете подсказать в чем может быть причина.?
Спасибо.
14. premier 160 28.08.15 10:55 Сейчас в теме
(13) pp77, дело в том, что регистрировать компоненту в любом случае придётся "От имени Администратора". Я так думаю, не все пользователи имеют такие права, поэтому из макета они просто не смогут зарегистрировать компоненту, не имея соответствующих прав. Предлагаю воспользоваться способом, описанном в посте 4.
15. pp77 31.08.15 12:28 Сейчас в теме
Добрый день
На платформе 8.3.6, компонента не стабильно работает (управляемый интерфейс), часто 1С вываливается (например при закрытии обработки) Вы писали об этом в п.11. Будете ли Вы оптимизировать под 8.3.6?
Спасибо
16. premier 160 31.08.15 14:57 Сейчас в теме
pp77, Я написал в конце публикации, что исправил эту ошибку. При тестировании использовал самую последнюю версию платформы, которая была доступна на начало августа 2015 г.
Точно версию платформы не помню, но не ниже 8.3.6.2076. Причём тестировал на разных OS. Нестабильности не заметил. Вы как давно файл скачивали?
17. pp77 02.09.15 09:40 Сейчас в теме
(16) premier\
Качали 26.08.2015,
Дата dll 11.08.2015
тестировали на 8.3.2041
попробуем под "совсем последней" платформой 8.3.2237
18. premier 160 02.09.15 11:21 Сейчас в теме
(17) pp77, мне кажется не в платформе дело. Возможно, проблема в ActiveX элементе, который Вы пытаетесь использовать совместно с контейнером. Я протестировал не меньше десятка ActiveX объектов. Последовательно вызывал их методы, изменял свойства, инициировал события. Закрывал форму, на которой расположен контейнер, снова открывал, закрывал 1С без закрытия формы - не было краха системы! Может, вышлете Вашу обработку с ActiveX объектом, естественно, для тестирования?
19. pp77 08.09.15 12:18 Сейчас в теме
(18)
Добрый день!
Спасибо, прошу прощения за задержку с ответом.
Обработку прикладываю. Для установки компоненты AcniveX достаточно поставить демо версию системы Zulu:
Zulu (в самом внизу страницы ссылка, под скачать)
После установки, в обработке в процедуре ОбработчикОжиданияОткрытияФормы() нужно поправить путь к zmp файлу (это необходимо для Active X объекта). По умолчанию , если установите ZUlu по этому пути, сразу все должно работать:
C:\Program Files (x86)\Zulu 7.0\
Как воспроизвести:
Вариант 1: После открытия обработки и отображения карты "ткнутся" на любой объект карты - 1С закрывается. Воспроизводится почти всегда
Вариант 2: После открытия обработки и отображения карты , ввести ИДОбъекта (поле сверху слева)= 29. Повыбирать на карте объекты (закрываться не будет). Закрыть обработку, повторить сначала. Раза с 3-его 1С вылетает.
Пробовал на последнем релизе 2237 и 2041. На 32битных 64битных ОС.
Прикрепленные файлы:
ВзаимодействиеСZula.epf
20. premier 160 08.09.15 16:46 Сейчас в теме
(19) pp77, действительно, не работает ни в тонком клиенте, ни в толстом. Будет время - потестирую. А на обычных формах пробовали запускать? Сам ActiveX - то хоть рабочий?
21. pp77 09.09.15 04:13 Сейчас в теме
(20)
Добрый день!

Да на в обычном приложении все работает замечательно.
Прикладываю обработку для обычного приложения, с внедренным Active X типовым способом.
Подключение карты в процедуре ПриОткрытии также сделано по умолчанию:C:\Program Files (x86)\Zulu 7.0\
Спасибо
Прикрепленные файлы:
Пример взаимодействия с Зулу 7_ОбычноеПриложение.epf
22. premier 160 09.09.15 11:43 Сейчас в теме
(21) pp77, вот что я заметил при тестировании:
Если в процедуре ВыборОбъекта() заменить фрагмент кода
ИДОбъекта = ЭлементУправления1.CurrentID; // именно в этом месте платформа "падает"
на
ИДОбъекта = Число(ЭлементУправления1.CurrentID);
программа перестаёт "падать". Видимо, платформа не распознаёт тип значения CurrentID, хотя в отладчике тип указывается как число.
Причём обратное преобразование
ЭлементУправления1.CurrentID = ИДОбъекта;
происходит вполне корректно. Вот такая загадка платформы 8.3...


23. pp77 10.09.15 04:57 Сейчас в теме
(22)
Добрый день!
Применили Ваши рекомендации
"Вариант 1: После открытия обработки и отображения карты "ткнутся" на любой объект карты - 1С закрывается. Воспроизводится почти всегда " - "исправился"
но если открыть обработку (с подгрузкой карты) закрыть, открыть заново, закрыть, открыть - "Падение 1С"
Т.е. стабильно с 3 раза "падает 1С".

24. premier 160 10.09.15 14:27 Сейчас в теме
(23) pp77, действительно, "падает 1С" при повторном открытии обработки. Но только с объектами Zulu. Обработка, приложенная, как пример использования, открывается сколько угодно раз. Я раз 20 открывал-закрывал эту обработку и это не приводило к падению 1С. Очевидно проблема в объекте Zulu, потому как контейнер, содержащий другие ActiveX объекты, при многократном открытии не приводит к краху системы.
25. premier 160 10.09.15 14:34 Сейчас в теме
(23) pp77, попробовал изменить Вашу обработку таким образом: контейнеры в ней создаются, но ActiveX объекты не устанавливаются. Обработка запускается множество раз и не "роняет" 1С. Стало быть, вывод сам собой напрашивается - дело не в контейнере, а в элементе управления.
26. pp77 11.09.15 06:45 Сейчас в теме
(25)
Добрый день!
Спасибо. Будем связываться с разработчикам Zulu.
27. pp77 01.10.15 08:10 Сейчас в теме
Добрый день!
Получили ответ от разработчиков Zulu (они воспроизвели у себя ситуацию):
В сценарии работы формы получается так, что при закрытии формы элемент MapCtrl высвобождается раньше, чем объект connection point на IPropertyNotifySink, который форма-контейнер у него запросила. Стандартный сценарий подразумевает, что сначала высвобождаются запрошенные объекты у элемента, а потом уже сам элемент. Если элемент вставляется на форму через «прослойку», то тогда в этом коде нужно убедиться, что все connection point закрыты, прежде чем элемент будет высвобожден.
28. premier 160 01.10.15 16:52 Сейчас в теме
(27) pp77, Немного подправил код внешней компоненты. Сейчас обработка открывается - закрывается множество раз без "падения системы". Скиньте в личку e-mail. Я вышлю Вам ВК для тестирования.
29. pp77 02.10.15 08:22 Сейчас в теме
Добрый день!
Скинул в личку мой адрес
Спасибо.
30. pp77 05.10.15 11:23 Сейчас в теме
Добрый день!
Спасибо проблема решена
31. pp77 06.10.15 06:01 Сейчас в теме
Добрый день!
Обнаружил все же недочет, в рамках сеанса 1С все работает корректно, но при закрытии 1С, 1С закрывается с ошибкой.
Имя события проблемы: APPCRASH
Имя приложения: 1cv8c.exe
Версия приложения: 8.3.6.2299
Отметка времени приложения: 55f16760
Имя модуля с ошибкой: ntdll.dll
Версия модуля с ошибкой: 6.1.7601.18933
Отметка времени модуля с ошибкой: 55a69e20
Код исключения: c0000005
Смещение исключения: 00051365
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
32. premier 160 06.10.15 08:28 Сейчас в теме
(31) pp77, а какие объекты Zulu подключаете, те же, что и в выложенных ранее обработках?
33. premier 160 06.10.15 08:34 Сейчас в теме
(31) pp77, не удалось воспроизвести ошибку. Несколько раз в течение сеанса открывал - закрывал обработку. Потом закрыл приложение. Всё нормально отработало.
34. pp77 06.10.15 11:47 Сейчас в теме
Да обработка "не валит" 1С. Возможно, что то не то сделали в функционале (будем смотреть) по результатам, отпишусь.
35. Maxis 13.09.16 09:33 Сейчас в теме
Компонента CtrlCont.dll успешно установлена. Но на Windows 10 при открытии обработок из архива сразу пишет:

SetActiveX : Неудачная попытка создания
элемента управления
MSDataGridLib.DataGrid.1.

SetActiveX : Неудачная попытка создания
элемента управления
MSChart20Lib.MSChart.2.

SetActiveX : Неудачная попытка создания
элемента управления
MSCAL.Calendar.7.

36. premier 160 14.09.16 14:01 Сейчас в теме
(35) Maxis, Все эти элементы управления - стандартные из поставки Windows 7 и взяты только для примера. В Windows10 ProgID этих элементов может быть другим, а может и элементов самих не быть.
Попробуйте вставить любой другой известный Вам элемент управления.
37. premier 160 14.09.16 14:21 Сейчас в теме
(35) Maxis, кстати, позвольте поинтересоваться: откуда у Вас эта внешняя компонента? В списке скачавших файл Вашего nick-name'а нет...
38. tomasian 23.09.16 14:23 Сейчас в теме
при попытке Контейнер1.УстановитьActiveX("Excel.Application.16", 1); умирает 1с
стоит win 10 x64, excel 2016, 1c 8.3.8.2027 также пробовал на excel 2013 по реестру смотрел PRogID корректный
39. premier 160 26.09.16 08:56 Сейчас в теме
(38) tomasian, к сожалению, протестировать не могу - OpenOffice у меня установлен.
40. tomasian 26.09.16 14:52 Сейчас в теме
(39)
проблема решена - у Excel не было ActiveX контрола. Excel.Application - контролом не является.
Установил "Надстройка Office 2003: веб-компоненты Office" (в ней есть нашелся контрол: "OWC11.Spreadsheet.11").
Заработало.

Советую, кстати, простую утилиту, которая показывает все установленные компоненты, их ProgID и являются они контролами или нет
http://www.nirsoft.net/utils/axhelper.html
41. premier 160 26.09.16 15:14 Сейчас в теме
(40) tomasian, я, в принципе, это и предполагал, но, поскольку у меня установлен OpenOffice, проверить не смог.
Хотя, можно было догадаться: Excel.Application - это объект OLEAutomation, не из той оперы, как говорится.
А похожая утилита входит в поставку MS Visual Studio. Но всё равно за ссылку спасибо.
42. Wladimir_spb 12.03.18 17:15 Сейчас в теме
Доброго дня, Максим

А каким образом на форму добавляются сами контролы? И можно ли таким образом добавить на форму контролы из библиотеки Windows Forms типа ListBox и TextBox
43. premier 160 13.03.18 09:29 Сейчас в теме
(42) Здравствуйте, Владимир. Элементы управления добавляются не на форму - ограничение от 1С для управляемых форм. Они встраиваются в объект ActiveX Container. На скриншотах, прилагаемых к публикации, как раз и продемонстрировано встраивание Windows ActiveX объектов в контейнер. Таким образом, внешняя компонента позволяет встраивать любые зарегистрированные в системе элементы управления.
44. Wladimir_spb 13.03.18 15:55 Сейчас в теме
Уже понял, что лист-бокс меня не спасет. В обычных формах я его юзал, вместо выпадающего списка (нужен был контроль нажатия клавиш и мышки внутри списка). А в управляемых формах даже если я это повторю, то все равно не смогу сделать из него "выпадающий" список, так чтобы он раскрывался поверх других элементов. При расширении списка он просто будет двигать другие элементы формы, а не "раскрываться" поверх.
45. premier 160 13.03.18 18:51 Сейчас в теме
(44) Не понял, в чём проблема использования? Все подписки на события элементов управления добавляются методом встроенного языка 1С: ДобавитьОбработчик <Событие>, <ОбработчикСобытия>;
. Естественно, надо будет знать количество и типы параметров, которые должен будет принимать вызываемый обработчик события.
47. Wladimir_spb 14.03.18 11:22 Сейчас в теме
(45)(46) Привязка к событиям скорее всего сработает. А вот "раскрывание" списка без смещения других элементов в УФ наверняка не получится. В обычных формах я список просто поверх других элементов накладывал и при "раскрытии" он закрывал все что оказывалось под ним. В УФ нельзя накладывать элементы друг на друга.

В любом случае спасибо за разъяснения
46. premier 160 14.03.18 10:44 Сейчас в теме
(44)
А в управляемых формах даже если я это повторю, то все равно не смогу сделать из него "выпадающий" список, так чтобы он раскрывался поверх других элементов. При расширении списка он просто будет двигать другие элементы формы, а не "раскрываться" поверх.

А вот здесь подсказать ничего не могу - не тестировал.
Оставьте свое сообщение