Долго искал как подключить Атол 30Ф к 7.7 через драйвер версии 10. Все, что находил, было платно либо не понять, как использовать. В итоге решил сделать бесплатный шаблон.
1. Качаем драйвер Атола с их сайта и устанавливаем.
2. В папке с установленным драйвером находим addin_fptr10_x86.dll и регистрируем его через regsvr32
3. Берем и встраиваем в Вашу программу шаблон.
Драйвер успешно работает на WindowsXP Home SP3.
Перем FR
Процедура ОтветДрайвера(КомандаККМ)
Result=FR.errorCode();
ОшибкаПараметра=FR.errorDescription();
Сообщить("Ответ "+Result+" Ошибка "+ОшибкаПараметра);
КонецПроцедуры
Процедура ПодключениеККМ()
FR = СоздатьОбъект("AddIn.Fptr10");
//LIBFPTR_MODEL_ATOL_AUTO
FR.setSingleSetting(FR.LIBFPTR_SETTING_MODEL, строка(FR.LIBFPTR_MODEL_ATOL_30F));
FR.setSingleSetting(FR.LIBFPTR_SETTING_PORT, строка(FR.LIBFPTR_PORT_COM));
FR.setSingleSetting(FR.LIBFPTR_SETTING_COM_FILE, 1); //"COM"
FR.applySingleSettings();
Если FR.open()<>0 тогда //Соединение с ККТ
ОтветДрайвера("Подключение ККМ");
СтатусВозврата(0);
возврат;
КонецЕсли;
//Запрос параметров
FR.setParam(FR.LIBFPTR_PARAM_DATA_TYPE, FR.LIBFPTR_DT_STATUS);
FR.queryData();
НомерКассира = FR.getParamInt(FR.LIBFPTR_PARAM_OPERATOR_ID);
состояниеСмены = FR.getParamInt(FR.LIBFPTR_PARAM_SHIFT_STATE);
ДатаВремя = FR.getParamInt(FR.LIBFPTR_PARAM_DATE_TIME);
РежимККТ = FR.getParamInt(FR.LIBFPTR_PARAM_MODE);
ПодрежимККТ = FR.getParamInt(FR.LIBFPTR_PARAM_SUBMODE);
НомерЧека = FR.getParamInt(FR.LIBFPTR_PARAM_RECEIPT_NUMBER);
НомерДокумента = FR.getParamInt(FR.LIBFPTR_PARAM_DOCUMENT_NUMBER);
FR.setParam(1021, СокрЛП(Пользователь));
FR.operatorLogin();
FR.openShift(); //Открыть смену
FR.checkDocumentClosed();
ОтветДрайвера("Подключение ККМ");
КонецПроцедуры
Процедура РаботаККМ()
//Открыть чек
FR.setParam(1021, СокрЛП(Пользователь));
FR.operatorLogin();
Если ВозвратныйЧек=1 Тогда
FR.setParam(FR.LIBFPTR_PARAM_RECEIPT_TYPE, FR.LIBFPTR_RT_SELL_RETURN);
Иначе
FR.setParam(FR.LIBFPTR_PARAM_RECEIPT_TYPE, FR.LIBFPTR_RT_SELL);
КонецЕсли;
FR.openReceipt();
//Продажа
FR.setParam(FR.LIBFPTR_PARAM_COMMODITY_NAME, ЛЕв(Имя,20));
FR.setParam(FR.LIBFPTR_PARAM_PRICE, ЦенаПродажи);
FR.setParam(FR.LIBFPTR_PARAM_QUANTITY, Колич);
FR.setParam(FR.LIBFPTR_PARAM_TAX_TYPE, FR.LIBFPTR_TAX_NO );
Если ПустоеЗначение(Маркировка)=0 Тогда
FR.setParam(1162, СокрЛП(Маркировка));
КонецЕсли;
Если FR.registration() <> 0 тогда
ОтветДрайвера("Продажа");
Возврат;
КонецЕсли;
//Закрыть чек
Если ВозвратныйЧек=0 Тогда
//Оплата
FR.setParam(FR.LIBFPTR_PARAM_PAYMENT_TYPE, FR.LIBFPTR_PT_CASH);
FR.setParam(FR.LIBFPTR_PARAM_PAYMENT_SUM, СуммаВКассу);
FR.payment();
КонецЕсли;
FR.closeReceipt();
//Z-отчет
FR.setParam(1021, СокрЛП(Пользователь));
//fptr.setParam(1203, '123456789047');
FR.operatorLogin();
FR.setParam(FR.LIBFPTR_PARAM_REPORT_TYPE, FR.LIBFPTR_RT_CLOSE_SHIFT);
FR.report();
FR.checkDocumentClosed();
//X-отчет
FR.setParam(1021, СокрЛП(Пользователь));
//fptr.setParam(1203, '123456789047');
FR.operatorLogin();
FR.setParam(FR.LIBFPTR_PARAM_REPORT_TYPE, FR.LIBFPTR_RT_X);
FR.report();
//открыть ящик
FR.openDrawer();
КонецПроцедуры
Все подробности о методах можно прочитать в документации к драйверу, примеры нужно смотреть для "делфи" с поправкой на синтаксис 1С 7.7
Во вложенном файле то же самое, это для тех, кто хочет отблагодарить.