powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / COM-интерфейсы объектов. Need help!
19 сообщений из 19, страница 1 из 1
COM-интерфейсы объектов. Need help!
    #37206341
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Столкнулся с такой интересной задачкой. Все объекты, который доступны во внешнем соединении, предоставляют IDispatch интерфейс (ну и IUnknown конечно). Через dispatch я могу обращаться к свойствам и методам объектов, который заявлены в help-е. Тут все ОК. Но есть такая штука как "Для каждого … Из … Цикл" и перебор по индексу через квадратные скобки [...]. Как я понимаю они используют не IDispatch, а что-то еще.

Вопрос: какой интерфейс они используют?

Зачем это нужно: Берем объект "структура". У него есть Вставить (Insert), Количество (Count), Очистить (Clear), Свойство (Property), Удалить (Delete) и свойства обращения по имени ключа. Но что делать если имена ключей неизвестны и надо их перебрать? Вот тут, как я понимаю, и помогает "Для каждого … Из … Цикл"
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37206655
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это практический вопрос или хочу все знать?
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37206668
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naf,

Практический. Пример со "структурой" я привел для простоты.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209015
BestProgrammist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209021
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при использовании "Для каждого … Из … Цикл" перебор идет по массиву с одним типом данных, в COM объекте сами понимаете поля разных типов.
А стуктура "Для каждого … Из … Цикл" если не ошибаюсь реализуется через IEnumerator
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209380
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist http://msdn.microsoft.com/en-us/library/ms691212(v=VS.85).aspx
Дык и?

pavel_nv,
Вот это уже теплее. Но насколько я знаю IEnumerator это .Net-вский интерфейс, а 1С не использует .Net (могу ошибаться). Теперь далее, даже если энумератор есть, то вопрос: его надо получать через какой-то метод или проперти? (Т.к. эксперимент показал что 1С-коллекции не откликаются (не наследуют) ICollection и ниже.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209502
BestProgrammist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot IgorKonovalov]BestProgrammist http://msdn.microsoft.com/en-us/library/ms691212(v=VS.85).aspx
Дык и?

Вм ничего не говорит такая строка?

The IEnumUnknown interface inherits from the IUnknown interface.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209574
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist,

Говорит: что IEnumVARIANT наследуется от IUnknown. Это факт. А как получить то объект с IEnumVARAINT?
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209591
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist,

Извиняй, невнимательно прочитал, зациклился уже. Не IEnumVARAINT, а IEnumUnknown. Но все равно говорит что No such interface supported. [0x80004002]. Может этот объект с этим интерфейсом надо как-то получать из "корневого" объекта?
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209608
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть еще вот такая аксиома http://msdn.microsoft.com/en-us/library/ms221354.aspx, но обратиться к свойству _NewEnum через IDispatch, почему-то тоже не получается.

Собственно к этому я пришел с отсылок к IEnumVARIANT из ИТС. Правда там все равно несказанно как им пользоваться.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209614
BestProgrammist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorKonovalov,

Сдаюсь :D
а просто прочитать документацию msdn? перейти в описание IUnknown и увидеть метод

QueryInterface()
Retrieves pointers to the supported interfaces on an object.


ну или вот первая ссылка из гугля

http://www.rsdn.ru/forum/com/41246.flat.aspx
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209631
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist,
Рано сдаваться )))

Да все правильно, queryInterface. Но сам объект не обладает интерфейсом IEnumUnknown (No such interface supported. [0x80004002]). Как я понимаю чтобы получить у основного объекта объект энумератор, нужно его получить из свойства или вызовом метода.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209644
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorKonovalov,

и кстати, почему из все интерфейсов коллекций Вы выбрали IEnumUnknown? А не ICollection, IList или IEnumVARIANT
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209659
BestProgrammist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorKonovalov,

Если ваш com-подопытный не реализует итератор то нужно подробее смотреть что за фрукт.
Чуть выше простакивало ваше упоминание про ICollection?
Для такого интерфейса должен быть метод GetEnumeration(), но это уже домыслы.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209672
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist,

Попробовал. GetEnumeration нет такого. В документации по 1С упоминается IEnumVARAINT, но как им пользоваться непонятно. На msdn нашел такую статью по имплементации этого интерфейса ( http://msdn.microsoft.com/en-us/library/ms221354.aspx). Но свойства _NewEnum что-то не находится.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209707
BestProgrammist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorKonovalov,

Наличие какого интерфейса коллекции показывает QueryInterface?
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209727
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist,

Запрашивал ICollection, IList, IEnumerable, IEnumerator, IDictionary, IEnumVariant, IEnumUnknown все мимо. Откликается только на IDispatch и IUnknown что для automation-объекта естественно.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209892
BestProgrammist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorKonovalov,

странно, либо не то дергаете либо ошибка платформы, либо задача не ясна.
P.S.
На 8.1 в ВК через query прекрасно обходились структуры.
...
Рейтинг: 0 / 0
COM-интерфейсы объектов. Need help!
    #37209922
IgorKonovalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BestProgrammist,

Свершилось!! И так, как и обещала 1С ее объекты поддерживают IEnumVARAINT. Стандартный метод получения объекта энумератора это через проперти _NewEnum объекта-коллекции. (Объект-коллекция != энумератор). При доступе к полю _NewEnum через getIDsOfNames у IDispatch кидалась ошибка, что мол такого свойства нет. Но! По феншую Microsoft у этого поля фиксированный ID в IDispatch и оно равно '-4'. Так вот если обращаться к этому полю по ID, энумератор нормально возвращается. Биного!!!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / COM-интерфейсы объектов. Need help!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]