ВК на Delphi

Форум 1С: Одинэс.Ру

Найти!

ВК на Delphi

Griffon
24.04.2009 - 12:46
Доброго времени суток. Решил написать ВК для перебора членов (объектов коллекции) WMI класса.
Если в 8.0 мы можем использовать для коллекции класса замечательную конструкцию "для каждого из", то в 7.7, как пишет Андрей Михайлов в своей книге "1С:Предприятие. Системное программирование", необходимо использовать ВК. В своей внешней компоненте я использую библиотеку WMIEXTENSIONLib_TLB с такими типами данных, как SWbemObject, SWbemPropertySet. Функция получает коллекцию и порядковый  номер объекта который нужно вернуть 1С-ке, находит этот объект и присваивает значению функции, как я понимаю, указатель на объект. 1С получает НЕЧТО, что на просьбу Сообщить(НЕЧТО) выдает "OLE.ISWbemObjectEx". Вряд ли это объект WMI класса, потому как на любое свойство этого объекта выдает "Значение не представляет агрегатный объект (Caption)". Одним словом я в тупике. Бьюсь уже несколько дней, с самим Дельфи работаю всего неделю, так что просьба не критиковать сильно:
 
function TWMIExplorer.EnumerateCollection(const ObjSet: ISWbemObjectSet;
  Number: Integer): OleVariant;
var Enum : IEnumVariant;
var TempObj : OleVariant;
var Value : Cardinal;
var Current : Integer;
var SObject : ISWbemObject;
var s : OleVariant;
 
begin
  Enum:= (ObjSet._NewEnum) as IEnumVariant;
  Current := 0;
  s:=0;
  while (Enum.Next(1, TempObj, Value) = S_OK) do
  begin
    Current := Current + 1;
    if Current = Number then
    begin
      SObject := IUnknown(TempObj) as ISWBemObject;
      EnumerateCollection:= IDispatch(SObject);
   end;
  end;
end;
 
и кусок кода 1С:
// Создаем указатель на объект SWbemLocator
Попытка
Locator = СоздатьОбъект("WbemScripting.SWbemLocator");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
 

// Шаг 1. Подключение к WMI на локальном компьютере
ServicesSet = Locator.ConnectServer(".");
 
// Шаг 2. Извлечение экземпляров класса Win32_LogicalDisk
ObjectSet = ServicesSet.InstancesOf("Win32_LogicalDisk") ;
 
// Шаг З. Просмотр SWbemObjectSet, содержащего экземпляры
Для Ном = 0 По ObjectSet.Count-1 Цикл
Item = WMIExplorer.EnumerateCollection(ObjectSet, Ном);
Сообщить(Item);
КонецЦикла;
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
22.10.2020 - 18:03
Смотри также:
ПУБ: Закрытие месяца. Хелп!
При загрузке 1с++ и FormEx начались тормоза
Подскажите, плиз, код или ВК, который(ая) фиксирует время простоя 1С-ины и запускает определенную обработку

Re: ВК на Delphi

Друзья зовут меня Курулай
20 - 13.05.2009 - 07:55
19+
семёрка не работает с коллекциями, поэтому придётся поискать компромисс
например, сделай третий шаг тоже в компоненте (обойди объекты, вытащи всю нужную тебе инфу, засунь в таблицу и передай в 1С.
Или, второй вариант:  напиши в своей компоненте методы работы с элементами коллекции, и вызывай эти методы из 1С

Re: ВК на Delphi

Reaper
21 - 13.05.2009 - 07:56
19-Друзья зовут меня Курулай > Т.е.спросить на форуме, к примеру, о тюнинге автомобилей как прикрутить разгонный движок от ТУ-160 к старому грузовичку для того чтобы получить скоростной болид - это нормально?

Re: ВК на Delphi

Друзья зовут меня Курулай
22 - 13.05.2009 - 07:59
(21) на вопрос "зачем?" автор подробно ответил в (7)
ему нужно для диплома
меня его ответ удовлетворил
чисто с практической точки зрения это конечно абсурд, и в рабочих конфигах такое нафиг не нужно
но для диплома, в качестве "пробы пера"
а почему бы нет?
да и, чёрт побери, в самом деле интересно с этим повозиться.

Re: ВК на Delphi

smaharbA
23 - 13.05.2009 - 08:24
семерка работает с коллекциями

Re: ВК на Delphi

Reaper
24 - 13.05.2009 - 08:27
smaharbА +1
Смею предположить, что нужно ориентироваться на:
Объект.ВыбратьСтроки();
Пока Объект.ПолучитьСтроку() = 1 Цикл
 
А вообще, если даже и диплом - то надо было и планировщик на 1С реализовывать - пользы было бы больше.

Интересные темы

odines.ru
22.10.2020 - 18:03
Смотри также:
3 D графика в 1С
не работает Записать(). Помогите!!!!
Шедевр кода в бюджетке 633. Студенты жгут.

Re: ВК на Delphi

Исчо
25 - 13.05.2009 - 08:39
А почему, кстати, дипломы пишутся на устаревшей платформе? Так наша страна никогда не выбертся из технологического застоя.

Re: ВК на Delphi

Друзья зовут меня Курулай
26 - 13.05.2009 - 08:46
(25) кстати,хочу поделиться своим впечатлением
я имел удовольтвие видеть несколько дипломов по 1С 7.7
(причём студиозусы до написания диплома вообще не имели опыта в 1С, им просто преподавали 1С в рамках учебного курса)
Мллляяя, какой же это был кошмар!!!!
Посмотрев на этот БРЕД, я теперь с любовным умилением отношусь к косякам таджиков из ЗАО 1С.
По сравнению с тем бредом, диплом автора выглядит очень достойно.

Re: ВК на Delphi

Reaper
27 - 13.05.2009 - 08:54
25-Исчо >Технологическое обоснование под нее писать самому - это 1. А еще никто из преподов ее не знает и только поэтому постараются придраться на защите  - это 2. Поэтому дипломы на 8-ке защищаются только реальные, а не виртуальные.

Re: ВК на Delphi

Reaper
28 - 13.05.2009 - 08:57
26-Друзья зовут меня Курулай > Любой диплом, написанный студентом самостоятельно, а не в рамках какого-либо коллектива - бред сивой кобылы. Студент без опыта работы над боевым заданием под руководством аса такие перлы выдалбливает на бетонных столбах - надивиться невозможно.

Re: ВК на Delphi

Griffon
29 - 13.05.2009 - 12:57
Уххх, вас, товарищи, раздухарило))))
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« Начисление амортизации ОС после модернизации. Розничная торговля. Помогите советом, плиз! »
© 2009 Форум 1С: Одинэс.Ру