(1) fishca,
Всё работоспособно, но раз, насколько помню, в минуту, появляется окно заставки компоненты
И ограничено количество запусков метода ВызватьМетодDLL за один сеанс
(5) alexk-is,
дык научись ПРОСТО ВК писать, оно потом и для 1С автоматом получится :)))
для начала можешь вот с этой потренироваться http://infostart.ru/public/86142/, а ее методы можешь из MiracleNative вызывать
(0)
Аркадий (Abadonna).
Какие ещё преимущества "Native" (кроме двух, тобой упомянутых) в сравнении с "COM" ?
Интересует, именно, твоё мнение. Документацию я читал. ;-)
Какие ещё преимущества "Native" (кроме двух, тобой упомянутых) в сравнении с "COM" ?
Имхейшее ИМХО - никаких. Просто возни по написанию больше.
В TypeLibrary я ткнул новый метод, добавил параметры, указал дефолтные, нажал "обновить", и умница-Дельфи сама всё построила/перестроила. Мне остается только код приличный самого метода написать.
А тут:
1. Напиши форвардное определение функции
2. Напиши саму функцию (без кода пока)
3. Добавь её в регистрацию класса через AddFunc
При копипастах вечно чего-нибудь да забудешь: то количество параметров от старого копипаста останется, то русское название... и т.д. и т.п. В общем, лишние телодвижения.
А сам код функции - это уж от качества проггера зависит, а WinAPI - они и есть WinAPI...
(36) andrewks, Не, главное - не надо регить в реестре. Еще до фига народу работет не в терминале, а кажый на своем движке. А у путнего админа права на реестр у юзверей порезаны. Я еще по 7.7 помню, когда после сноса системы инженер (мать его! а ведь всегда предупреждал - запусти разок 1С со своими правами!) забывал от себя стартануть 1С, дык даже V7Plus работать не хотела. Не зарегилась
(37) главное, всё-таки, кроссплатформенность ;-)
с правами можно решить, а вот как решить, если (с учётом 8.3) клиент завтра окажется на Linux?
естественно, при этом сама компонента должна быть кроссплатформенной (прямое использование winapi уже не прокатит)
(43) andrewks, я настолько от линуха далек, что даже ничего сказать по этому поводу не могу...
WinAPI - да, мой конек, а с остальным просто даже и разбираться нужды не было
(42) в моей конторе, а также у остальных контор, с коими я периодически имею дело, я всячески продвигаю СПО, и не из-за того, что нищеброды (хотя, каюсь, парочка нищебродов, всё-таки, имеется ;-) ), а идейно. за СПО будущее. у нас, например, в локалке все клиенты под линем (Mandriva, Ubuntu), но из-за 1сины пока работаем в терминальнике под Win2003. у клиентов 8.3 для Linux есть будущее, причем, на мой взгляд, не меньшее, чем у веб-клиентов
(44) andrewks, ну и как, довольны нативным клиентом 8.3 под линукс? У меня в открытом состоянии держится не больше пяти минут. Потом падает от самых банальных действий.
Эх, всем хороши ВК, но полагаться на них нельзя. В самый неподходящий момент на каком-нибудь релизе они могут подвести. Жаль, что не удастся юзать - miracle всегда, сколько помню, была одной из лучших.
Хм... при таком подходе вообще ни на что полагаться нельзя. Могу привести супер свежий пример: при обновлении Комплексной автоматизации на релиз не то 19.2, не то 20.1 (уж точно теперь не помню), она просто не стала работать в движком 8.2.13, потому как обновленная конфа оказалась платформозависимой. И использовала уже какие-то методы от движка 8.2.15, которых нет в 8.2.13. (не общие реквизиты, причем)
А вот как какая-нибудь WinAPI GetActiveWindow из ВК - и в Африке, и в Антарктиде, и на любом релизе винды так и останется GetActiveWindow
(10) Дык не спорю... Но всё ж шансов имхо больше. И, вроде бы, для типовых конф стали указывать, на каких релизах они пойдут и на каких нет.
Повторюсь, miracle полюбому штука хорошая, ишшо восемь лет назад юзал.
(12) Yashazz, продолжаю тему ;)
Ты знаешь, по опыту скорее не от релиза 1С, а от релиза винды. Опять-таки свежий пример:
Аркадий, при попытке напечатать регламентную отчетность падает 1С :(
Проверяю у себя - нормал. Смотрю воочию удаленно - действительно, тихо-спокойно "dump" и гудбай.
Проблема оказалась сразу и в Windows 7, и в TAXDOCPrt.dll. 1С-ка перед использованием этой dll проверяет ее наличие, и если её нет - сама её из хранилища ставит. Но - не проверяет версию dll, если он уже есть.
Если dll не было - no problem, 1С установит свежайшую версию, которая корректно работает и под Win 7, и под Server 2008. А вот если она уже была, остается старая версия dll, которая без базаров работает в XP, но тихо рушит 1С и на Win 7, и на Server 2008.
P.S. Поэтому я сразу проверил базу с MiracleNative и у себя на XP, и на Server 2008, причем и на 32-х, и на 64-х разрядных версиях. Кстати, пришлось под сервера поаккуратнее с зачисткой памяти обращаться.
Извините, что вклиниваюсь в беседу, но меня таки интересует вопрос о триальности компоненты. Какой политики автор будет придерживаться относительно компоненты? Она будет платной? Или просто пока в запущена в тестовом режиме?
(15) есть встречное предложение. Сделать ещё и light версию, выбросив какие-то слишком специфические и тяжелые функции. А то прошлая версия выросла за 2 мб...
(18)
1. Случаем взаимодействие не основано на исходниках ВК NativeAPI на Delphi? Или написано с нуля своё?
2. В данной компоненте полностью отсутствует взаимодействие по технологиям COM и ActiveX?
3. Если на 2-е ответ "Да", то может подскажите куда "копать" , что бы сделать такое же взаимодействие с экземпляром "1С: Предприятие" (с окнами, с формами, с панелью задач и т.п.). Я новичок ещё в этом и ни как не понимаю, как Вы сделали такое взаимодействие. Я в описании "Технология внешних компонент" так и не смог понять как так управлять приложением через чистый 1С Native API.
Предполагаю, что такое взаимодействие происходит не напрямую, а через Win API. Но как получается создать межпроцессорное сообщение в 1С?
4. Всё тоже самое можно использовать так же и на Linux? Или только кое-что? Или только поддерживается Windows?
(20) EmpireSer, по пунктам:
1. Шаблон мне случайно попался, похоже это и есть указанный, так что автору спасибо и респект!
2. Да
3. Я кроме WinAPI вообще не воспринимаю никаких языков, все остальные - просто обертка для API.
Примеры работы с WinAPI можно посмотреть в http://infostart.ru/public/14556/ и http://infostart.ru/public/14556/. Хоть там и технология COM, но API по барабану в какой технологии работать ;)
А вообще, как говорил Архимед:
Дайте мне хендл, и я переверну всю Винду ;)
4. Про линукс ничего не скажу, далек я от него.
P.S. Как и написано в описании, данная ВК - наследница MiracleV8, так что многие куски кода практически копипаст оттуда. Вообще-то, если бы не проблемы регистрации в реестре ВК по технологии COM (недостаток локальных административных прав пользователя на запись в реестр), я б Native и не использовал.
P.P.S. Вот еще примеры работы с WinAPI: http://infostart.ru/public/74434/, http://infostart.ru/public/76336/,
http://infostart.ru/public/63333/
Abadonna, поясни, плиз, что значит "Триальность снята до конца года"? Правильно я понимаю, что текущая версия компоненты с нового года начнет показывать всякие окошки, и поэтому использовать компоненту в рабочей базе нельзя? Если да, то скажи, пожалуйста, как получить полноценную версию? Очень не хочется писать свою компоненту.
Также, в качестве хотелки: было бы здорово, если бы метод СообщениеТрейИконки() работал без предварительного вызова СоздатьТрейИконку() - сам бы создал иконку, если ее еще нет, и удалил бы иконку после вывода сообщения.
Или, как вариант (менее удобный) добавить метод УдалитьТрейИконку().
СоздатьКнопкуФормы полностью не описан в описании, методом тыка начало догнал, что не хватает параметров, потом поставил первым параметром хендл окна (главного окна) результат
Окна.СоздатьКнопкуФормы(ХендлЭтогоокна,"TEST","TEST2","C:\Users\peshkichev_is\WORK\GREEN.jpg",50,0,0);
Кнопка создана, не реагирует на клик, и в системе в статусБаре , появилась окно.
Кнопка появляется на заднем плане в заданных координатах.
Испарвте появление кнопки без окна в статус баре системы.
1с 8.2 Обычное
(24) OldthiefXXX,
В описании действительно ошибка, первый параметр - хендл.
Все остальное:
Общие замечания
В процедурах форм ПередОткрытием() и ПриОткрытии() хенд формы еще не существует (!!!), необходимо дождаться его появления следующим образом:
Процедура ПослеОткрытия()
Хендл=Окна.ИдентификаторАктивнойФормы();
КонецПроцедуры
Процедура ПриОткрытии(Отказ)
// подождать появления хендла этой формы
ПодключитьОбработчикОжидания("ПослеОткрытия",0.1,Истина);
КонецПроцедуры
__________________________________
&НаКлиенте
Процедура ПослеОткрытия()
Хендл=Окна.ИдентификаторАктивнойФормы();
Окна.СоздатьКнопкуФормы(Хендл,"BT5","Новая кнопка","d:\СервисМ Работа с клиентами\1C_ICO.bmp",64,10,40);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("ПослеОткрытия",0.1,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Событие="ADD_BUTTON_CLICK" Тогда
Сообщить("Нажата кнопка с именем: "+Данные);
КонецЕсли;
КонецПроцедуры
Показать
P.S. Для обычной то же самое без директив компиляции
P.P.S. Имя кнопки (не заголовок,а именно имя) обязательно по английски.
HWN=Окна.ГлавноеОкно(); // хендл есть всегда ;-) (пока ты в 1ске)
Окна.СоздатьКнопкуФормы(HWN,"TEST","TEST2","C:\Users\admin\WORK\Планирование\ICON\GREEN.jpg",50,10,10);
Так это все работает, но клик не обрабатывается!!! Так же на таксбаре системы появляеться окно!!!
И еще при вызове методы ПодключитьВнешнююКомпоненту вот такая ошибка.
(26) 1. Дельфи 7 - 32-рязрядная, никто и не обещал. На 64-х разрядном серваке с 32-х разрядной 1С работает без базаров.
2. На главное ее и не надо сажать, я там хендл спецом для своих нужд оставил.
3. В обычном приложении кнопки надо сажать на окно MDI, а не главное.
3. Но даже и в этом случае, см. рис
Процедура ПослеОткрытия()
Окна.СоздатьКнопкуФормы(Окна.ГлавноеОкно(),"TEST_BUTTON1", "Кнопка формы 1",ОбщСМ.КаталогИБ()+"Camera.JPG",200,800,400);
КонецПроцедуры
Просто мне лень пока убрать вообще первый параметр - хендл. Тем более я для своих нужд может буду сажать кнопки вообще не на окна 1С
Все кнопка заработала мой косяк признал, нок ак быть со статус барам и то что кнопка уходит на задний план. Может чем помогу я тоже писал компоненты на делфях
Не надо сажать этим методом кнопку на главное окно, особенно для обычного приложения. Он не предназначен для этого. Для обычного приложения (если хочется кнопки внутри) надо использовать СоздатьКнопкуРабочегоСтола - оно как раз на MDI посадит, и все будет как положено.
Этот метод только для дочерних форм 1С (отчетов и т.д.). Если тебя это так напрягает, я вообще уберу в методе первый параметр, она сама найдет активную форму, если она есть. Просто этим хендлом я лазейку для себя оставил, для других целей
(30) У меня уже сделана панелька псевдо-трей. Но для управляемого приложения. Неуправляемые меня уже не интересуют, скучно.
Короче, я делаю все в соотвествии со своими вкусами и нуждами. Один хрен никто покупать ВК не будет. Плавали - знаем
Добрый день! Вопросы: 1) Требует ли внешняя компонента регистрации в реестре Windows? 2) Способна ли данная компонента активировать окно формы, поверх открытых окон других (не 1С) приложений? Т.е., например, пользователь сидит в браузере, 1с свернута. В 1с происходит событие, по которому, с использованием данной компоненты, я смогу активировать окно формы 1с поверх браузера? 3) Будет ли работать компонента в клиент-серверном варианте, в тонком клиенте?
Что-то в архиве только dll :0( Abadonna, выложи пожалуйста как в первичном описании тестовую базу, где можно посмотреть уже реализованные несколько применений, а так же доступные методы.
Периодически на панеле задач появляется "MiracleForm". От этого можно избавиться?
Я старый пользователь Вашей компоненты Miracle, еще на 7.7 запрягал. На 8-ке использовал MiracleV8.
А сейчас потирал ручки в предвкушении от MiracleNative (1.1.1.45 взял с сайта разработчика). Все прекрасно. Но! Это чертово окошко на панели!
Насколько мог, внимательно прочитал все сообщения, и так и не понял: это "подарок" бесплатной версии?
Поймете правильно, жутко мешает. И не просто моему тонкому вкусу. Если в момент набора текста окошко выскакивает, то оно берет на себя фокус, и для продолжения работы чуть ли мышкой по приложению щелкать.
Второе: просьба есть. Методу ПроигратьФайл() добавить параметр "Проигрывать не в фоновом режиме".
Поставил прощальный звук при завершении программы. Так на 3-ей ноте обрывает. Не успеваешь мелодию угадать. Как выход, поставил Задержка(), но, не то...
(62) Паунин, было бы здорово, только в описании же написано
ВК для V8
.
Native API
Для создания внешних компонентов используется технология Native API – собственный интерфейс системного программирования 1С:Предприятия 8. Она поддерживает операционные системы Windows и Linux, и дает возможность создавать внешние компоненты, работающие как под одной, так и под другой операционной системой. Компоненты, созданные по технологии Native API, могут быть подключены в толстом клиенте, в тонком клиенте, в веб-клиенте, внешнем соединении и в сервере приложений.
Добрый день! murenysh к сожалению не смог мне помочь с моим вопросом, у него ровно столько же информации, сколько я нашел сам в интернете, возможно Вы сможете мне помочь... Скачал я предыдущую версию DLL с базой, но как с ней работать толком так и не понял... У меня есть некая DLL (назовем ее 1.DLL), которая сделана не по стандартам COM и 1c Native, но мне нужно использовать ее методы, я догадываюсь что работать мне нужно через, скажем РаботаЧерезФайл = Новый("AddIn.MiracleNative.V8Files";), но метод ИзвлечьРесурс не потходит под мои задачи. Я знаю какие методы есть в 1.DLL и мне нужно их вызвать, как-то типа РаботаЧерезФайл.ИспользоватьМетодФайла(1.DLL, "ИмяМетодаФайла", ПараметрМетодаФайла1, ПараметрМетодаФайла2, ..., ПараметрМетодаФайлаN), а в той базе что я скачал есть только ИзвлечьРесурс в качестве примера... В идеале конечно бы посмотреть исходники этой Miracle, но опять таки судя по активности автора - ждать я ответа буду долго... Буду благодарен если поможете с разьяснениями.
(73) cool.vlad4, Если Вы про профиль на инфостаре то какой-нибудь как у Лазаря.
Если же вы про реальную жизнь то естественно никакой активности не ожидаю, я с ним лично не знаком и о таких личных данных знать мне не от куда...
Доброго времени суток! Вопрос по использованию оповещения пользователя - можно ли вывести на экран несколько окон одновременно? Пробовал и не получилось - отображается текст из последнего сообщения.
(77) murenysh, У меня такой вопрос - можно ли использовать компоненту на серверной части, если сервер крутиться под убунтой? Или она хоть и native но заточена под win?
При запуске клиента x64 на платформе 8.3.9.1818 x64 наблюдается сообщение:
Тип не определен (AddIn.MiracleNative.V8Windows)
на строке модуля : Окна = Новый("AddIn.MiracleNative.V8Windows");
Для версии компоненты 1.2.1.1 заявлено: "Никакой регистрации в реестре не требует, соответственно проблемы прав не существует"
Есть подозрение, что с появлением x64 разрядности на клиенте требуется внести изменений в компоненту или зарегистрировать ее в реестре.
Вопрос: Можно ли MiracleNative.dll зарегистрировать в реестре вручную? Если да, то в какой ветке, с какими параметрами и значениями?
С рисованием разобрался, такой возможности не заявлено.
------
Понятно, уже что изменений не будет. Но у всех подвисания в x64?
У меня, например, при подключении не сохраняются настройки (форм, отчетов, окон).
при каждом следующем открытии базы скидываются измененные за предыдущий сеанс настройки форм, список открытых файлов в меню файл, сохраненные значения через СохранитьЗначение()
на то, чтобы выяснить первопричину этого, у меня ушло несколько лет и длительное безрезультатное общение с техподдержкой 1С. Благо на момент внедрения этой библиотеки у пользователей большинство настроек было сделано и вопрос стоял не так остро.