Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[1С:Предприятие 7.7]

Специалисты 1С прошу консультации.

rumvit
читатель
офлайн
Дата регистрации: 15.08.2011
Сообщений: 7
Пост №1
 
15.08.2011 11:08

"Здравствуйте, господа.<br>Я не спец в сабже.<br>Написал некий модуль ActveX для подключения приборов(ВЗВЕШИВАНИЕ ПОСРЕДСТВОМ ТЕНЗОДАТЧИКОВ) к 1с.<br> <br>Совместима с 1С версии 8.<br>Необходимо зарегистрировать при помощи RegSvr32.<br>После этого возможен вызов функции взвешивания.<br><br>В 1С версии 8 выглядит так<br><br>Перем w; <br>....<br>....<br>....<br>....<br><br>                   Весы = Новый COMОбъект("AWVSP.WeightClass"); <br>                   Сообщить("Соединение установлено.");<br>                   Весы.TakeWeight("COM1",9600,1,w);<br>                   Сообщить(w);<br>И так работает, впринципе нормально.<br>Но одному клинету захотелось к 7.7.<br>Фиг с ним, там тожде вызывается этот компонент.Немного по другому...<br>      <br>             Весы=Создатьобъект("AWVSP.WeightClass");<br>            <br>            Весы.TakeWeight("COM1",9600,0,w);<br>             Сообщить(w);<br>Форма появляется и вес в ней отображается.Но в переменной w значение не появляется.<br>Подскажите в чем может быть трабла.Может кто знает."

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №2
 
15.08.2011 13:38

"А чего это 3-й параметр для 8-ки = "1", а для 7-ки = "0"?<br>А если попробовать переменную "w" определять перед вызовом метода внешней компоненты?<br> <br><pre>w = 0;<br>Весы.TakeWeight("COM1",9600,0,w);<br>Сообщить(w); </pre>"

rumvit
читатель
офлайн
Дата регистрации: 15.08.2011
Сообщений: 7
Пост №3
 
15.08.2011 14:20

Это парамет, нужный исключительно прибору.И к возвращаемому значению отношения не имеет.<br>Там может быть и то и другое.<br>Важно отметить, что dll содержит код формы с отображением веса на платформе.<br>И оно появляется в обоих случаях.<br>Функция TakeWeight(BSTR port, int boud, int req, int* RetVal).<br>Следует обратить внимание на int* RetVal-посдений параметр в ней.<br>Возможно в механизме передачи параметров и кроется лажа.<br>Но я читал, что в 1С параметры передаются по ссылке.<br>И в 1с8 это работает.<br>А в 1с77 форма появляется, вес отображается, но в переменную w ничего не возвращается.

rumvit
читатель
офлайн
Дата регистрации: 15.08.2011
Сообщений: 7
Пост №4
 
15.08.2011 14:26

если попробовать переменную "w" определять перед вызовом метода внешней компоненты то после вызова в ней и будет то значение которым его определили.<br>Как будто ничего и не произошло.<br>Но в восьмерке то работает...

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №5
 
15.08.2011 14:50

А "int*" это какой тип, может 7.7 просто не поддерживает этот тип?

rumvit
читатель
офлайн
Дата регистрации: 15.08.2011
Сообщений: 7
Пост №6
 
15.08.2011 15:30

это указатель на целочисленный тип.<br>Если я правильно читал 1С всегда должен передавать параметр по ссылке.<br>И восьмерка так и делает.<br>Семерка же как то по другому.<br>Причем я провел эксперимент.<br>Я приинциализировал переменную до вызова внешней функции и отображал ее уже внутри dll.<br>При получении управления эта переменная была равна значению, которое я выбрал для инициализации еще в 1с.<br>А при потери управления(когда уже произошло взвешивание)равна полученному4 с прибора весу.<br>Но что раздражает так то что при возвращении в 1с переменная равна тому же значению, которое я выбрал для инициализации.<br>Как будто они работают с разными переменными.Наверное как то так и есть.

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №7
 
15.08.2011 16:31

Что такое "потеря управления"? Почему не сделать в DLL функцию вместо процедуры для возврата простого числа?

rumvit
читатель
офлайн
Дата регистрации: 15.08.2011
Сообщений: 7
Пост №8
 
15.08.2011 17:32

Так простое число и возвращается.<br>Это именно функция.По сигнатуре разве не видно?.<br>Принимает указатель на целочисленное и в него по адресу пишет результат.

rumvit
читатель
офлайн
Дата регистрации: 15.08.2011
Сообщений: 7
Пост №9
 
15.08.2011 17:33

Потеря управления-когда завершается работа функции.

Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №10
 
15.08.2011 18:40

"Я всегда думал, что функции выглядят так:<br><pre>w = Весы.TakeWeight("COM1",9600,0);<br> </pre>"

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация