![]() |
![]() |
![]() |
|
Сделать запись в таблицу Штрих-М | ☑ | ||
---|---|---|---|---|
0
Iceboy187
25.12.19
✎
10:11
|
Необходимо из 1с, перезаписать строку в таблицу "Пароли кассиров и администраторов" драйвера Штрих-М. Исходя из найденной информации интернета и справочника программиста для Штрих-м, пробовал выполнять следующий код:
Код: ПодключитьВнешнююКомпоненту("AddIn.SMDrvFR1C22"); ФискальныйРегистратор = Новый ("AddIn.SMDrvFR1C22"); ФискальныйРегистратор.Password =30; ФискальныйРегистратор.TableNumber = 2; ФискальныйРегистратор.RowNumber = 2; ФискальныйРегистратор.FieldNumber = 30; ФискальныйРегистратор.ValueOfFieldString = ЭтаФорма.ФИО; ФискальныйРегистратор.GetFieldStruct(); ФискальныйРегистратор.WriteTable(); Объект AddIn.SMDrvFR1C22 создается. Но далее возникает ошибка {ВнешняяОбработка.ТестРаботыСДрайверомКассыККМ.Форма.Форма.Форма(145)}: Поле объекта не обнаружено (Password) ФискальныйРегистратор.Password =30; Подскажите куда копать? Может есть пример кода для решения схожей задачи? платформа: 8.3.13.1809 конфигурация: Розница, редакция 2.2 (2.2.11.16) (переписанная) устройство: 028 ККМ ШТРИХ-ФР-К версия 01 14 217278 драйвер: 4.14.792 |
|||
1
SSSSS_AAAAA
25.12.19
✎
10:40
|
(0) Ставишь на проблемную строку точку останова и в отладчике внимательно по Shift-F9 изучаешь свой ФискальныйРегистратор
|
|||
2
Iceboy187
25.12.19
✎
11:52
|
||||
3
Масянька
25.12.19
✎
11:55
|
(0) ИМХО, пароли и имена кассиров не пишутся извне. По крайней мере, год назад было так.
Зайди в драйвер и запиши, что надо. |
|||
4
SSSSS_AAAAA
25.12.19
✎
12:12
|
(3) Пишутся. И код для записи даже правильный. При условии полной прозрачности внешней компоненты. Но, вот только судя по тому, что пишет товарисч топикстартер, обертка над драйвером в виде внешней компоненты таки не все свойства драйвера обрататывает/реализует.
|
|||
5
Галахад
гуру
25.12.19
✎
12:42
|
Наверное нужно по старинке работать через драйвер Штриха.
ПодключитьВнешнююКомпоненту("AddIn.DrvFR"); ФискальныйРегистратор = Новый COMОбъект("AddIn.DrvFR"); |
|||
6
SSSSS_AAAAA
25.12.19
✎
12:54
|
(5) А вот очень даже может быть.
|
|||
7
Iceboy187
25.12.19
✎
14:18
|
(5) (6) Через AddIn.DrvFR дело пошло гораздо дальше. Но выполнение метода GetFieldStruct вернуло 51. Исходя из инструкции программиста для штриха:
"Некорректные параметры в команде" В самой инструкции к методу не указаны никакие параметры. Что это может значить? |
|||
8
Галахад
гуру
25.12.19
✎
14:23
|
(7) Гм. А код?
|
|||
9
Iceboy187
25.12.19
✎
14:27
|
(8) Вот код
|
|||
10
Iceboy187
25.12.19
✎
14:27
|
ПодключитьВнешнююКомпоненту("AddIn.DrvFR");
ФискальныйРегистратор = Новый ("AddIn.DrvFR"); фискальныйРегистратор.COMпортЛУ = 4; фискальныйРегистратор.НомерCOMпорта = 4; ФискальныйРегистратор.Password =30; ФискальныйРегистратор.TableNumber = 2; ФискальныйРегистратор.RowNumber = 2; ФискальныйРегистратор.FieldNumber = 30; ФискальныйРегистратор.ValueOfFieldString = ЭтаФорма.ФИО; ФискальныйРегистратор.GetFieldStruct(); ФискальныйРегистратор.WriteTable(); ФискальныйРегистратор.disconnect(); |
|||
11
Галахад
гуру
25.12.19
✎
14:30
|
Там, ИМХО еще и фискальныйРегистратор.Connect должно быть.
|
|||
12
Масянька
25.12.19
✎
14:39
|
(10) Попробуй:
ФискальныйРегистратор.ValueOfFieldString = СокрЛП(ЭтаФорма.ФИО); |
|||
13
Iceboy187
25.12.19
✎
15:30
|
(11) CheckConnection() возвращает 0. Т.е соединение устанавливается. Но на всякий случай попробовал, не помогает
(12) Не помогает |
|||
14
SSSSS_AAAAA
25.12.19
✎
15:31
|
(7) А зачем тебе эта команда?
Вот рабочий код из рабочей проги, правда на немного другом языке: Procedure SetCasher Lparameters lcCashier ***** Установка кассира в ККМ With This.Drv .Password = 30 .TableNumber = 2 && пароли кассиров .RowNumber = 1 && первый кассир .FieldNumber = 2 && значение (макс. 64 симв.) .ValueOfFieldString = lcCashier .WriteTable() Endwith Как можно увидеть никакая команда полчения структуры не используется. |
|||
15
Сияющий в темноте
26.12.19
✎
00:23
|
getfieldstruct не обязательно,так как оно используется только для задания типа поля.
и,если вы его делаете,то запись строки делать после него. из vbscript все прекрасно пишется. и это,в начале команда Connect,которая должна вернуть ноль илм код ошибки. |
|||
16
SSSSS_AAAAA
26.12.19
✎
11:09
|
(10) "ФискальныйРегистратор.FieldNumber = 30;"
Какое к черту поле с номером 30? Для кассира всегда второе поле было. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |