ВК на 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
15.11.2024 - 03:45
Смотри также:
Не отображается список регламентированных отчетов
Как сверстать Книгу учета доходов и расходов ИП
Проблема с расчетом оперативных итогов

Re: ВК на Delphi

Чучундер
1 - 24.04.2009 - 13:03
имхается мне, что все это можно из 7ки и без ВК получить...

Re: ВК на Delphi

Griffon
2 - 24.04.2009 - 13:09
7ка не работает с коллекциями, а ObjectSet как раз таки не объект, а список таковых, так что стандартными средствами увы...

Re: ВК на Delphi

Друзья зовут меня Курулай
3 - 24.04.2009 - 16:52
"Бьюсь уже несколько дней, с самим Дельфи работаю всего неделю, так что просьба не критиковать сильно"
м-да
Вот интересно, какая нужда подвигла написать ВК для 1С на Дельфе, не зная толком ни первого, ни второго?
Зачем тебе в 1С понадобился "перебор членов (объектов коллекции) WMI класса" ?

Re: ВК на Delphi

Griffon
4 - 25.04.2009 - 06:27
1) "не зная толком ни первого, ни второго" А ты, Курулай, походу гуру 1С))), да такой, что даже не слыхал о таком понятии, как "коллекция"?
2) перебор нужен, так
как SWbemObjectSet является коллекцией и доступ к ее элементам, например в 8.0, 8.1, можно орга-
низовать при помощи конструкции "Для каждого..Из...Цикл...КонецЦикла". В 7.7 такой возможности нет к сожалению.

Re: ВК на Delphi

Griffon
5 - 25.04.2009 - 06:28
Кстати нашел как это можно организовать при помощи WSH прямо из 1С обработки без ВК, но хотелось бы уже разобраться что Delphi возвращает 1С и с чего кушать...

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

odines.ru
15.11.2024 - 03:45
Смотри также:
Нет возможности разместить документ после ТА
Почему проверка в списке на принадлежность первый раз тормозит а потом нет?
Проблема с уникальностью номеров документов

Re: ВК на Delphi

Друзья зовут меня Курулай
6 - 25.04.2009 - 09:52
(5) О коллекции я слыхал.
Вопрос был, зачем тебе в 1С понадобился "перебор членов (объектов коллекции) WMI класса" ?

Re: ВК на Delphi

Griffon
7 - 25.04.2009 - 11:42
(6) Хочу поработать с таким делом как планировщик, но не только в плане добавить задачу, но и просматривать уже созданные. В принципе есть чужая готовая dll написанная на VB 4, есть ее исходник, который не открывается "file corrupt"))). Все это дело часть диплома, поэтому не имею нормального исходника хочу написать собственный дабы была возможность это все показать и объяснить. Вот так... Вопрос перебора WMI коллекции нереально мутный, нигде ничего близкого нет.  

Re: ВК на Delphi

Griffon
8 - 25.04.2009 - 11:48
Еще один интересный момент: в Делфях задаю параметры своей функции. Для входящих это тип WMI коллекции ISWbemObjectSet * и Long *. Когда пытаюсь задать для выходного параметра тип ISWbemObject * выдается сообщение, что выходной параметр может быть только указательного типа и чего-то никак не могу понять: ISWbemObject * - это разве не указательный тип данных??? 1С же передало успешно ISWbemObjectSet как указатель, а вернуть Делфи не может этот же параметр?  

Re: ВК на Delphi

MrDen
9 - 10.05.2009 - 10:10
Если нужен 1С Планировщик для 7.7 то сюда
http://infostart.ru/projects/2145/
WMI перебирать из 1с 7.7 без ВК запросто
вот тут много интересного
http://script-coding.info/index.html

Re: ВК на Delphi

Чучундер
10 - 10.05.2009 - 10:13
5-Griffon > я тебе это еще в (1) сказал, вылысыпыдыст... ;-)

Re: ВК на Delphi

Griffon
11 - 11.05.2009 - 10:09
MrDen, пасиба за ссылку - полезная весьма штука. Планировщик нужен но свой))) - диплом такой у меня. Насчет WSH я знал и на крайняк им и воспользуюсь, но опять же вопрос "что возвращает ВК" остается открытым(((

Re: ВК на Delphi

smaharbA
12 - 11.05.2009 - 12:10
Мене пофих, что типо 1с не работает с коллекцией
и  всш тут вообще не нужен

Re: ВК на Delphi

Чучундер
13 - 11.05.2009 - 12:21
11-Griffon > слушай (12)

Re: ВК на Delphi

Исчо
14 - 11.05.2009 - 15:50
Я не знаю, что такое коллекция, но мне обидно, что она с ней не работает.
Не знаю, почему.

Re: ВК на Delphi

Пацталоцци
15 - 11.05.2009 - 15:58
+100
тем более, в восьмёрке почему-то работает
а тут нет

Re: ВК на Delphi

smaharbA
16 - 11.05.2009 - 18:34
висте все ваши огорчения даже не вдомек.

Re: ВК на Delphi

VZ
17 - 12.05.2009 - 05:26
Спрашивается, зачем составлять список заданий, если не для посмотреть? А посмотреть можно напрямую...
И этот список есть в реестре...
А для посмотреть невыполненное винда заботливо подготавливает отчет SchedLgU.txt...

Re: ВК на Delphi

Griffon
18 - 13.05.2009 - 07:46
Короче, ребята, я с вас потухаю))) Задал вполне адекватный вопрос и вместо нормального прямого ответа получаю только "Нафиг оно тебе надо"... Тем более что это все решалось на ВК на VB и интересно только лишь, можно ли это самое реализовать на Delphi?

Re: ВК на Delphi

Друзья зовут меня Курулай
19 - 13.05.2009 - 07:49
(18) ты прав
вопрос был нормальный.

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С реализовывать - пользы было бы больше.

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С: Одинэс.Ру