|   |   | 
| 
 | Сделать запись в таблицу Штрих-М | ☑ | ||
|---|---|---|---|---|
| 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? Для кассира всегда второе поле было. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |