VBS
- Евгений Брешков
- Сообщения: 6
- Зарегистрирован: 26 окт 2015, 00:58
VBS
У меня нет возможности на VBS указать явный тип переменной, поэтому все функции с переменные OUT выдают ошибку. Причем это касается не только string, но и остальных.
Можно ли как то работать с типом Variant?
пока я выкрутился, КР один.
DevID = 1 всегда.
а на всех переменных OUT указываю Empty
но хотелось бы полноценную работу ))
спасибо)
(использую Меркурий 119)
Можно ли как то работать с типом Variant?
пока я выкрутился, КР один.
DevID = 1 всегда.
а на всех переменных OUT указываю Empty
но хотелось бы полноценную работу ))
спасибо)
(использую Меркурий 119)
Re: VBS
К сожалению не знаю вижуал бейсика
- Евгений Брешков
- Сообщения: 6
- Зарегистрирован: 26 окт 2015, 00:58
Re: VBS
Мне тяжело что-либо вам подсказать), но какая разница знаете вы его или нет?slan писал(а):К сожалению не знаю вижуал бейсика
хотелось бы, что бы получать выходные параметры.
сегодня запустил первому клиенту КР, но если я использую CancelCheck, потом Close.
после этого новый чек не открывается. Убрал эти функции.
VBScript имеет только один тип данных, называемый Variant.
но если я не ошибаюсь, эта переменная есть не только тут
Delphi, MS Access, C++ (из поиска)
(Донецк, ПО - Акцент)
Re: VBS
Я не понимаю чего Вы от меня тогда хотите?
Выходные параметры прекрасно читаются из 1С (старше восьмерки) и из С++.
Как получать выходные параметры из вижуалбейсика, повторюсь, не знаю.
Если хотите, могу написать как это делается на С++
Выходные параметры прекрасно читаются из 1С (старше восьмерки) и из С++.
Как получать выходные параметры из вижуалбейсика, повторюсь, не знаю.
Если хотите, могу написать как это делается на С++
- Евгений Брешков
- Сообщения: 6
- Зарегистрирован: 26 окт 2015, 00:58
Re: VBS
попробуйте сделать на С++slan писал(а):Я не понимаю чего Вы от меня тогда хотите?
Выходные параметры прекрасно читаются из 1С (старше восьмерки) и из С++.
Как получать выходные параметры из вижуалбейсика, повторюсь, не знаю.
Если хотите, могу написать как это делается на С++
DeviceID тип переменной = Variant
OpenWithParams выдает ошибку внутри вашей функции - ошибка типа переменной
я прошу рассмотреть вот такой вариант, и если это возможно, разрешить Variant получить необходимое значение BSTR (стать другим типом - как вам удобней)
то же по остальным функциям. где LONG, или DOUBLE, или BSTR.
за ранее благодарен) и еще раз прошу очень и очень слезно)
тенденция наблюдается такая: КР Datecs возможно перепрограммировать только старые. новые невозможно. поэтому все сейчас покупают у вас 119. у меня уже спрашивают про другие ваши модели.
Re: VBS
Драйвер разрабатывался в соответствии с документом компании 1С под названием "Требования к разработке драйверов для фискальных регистраторов" (от 17 августа 2009).
Все типы данных прописаны именно в нём, и изменяться не будут, так как прежде всего драйвер разрабатывался для 1С.
Все типы данных прописаны именно в нём, и изменяться не будут, так как прежде всего драйвер разрабатывался для 1С.
- Евгений Брешков
- Сообщения: 6
- Зарегистрирован: 26 окт 2015, 00:58
Re: VBS
хорошо, что делать нам?slan писал(а):Драйвер разрабатывался в соответствии с документом компании 1С под названием "Требования к разработке драйверов для фискальных регистраторов" (от 17 августа 2009).
Все типы данных прописаны именно в нём, и изменяться не будут, так как прежде всего драйвер разрабатывался для 1С.
Re: VBS
Как может драйвер разрабатываться под конкретное прикладное ПО? Он же на то и драйвер, чтобы работать с любым ПО.slan писал(а):Драйвер разрабатывался в соответствии с документом компании 1С под названием "Требования к разработке драйверов для фискальных регистраторов" (от 17 августа 2009).
Все типы данных прописаны именно в нём, и изменяться не будут, так как прежде всего драйвер разрабатывался для 1С.
Как может разработчик прикладного ПО предъявлять требования к драйверу? В нормальной жизни ведь всё наоборот.
Конечно, если Инкотекс является дочерней структурой 1С, то все вопросы отпадают. Если это не так, то разработчикам стоит учитывать, что кроме 1С есть и другие программы.
Да и проблема-то не требует менять принцип работы Вашего ПО. Просто при проверке типа выходного параметра, если он Variant, то предварительно преобразовывать его BSTR и работать дальше как и сейчас. Заметьте, что возвращать можно уже преобразованный параметр, VBS будет нормально с ним работать
Re: VBS
Замечу что данный драйвер является OLE-сервером, а не драйвером в обычном понимании этого термина. Все правильно, драйвер разработан не под конкретное ПО, а под любое ПО по технологии Microsoft OLE Automation. Драйвер не обязан работать вместе со всеми известными языками программирования. Большинство пользователей как-то работают же с драйвером, поищите по форуму.Как может драйвер разрабатываться под конкретное прикладное ПО? Он же на то и драйвер, чтобы работать с любым ПО.
Надеюсь ответ выше проясняет ответ на этот вопрос. Однако ж документ такой есть, и игнорить его в пользу программистов vbs я не могу. Впрочем, если я получу задание разработать драйвер именно под vbs от начальства - то естественно я этим займусь, контакты есть на сайте.Как может разработчик прикладного ПО предъявлять требования к драйверу? В нормальной жизни ведь всё наоборот.
Это не наша проблема, а проблема программирования на vbs. Как Вы себе представляете процесс предварительного преобразования? Например, есть метод getCashierName(BSTR* name). Я не могу поставить VARIANT вместо BSTR, потому как у всех других пользователей драйвера попадают программыДа и проблема-то не требует менять принцип работы Вашего ПО. Просто при проверке типа выходного параметра, если он Variant, то предварительно преобразовывать его BSTR и работать дальше как и сейчас. Заметьте, что возвращать можно уже преобразованный параметр, VBS будет нормально с ним работать
Посоветовать могу написать прослойку, как некоторые делали для 1с 7.7 (с которой данный драйвер версии 2.х так же не работает в плане выходных параметров). Или использовать другой язык программированияхорошо, что делать нам?
Re: VBS
И, кстати, по поводу термина "драйвер". Меркурий-119, оборудованный com-портом, не требует каких-либо специфических драйверов от производителя. С ним можно работать напрямую, через com-порт.
Драйвер (а точнее OLE-сервер), о котором идёт речь на этом форуме, лишь облегчает работу с Меркурий-119, выполняя всё черновую работу по поддержке протокола. Он совсем не обязателен. Если есть желание, можно написать собственную реализацию протокола Меркурий-119, на любом желаемом языке программирования и под любую операционную систему, руководство по программированию есть в свободном доступе на этом сайте.
Драйвер (а точнее OLE-сервер), о котором идёт речь на этом форуме, лишь облегчает работу с Меркурий-119, выполняя всё черновую работу по поддержке протокола. Он совсем не обязателен. Если есть желание, можно написать собственную реализацию протокола Меркурий-119, на любом желаемом языке программирования и под любую операционную систему, руководство по программированию есть в свободном доступе на этом сайте.
- Евгений Брешков
- Сообщения: 6
- Зарегистрирован: 26 окт 2015, 00:58
Re: VBS
насколько я понимаю, если выходной параметр метода getCashierName(BSTR* name) сделать VARIANT, а потом преобразовать его в BSTR*, то все будет работать нормально.slan писал(а):Это не наша проблема, а проблема программирования на vbs. Как Вы себе представляете процесс предварительного преобразования? Например, есть метод getCashierName(BSTR* name). Я не могу поставить VARIANT вместо BSTR, потому как у всех других пользователей драйвера попадают программыДа и проблема-то не требует менять принцип работы Вашего ПО. Просто при проверке типа выходного параметра, если он Variant, то предварительно преобразовывать его BSTR и работать дальше как и сейчас. Заметьте, что возвращать можно уже преобразованный параметр, VBS будет нормально с ним работать
но ваша позиция понятна (
Re: VBS
Нет. Это не так.
Только что проверил специально. Создал тестовый метод, в котором один выходной параметр типа VARIANT*. Отдаю в него тестовую строку.
Затем вызываю этот метод из тестового приложения, передав в него адрес строки (то есть точно тот же код, как если бы метод требовал BSTR*):
В ответ получил экзепшн "Неверно задана вызываемая сторона".
Если вызывать:
то всё чудесно, однако это приведёт к тому о чем я и говорил - у всех пользователей драйвера перестанут работать программы
p.s. если в драйвере преобразовать строку находящуюся в Variant к BSTR, и попытаться отдать в выходной параметр, то драйвер просто не компилируется
Только что проверил специально. Создал тестовый метод, в котором один выходной параметр типа VARIANT*. Отдаю в него тестовую строку.
Затем вызываю этот метод из тестового приложения, передав в него адрес строки (то есть точно тот же код, как если бы метод требовал BSTR*):
Код: Выделить всё
WideString teststr;
result = Obj.OleFunction("TestMethod", &teststr);
Если вызывать:
Код: Выделить всё
Variant teststr;
result = Obj.OleFunction("TestMethod", &teststr);
p.s. если в драйвере преобразовать строку находящуюся в Variant к BSTR, и попытаться отдать в выходной параметр, то драйвер просто не компилируется
- Евгений Брешков
- Сообщения: 6
- Зарегистрирован: 26 окт 2015, 00:58
Re: VBS
спасибо большое, что потратили на меня время)slan писал(а):Нет. Это не так.
Только что проверил специально. Создал тестовый метод, в котором один выходной параметр типа VARIANT*. Отдаю в него тестовую строку.
Затем вызываю этот метод из тестового приложения, передав в него адрес строки (то есть точно тот же код, как если бы метод требовал BSTR*):В ответ получил экзепшн "Неверно задана вызываемая сторона".Код: Выделить всё
WideString teststr; result = Obj.OleFunction("TestMethod", &teststr);
Если вызывать:то всё чудесно, однако это приведёт к тому о чем я и говорил - у всех пользователей драйвера перестанут работать программыКод: Выделить всё
Variant teststr; result = Obj.OleFunction("TestMethod", &teststr);
p.s. если в драйвере преобразовать строку находящуюся в Variant к BSTR, и попытаться отдать в выходной параметр, то драйвер просто не компилируется