Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Обертка для dll (не пойму какой тип возвращает метод) (число прочтений - 5811 )
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Обертка для dll (не пойму какой тип возвращает метод)
19. Августа 2015 :: 19:35
Печать  
Добрый день!
Есть dll которая реализует обмен с определенной системой (Электронный каталог). Для 8-ки используется следующий код:
Код
Выбрать все
			   ProductData = EZCatalog.FindProductByID(ИДТовара);
			   Если ProductData<>NULL Тогда
				    ProductData.SetAttrValue("FIDDIRECTORIES",ИДГруппы);
				    ProductData.SetAttrValue("FSTATE",Окр(ВыборкаПоНоменклатуре.Остаток));
				    ProductData.SetAttrValue("FNAME",Наименование);
			   КонецЕсли;
 



7-ка не понимает
Код
Выбрать все
ProductData.SetAttrValue("FIDDIRECTORIES",ИДГруппы); 


Видимо возвращаемый тип 7-кой не поддерживается. Подскажите - как выйти из ситуации?
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #1 - 19. Августа 2015 :: 20:26
Печать  
Отвечу пока сам себе - вроде бы EventProxy.dll (http://www.1cpp.ru/forum/YaBB.pl?num=1152684759) от уважаемого Steban подходит для этих целей.
Осталось только понять как завести.
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #2 - 19. Августа 2015 :: 20:44
Печать  
Попробовал обернуть:
Код
Выбрать все
	ЗагрузитьВнешнююКомпоненту("EventProxy.dll");
	Каталог = СоздатьОбъект("EZCATALOG.ProductCatalog");
	ОбработчикСобытий=СоздатьОбъект("Addin.EventProxy");
	ОбработчикСобытий.ГлубинаБуфераСобытий=200;
	г");
 


Получил:
Цитата:
г");      
{F:\1C_WORK\ERT\ЭЛЕКТРОННЫЙЗАКАЗ.ERT(145)}: Ошибка при выполнении метода объекта компоненты F:\1c_work\01.01.15WP\EventProxy.dll
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #3 - 20. Августа 2015 :: 04:58
Печать  
Цитата:
7-ка не понимает
а поточнее, какая ошибка?

сообщить(ProductData) ?
  

1&&2&&3
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #4 - 20. Августа 2015 :: 09:16
Печать  
При Цитата:
сообщить(ProductData)
.
Получаю
OLE.IProductCatalog
При
Код
Выбрать все
ОбработчикСобытий.Источник(Каталог,"OLE.IProductCatalog","ЭлектронныйКаталог"); 


{F:\1C_WORK\ERT\ЭЛЕКТРОННЫЙЗАКАЗ.ERT(148)}: Ошибка при выполнении метода объекта компоненты F:\1c_work\01.01.15WP\EventProxy.dll
  
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #5 - 20. Августа 2015 :: 09:37
Печать  
А если в vbscript завернуть?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #6 - 20. Августа 2015 :: 09:43
Печать  
berezdetsky писал(а) 20. Августа 2015 :: 09:37:
А если в vbscript завернуть?

Не умею Печаль
Подскажите кто может, пожалуйста.
  
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #7 - 20. Августа 2015 :: 09:49
Печать  
Как то так
Код
Выбрать все
Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.Language = "vbscript";
Скрипт.AddObject("ProductData", ProductData);
Скрипт.ExecuteStatement("ProductData.SetAttrValue ""FIDDIRECTORIES"", 123"); 


если память не изменяет.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #8 - 20. Августа 2015 :: 10:02
Печать  
нет, нет
покажи текст ошибки кода из (0)
  

1&&2&&3
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #9 - 20. Августа 2015 :: 10:04
Печать  
trad писал(а) 20. Августа 2015 :: 10:02:
нет, нет
покажи текст ошибки кода из (0)

Вот (выше приводил)
Код
Выбрать все
{F:\1C_WORK\ERT\ЭЛЕКТРОННЫЙЗАКАЗ.ERT(145)}: Ошибка при выполнении метода объекта компоненты F:\1c_work\01.01.15WP\EventProxy.dll 

  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #10 - 20. Августа 2015 :: 10:38
Печать  
видел я про EventProxy

я спрашиваю про:
Цитата:
7-ка не понимает ProductData.SetAttrValue("FIDDIRECTORIES",ИДГруппы);

какая ошибка без обертки в EventProxy?
  

1&&2&&3
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #11 - 20. Августа 2015 :: 11:06
Печать  
Код
Выбрать все
				ProductData = Каталог.FindProductByID(ИдТовара);
				Сообщить(""+ЭлементТовара);
				ProductData.SetAttrValue("FIDDIRECTORIES",ИдГруппы);
 


выдает
Цитата:
ProductData.SetAttrValue("FIDDIRECTORIES",ИдГруппы);
{F:\1C_WORK\ERT\ЭЛЕКТРОННЫЙЗАКАЗ.ERT(102)}: Значение не представляет агрегатный объект (SetAttrValue)

А вот Сообщить(""+ProductData)
Выдает пустоту.
  
Наверх
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #12 - 20. Августа 2015 :: 12:28
Печать  
сообщить(ProductData) выдает OLE.IProductCatalog, а сообщить(""+ProductData) выдает пустоту? Тогда лучше использовать первый вариант и не путаться.
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #13 - 20. Августа 2015 :: 12:32
Печать  
Код
Выбрать все
			   ProductData = EZCatalog.FindProductByID(ИДТовара);
			   Если ПустоеЗначение(ProductData) = 0 Тогда
				    ProductData.SetAttrValue("FIDDIRECTORIES",ИДГруппы);
				    ProductData.SetAttrValue("FSTATE",Окр(ВыборкаПоНоменклатуре.Остаток));
				    ProductData.SetAttrValue("FNAME",Наименование);
			   КонецЕсли; 


плохой вариант?
  

1&&2&&3
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #14 - 20. Августа 2015 :: 13:05
Печать  
Хммммм - неужели просто товар не нашелся.... блин!
Сейчас же проверю!
  
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Обертка для dll (не пойму какой тип возвращает метод)
Ответ #15 - 22. Августа 2015 :: 15:48
Печать  
Trad, действительно проблема была в том что товар просто не находился. Спасибо за подсказку! Все работает и без обертки.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать