#0
by unikon
Всем доброе время суток. В общем, пытаюсь уже второй день создать dll на C# я реализации простых функций для начала (изучаю эту тему). Но уже и тут столкнулся с проблемой. Не могу никак создать com объект в 1С. Скомпилировал dll по статье , но когда в 1с начинаю писать код МойОбъект = Новый COMОбъект("HowToComObjectFor1C.MyClass");, то выдает ошибку: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма}: Ошибка при вызове конструктора (COMОбъект) МойОбъект = Новый COMОбъект("Addin.MyClass"); по причине: -2147467262(0x80004002): Интерфейс не поддерживается что, где не так делаю, понять не могу. Может подскажет кто куда смотреть? Или у кого готовый проект есть, что бы его можно было собрать в Visual Studio?
#3
by unikon
Спасибо, разобрался. Оказалось нужно было dll добавлять в папку bin 1С и там ее регистрировать.
#5
by unikon
У меня по другому не получалось. Я ее регил в папке проекта, а из 1С потом к ней подключиться не мог.
#6
by unikon
Я не знаю в этой теме писать или нет, но появился следующий вопрос. С dll теперь все норм. Через нее хочу работать с формами 1С. Нахожу форму по заголовку, получаю ее дескриптор. Как теперь по этому дескриптору обращаться к форме и менять ее размер, положение и т.д.?
#7
by oleg_km
Надо использовать WinAPI и неуправляемый код: [Guid("A497AB77-85C3-4F32-839D-7EDA0F5F89C8")] public class WndHlp { #region Private members private IntPtr m_hWnd = IntPtr.Zero; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool PostMessage(IntPtr hWnd, int nMsg, int wParam, int lParam); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr FindWindowEx(IntPtr wParam, IntPtr wParamChildAfter, string cClass, string cTitle); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool ShowWindow(IntPtr hWnd, int nMode); private static extern IntPtr SetParent(IntPtr hWnd, IntPtr nWhdParent); private static extern IntPtr GetParent(IntPtr hWnd); private static extern bool IsWindowVisible(IntPtr hWnd); private static extern uint SetWindowLong(IntPtr hWnd, int nStyle, int nParam); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool SetWindowPos(IntPtr hWnd, IntPtr nOrder, int nX, int nY, int nW, int nH, uint nMode); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int GetClassName(IntPtr hWnd, StringBuilder cClass, int nMaxCount); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool BringWindowToTop(IntPtr hWnd); private static extern bool SetForegroundWindow(IntPtr hWnd); [StructLayout(LayoutKind.Sequential)] public struct RECT { public int left; public int top; public int right; public int bottom; } public static extern int GetWindowRect(IntPtr hWnd, ref RECT rc); #endregion Private members public int hWnd } public bool PostMsg(int nMsg, int wParam, int lParam) } public bool FindWnd(int wParam, int wParamChildAfter, string cClass, string cTitle) { } public bool ShowWnd(int nMode) } public bool SetParentWnd(int nWhdParent) public int GetParentWnd } public bool IsVisibleWnd } public bool SetWndLong(int nStyle, int nParam) public bool SetWndPos(int nOrder, int nX, int nY, int nW, int nH, uint nMode) { public string GetClassNameWnd { public bool BringWndToTop } public bool SetForegroundWnd } public AutoWrap GetWndRect { } } }
#9
by unikon
Решил не создавать новую тему, а продолжить тут) В общем найти дискриптор главного окна 1с не составило никакой сложности. Использовал функцию "FindWindow". Но я мне нужно вот что. Открыть 1С. Запустить форму с признаком "РежимРабочегоСтола" и дальше из этой формы будут открывать другие формы и мне нужно манипулировать ими. Устанавливать положение, доступность, размер и т.д. Но дело в том, что дискрипторы этих окон я не могу найти. Т.е. он их находит с помощью функции "FindWindowEx", где в качестве параметров я указываю дискриптор родительского окна (главное окно 1С) и заголовок формы. Но вот дальнейшие манипулировать ими не могу. Может кто подскажет, что я не так делаю?
#11
by unikon
Я тоже читал эту статью, но это чутка не то. Если открыть первую форму модально (она будет выше главного окна 1С), тогда я могу остальными формами управлять (размер, положение и т.д.), но мне нужно, что бы это было не через модальные формы, а именно, внутри главного окна 1С.
#12
by lodger
о. тебе нужен велосипед с костылем! ну а кроме шуток, все что происходит внутри главного окна 1с, управляется только самим 1с, как мне кажется.
#13
by unikon
Нет. У меня есть конфа, которая так может делать с помощью внешней dll. Вот я и хочу разобрать как это все работает)
#15
by Dmitry1c
О боже мой зачем зачем Использовать проктологический путь Ведь Windows дала нам столько проблем Стоит ли пытаться её обмануть? А может быть, однажды, включить стоит мозг И найти другой путь Нативный код на языке 1С Не даст вам себя обмануть.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- создание справочника
- V8. Проблемы с создание начальных образов
- Описание для 1CML32.DLL и UNIZIP32.DLL
- Создание внешних компонент
- Создание dll для 1С
- Создание обработки
- v8. УТ 10.2.6 ScanOPOS.dll. 1С говорит что нету Msvcrt71.dll :(
- создание BAT ФАЙЛА для автоматического запуска 1с
- Как обеспечить совместное проживание msxml3.dll и msxml4.dll
- Вылетает 1С77 в терминале (WIN2003server) ошибка модуль Moxel.dll, Basic.dll
- Чем грозит замена odbcbcp.dll, sqlsrv32.dll, sqlsrv32.dll, в Win7 ?
- v7: Нужны библиотеки AddIn.dll и EITSJPU.dll
В этой группе 1С
- Работа с картами Google. Google API
- Ищу расширение для Хрома: определитель принадлежности номера телефона к региону страны
- Корректировка реализации при Передаче контрагента прав другому
- Что вызывается при нажатии на кнопку выбора таблицы управляемой формы?
- Отваливается менеджер обмена между КА и БП 3.0
- Начисление ЗП в 1С 8.3 Бухгалтерия 3.0
- Перестала отправляться почта из 1С
- Шаблон ограничения доступа для одной обработки - УПП 1.3
- Почему не видит область макета
- И снова "Установлен безопасный режим. выполнение операции запрещено"
- ЗУП 3.1 как получить программно подразделение сотрудника на дату и способ учета в БУ
- Сколково-2 в Питере
- Конвертация заполнение счетов
- Отсутствие отображения артикула в печатных формах УНФ
- Программный запуск процедуры модуля управляемой формы контрагента
- Не пробивает кассовый чек из ПКО
- v7: ФИАС в 1С 7.7
- ЗикГУ 3.1 нет кнопки печати в документе "ВедомостьВБанк"
- v7: Оптимизация РегОстатки.СводныйОстаток
- Розница.Непроведенный чек.Как провести.