Специалисты 1С прошу консультации.
Показывать по
10
20
40
сообщений
- 1
- 2
15.08.2011
11:08
#1
"Здравствуйте, господа.
Я не спец в сабже.
Написал некий модуль ActveX для подключения приборов(ВЗВЕШИВАНИЕ ПОСРЕДСТВОМ ТЕНЗОДАТЧИКОВ) к 1с.
Совместима с 1С версии 8.
Необходимо зарегистрировать при помощи RegSvr32.
После этого возможен вызов функции взвешивания.
В 1С версии 8 выглядит так
Перем w;
....
....
....
....
Весы = Новый COMОбъект("AWVSP.WeightClass");
Сообщить("Соединение установлено.");
Весы.TakeWeight("COM1",9600,1,w);
Сообщить(w);
И так работает, впринципе нормально.
Но одному клинету захотелось к 7.7.
Фиг с ним, там тожде вызывается этот компонент.Немного по другому...
Весы=Создатьобъект("AWVSP.WeightClass");
Весы.TakeWeight("COM1",9600,0,w);
Сообщить(w);
Форма появляется и вес в ней отображается.Но в переменной w значение не появляется.
Подскажите в чем может быть трабла.Может кто знает."
Я не спец в сабже.
Написал некий модуль ActveX для подключения приборов(ВЗВЕШИВАНИЕ ПОСРЕДСТВОМ ТЕНЗОДАТЧИКОВ) к 1с.
Совместима с 1С версии 8.
Необходимо зарегистрировать при помощи RegSvr32.
После этого возможен вызов функции взвешивания.
В 1С версии 8 выглядит так
Перем w;
....
....
....
....
Весы = Новый COMОбъект("AWVSP.WeightClass");
Сообщить("Соединение установлено.");
Весы.TakeWeight("COM1",9600,1,w);
Сообщить(w);
И так работает, впринципе нормально.
Но одному клинету захотелось к 7.7.
Фиг с ним, там тожде вызывается этот компонент.Немного по другому...
Весы=Создатьобъект("AWVSP.WeightClass");
Весы.TakeWeight("COM1",9600,0,w);
Сообщить(w);
Форма появляется и вес в ней отображается.Но в переменной w значение не появляется.
Подскажите в чем может быть трабла.Может кто знает."
15.08.2011
13:38
#2
"А чего это 3-й параметр для 8-ки = "1", а для 7-ки = "0"?
А если попробовать переменную "w" определять перед вызовом метода внешней компоненты?
А если попробовать переменную "w" определять перед вызовом метода внешней компоненты?
w = 0;"
Весы.TakeWeight("COM1",9600,0,w);
Сообщить(w);
15.08.2011
14:20
#3
Это парамет, нужный исключительно прибору.И к возвращаемому значению отношения не имеет.
Там может быть и то и другое.
Важно отметить, что dll содержит код формы с отображением веса на платформе.
И оно появляется в обоих случаях.
Функция TakeWeight(BSTR port, int boud, int req, int* RetVal).
Следует обратить внимание на int* RetVal-посдений параметр в ней.
Возможно в механизме передачи параметров и кроется лажа.
Но я читал, что в 1С параметры передаются по ссылке.
И в 1с8 это работает.
А в 1с77 форма появляется, вес отображается, но в переменную w ничего не возвращается.
Там может быть и то и другое.
Важно отметить, что dll содержит код формы с отображением веса на платформе.
И оно появляется в обоих случаях.
Функция TakeWeight(BSTR port, int boud, int req, int* RetVal).
Следует обратить внимание на int* RetVal-посдений параметр в ней.
Возможно в механизме передачи параметров и кроется лажа.
Но я читал, что в 1С параметры передаются по ссылке.
И в 1с8 это работает.
А в 1с77 форма появляется, вес отображается, но в переменную w ничего не возвращается.
15.08.2011
14:26
#4
если попробовать переменную "w" определять перед вызовом метода внешней компоненты то после вызова в ней и будет то значение которым его определили.
Как будто ничего и не произошло.
Но в восьмерке то работает...
Как будто ничего и не произошло.
Но в восьмерке то работает...
15.08.2011
15:30
#6
это указатель на целочисленный тип.
Если я правильно читал 1С всегда должен передавать параметр по ссылке.
И восьмерка так и делает.
Семерка же как то по другому.
Причем я провел эксперимент.
Я приинциализировал переменную до вызова внешней функции и отображал ее уже внутри dll.
При получении управления эта переменная была равна значению, которое я выбрал для инициализации еще в 1с.
А при потери управления(когда уже произошло взвешивание)равна полученному4 с прибора весу.
Но что раздражает так то что при возвращении в 1с переменная равна тому же значению, которое я выбрал для инициализации.
Как будто они работают с разными переменными.Наверное как то так и есть.
Если я правильно читал 1С всегда должен передавать параметр по ссылке.
И восьмерка так и делает.
Семерка же как то по другому.
Причем я провел эксперимент.
Я приинциализировал переменную до вызова внешней функции и отображал ее уже внутри dll.
При получении управления эта переменная была равна значению, которое я выбрал для инициализации еще в 1с.
А при потери управления(когда уже произошло взвешивание)равна полученному4 с прибора весу.
Но что раздражает так то что при возвращении в 1с переменная равна тому же значению, которое я выбрал для инициализации.
Как будто они работают с разными переменными.Наверное как то так и есть.
15.08.2011
16:31
#7
Что такое "потеря управления"? Почему не сделать в DLL функцию вместо процедуры для возврата простого числа?
- 1
- 2
Читают тему
(гостей: 1)