() Можно так : В обычном модуле приложения написать соединение с объектом Сбербанка:
1. В начале модуля обозначить глобальные переменные:
///// подключение эквайринга СБ РФ
Перем МодульОбъектаДрайвера Экспорт; // Модуль Объекта Обработки.СберБанкЭквайринговаяСистема
Перем ОбъектДрайвераСБРФ Экспорт; // Эквайринговый терминал СБ РФ
Перем Драйвер Экспорт;
Перем ОшибкиПриИсполненииСБРФ Экспорт;
////// Переменная ECR - это объект ККМ, чтобы печатать на ней все что угодно, в том числе слип чеки
Перем ECR Экспорт;
2. В удобном месте пишем функцию подключения
// Функция создаёт объект драйвера. Все это скопировано из Модуля Объекта Обработка.СберБанкЭквайринговаяСистема
// (API v2.0)
//
// Параметры:
// Объект - <*>
// - Выходной параметр; объект драйвера торгового
// оборудования.
//
// Модель - <Строка>
// - Модель торгового оборудования, для которой
// создаётся экземпляр драйвера.
//
// Параметры - <Структура>
// - Параметры подключаемого торгового оборудования.
//
// Возвращаемое значение:
// <ПеречислениеСсылка.ТООшибки*> - Результат работы функции.
//
Функция СоздатьОбъектДрайвераСБРФ(Объект, Модель, Параметры) Экспорт
Результат = мНетОшибки;
ОписаниеОшибки = "";
ШиринаСлипЧека = Константы.ШиринаСлипЧекаСБРФ.Получить();//Неопределено;
СовместимыеВерсии = 2.05;//Неопределено;
/// Это уже дописано
Параметры = Новый Структура;
Параметры.Вставить("ШиринаСлипЧека", ШиринаСлипЧека);
Параметры.Вставить("СовместимыеВерсии", СовместимыеВерсии);
//Это уже дописано
Параметры.Свойство("ШиринаСлипЧека", ШиринаСлипЧека);
Параметры.Свойство("СовместимыеВерсии", СовместимыеВерсии);
Если ШиринаСлипЧека = Неопределено Или СовместимыеВерсии = Неопределено Тогда
Результат = мОшибкаПараметровНастройки;
Предупреждение("ОшибкаПараметровНастройки");
Иначе
Попытка
// Подключение внешней компоненты
ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject");
Драйвер = Новый("AddIn.SBRFCOMExtension");
//Предупреждение("Драйвер эквайрингового терминал СБ РФ загружен.");
Исключение
Результат = мОшибкаЗагрузкиДрайвера;
ОписаниеОшибки = "Невозможно подключить внешнюю компоненту.
| Проверьте, что внешняя компонента корректно установлена и имеет ту же версию,
| что и требуемая обработкой обслуживания.";
Предупреждение(ОписаниеОшибки);
КонецПопытки;
Если Результат = мНетОшибки Тогда
Попытка
мВерсияИзДрайвера = Неопределено;//Драйвер.ПолучитьНомерВерсии(); // в драйвере получение версии на данный момент не реализовано
ВызватьИсключение "Версия драйвера не определена";
Исключение
Если Не ВерсииСовместимыСБРФ(СовместимыеВерсии) Тогда
Сообщить("""" + Модель + """:" + Символы.ПС +
"Внимание! Невозможно определить версию драйвера." + Символы.ПС +
"Требуемая версия: " + мВерсияТребуемая + Символы.ПС +
"Корректная работа драйвера не гарантируется", СтатусСообщения.Внимание);
КонецЕсли;
КонецПопытки;
Если мВерсияИзДрайвера <> Неопределено И (Не ВерсииРавныСБРФ() И Не ВерсииСовместимыСБРФ(СовместимыеВерсии)) Тогда
Сообщить("""" + Модель + """:" + Символы.ПС +
"Внимание! Текущая версия драйвера отличается от поддерживаемой." + Символы.ПС +
"Текущая версия: " + мВерсияИзДрайвера + Символы.ПС +
"Требуемая версия: " + мВерсияТребуемая + Символы.ПС +
"Корректная работа драйвера не гарантируется", СтатусСообщения.Внимание);
КонецЕсли;
Объект = Новый Структура("Модель, Параметры, Драйвер, ОписаниеОшибки",
Модель, Параметры, Драйвер, ОписаниеОшибки);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции // СоздатьОбъектДрайвера()
3. Создаем собственно объект
Сообщить(СоздатьОбъектДрайвераСБРФ(ОбъектДрайвераСБРФ,,));
4. Теперь самое фантастическое - надо заставить его работать, а это непросто, например:
В одном из общих модуле пишем процедуру, которая заставит ккм печатать как принтер:
Процедура ПечатьНеФискальногоДокумента10Драйвер(МассивСтрок) Экспорт
// Открываем нефискальный документ
Результат = ECR.beginNonfiscalDocument();
Если Результат <> 0 Тогда
сообщить("Ошибка ККМ : " + ECR.errorCode() + " " + ECR.ErrorDescription(), СтатусСообщения.Важное);
КонецЕсли;
Попытка
Для Каждого ЭлементМассива из МассивСтрок Цикл
ECR.setParam(ECR.LIBFPTR_PARAM_TEXT, ЭлементМассива);
Результат = ECR.printText();
Если Результат <> 0 Тогда
сообщить("Ошибка ККМ : " + ECR.errorCode() + " " + ECR.ErrorDescription(), СтатусСообщения.Важное);
КонецЕсли;
КонецЦикла;
// Закрываем нефискальный документ
Результат = ECR.endNonfiscalDocument();
Если Результат <> 0 Тогда
сообщить("Ошибка ККМ : " + ECR.errorCode() + " " + ECR.ErrorDescription(), СтатусСообщения.Важное);
КонецЕсли;
Результат = ECR.cut(); // посылаем отрез
Если Результат <> 0 Тогда
сообщить("Ошибка ККМ : " + ECR.errorCode() + " " + ECR.ErrorDescription(), СтатусСообщения.Важное);
КонецЕсли;
Исключение
Сообщить("Ошибка ККМ. Операция отменена."); Return;
КонецПопытки;
КонецПроцедуры
5. Переменная ECR - это объект драйвера ККМ, дальше процедура которая подключит любой драйвер 6, 8, 10
Процедура СоздатьОбъектДрайвераККМ()
/////////////////////////////// Загрузка компоненты драйвера версии 6.х ///////////////////////////////////////
глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ВерсияДрайвераНеОпределена;
глНомерВерсииДрайвераККМ = 0;
Попытка
// создаем объект общего драйвера ККМ для Windows 7 x64
ЗагрузитьВнешнююКомпоненту("C:\Program Files\Atol\Drivers\Bin\FPRNM1C.dll");
ECR = Новый("AddIn.FprnM45");
глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ6Версии;
глНомерВерсииДрайвераККМ = 6;
исключение
Попытка
// создаем объект общего драйвера ККМ для Windows 7 x32
ЗагрузитьВнешнююКомпоненту("C:\Program Files (x86)\Atol\Drivers\Bin\FPRNM1C.dll");
ECR = Новый("AddIn.FprnM45");
глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ6Версии;
глНомерВерсииДрайвераККМ = 6;
Исключение
//Предупреждение("Ошибка загрузки внешней компоненты FPRNM1C.dll");
// ЗавершитьРаботуСистемы();
КонецПопытки;
КонецПопытки;
/////////////////////////////// Загрузка компоненты драйвера версии 6.х ///////////////////////////////////////
/////////////////////////////// Загрузка компоненты драйвера версии 8.х ///////////////////////////////////////
Если глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ВерсияДрайвераНеОпределена Тогда
Попытка
// создаем объект общего драйвера ККМ для Windows 7 x64
ЗагрузитьВнешнююКомпоненту("C:\Program Files\Atol\Drivers8\Bin_Free\FPRNM1C.dll");
ECR = Новый("AddIn.FprnM45");
глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ8Версии54ФЗ;
глНомерВерсииДрайвераККМ = 8;
исключение
Попытка
// создаем объект общего драйвера ККМ для Windows 7 x32
ЗагрузитьВнешнююКомпоненту("C:\Program Files (x86)\Atol\Drivers8\Bin_Free\FPRNM1C.dll");
ECR = Новый("AddIn.FprnM45");
глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ8Версии54ФЗ;
глНомерВерсииДрайвераККМ = 8;
Исключение
// Предупреждение("Ошибка загрузки внешней компоненты FPRNM1C.dll");
// ЗавершитьРаботуСистемы();
КонецПопытки;
КонецПопытки;
КонецЕсли;
/////////////////////////////// Загрузка компоненты драйвера версии 8.х ///////////////////////////////////////
/////////////////////////////// Загрузка компоненты драйвера версии 10.х ///////////////////////////////////////
Если глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ВерсияДрайвераНеОпределена Тогда
Попытка
// создаем объект общего драйвера ККМ
ECR = Новый COMОбъект("AddIn.Fptr10");
//Подключение по COM порту (не работает по неизвестной причине)
//ECR.setSingleSetting(ECR.LIBFPTR_SETTING_MODEL, Строка(ECR.LIBFPTR_MODEL_ATOL_AUTO));
//ECR.setSingleSetting(ECR.LIBFPTR_SETTING_PORT, Строка(ECR.LIBFPTR_PORT_COM));
//ECR.setSingleSetting(ECR.LIBFPTR_SETTING_COM_FILE, "COM03");
//ECR.setSingleSetting(ECR.LIBFPTR_SETTING_BAUDRATE, Строка(ECR.LIBFPTR_PORT_BR_115200));
//ECR.applySingleSettings();
//Подключение по COM порту (работает, в драйвере ККТ надо установить канал связи USB)
ECR.setSingleSetting(ECR.LIBFPTR_SETTING_PORT, Строка(ECR.LIBFPTR_PORT_USB));
ECR.applySingleSettings();
ECR.Open();
Сообщить("Версия драйвера :" + ECR.Version());
глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ8Версии54ФЗ;
глНомерВерсииДрайвераККМ = 10;
исключение
Сообщить("глПринтер не создан AddIn.Fptr10 " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
/////////////////////////////// Загрузка компоненты драйвера версии 10.х ///////////////////////////////////////
Если глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ6Версии тогда
Сообщить("Версия драйвера ККМ 6.х.х загружена.", статусСообщения.Информация);
ИначеЕсли глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ8Версии54ФЗ И глНомерВерсииДрайвераККМ = 8 тогда
Сообщить("Версия драйвера ККМ 8.х.х загружена.", статусСообщения.Информация);
ИначеЕсли глВерсияДрайвераККМ = Перечисления.ВерсияДрайвераККМ.ДрайверККМ8Версии54ФЗ И глНомерВерсииДрайвераККМ = 10 Тогда
Сообщить("Версия драйвера ККМ 10.х.х загружена.", статусСообщения.Информация);
Иначе
Сообщить("Невозможно подключить компоненту драйвера ККМ.", статусСообщения.Важное);
Сообщить("1. Проверьте, что компонента корректно установлена и имеет ту же версию", СтатусСообщения.Важное);
Сообщить("что и требуемая обработкой обслуживания.", СтатусСообщения.Важное);
Сообщить("2. Проверьте что драйвер КММ установлен по умолчанию в каталогах:", СтатусСообщения.Важное);
Сообщить("C:\Program Files\Atol\Drivers\Bin\FPRNM1C.dll (для 6 версии драйвера)", СтатусСообщения.Важное);
Сообщить("или C:\Program Files (x86)\Atol\Drivers\Bin\FPRNM1C.dll (для 6 версии драйвера)", СтатусСообщения.Важное);
Сообщить("C:\Program Files\Atol\Drivers8\Bin_Free\FPRNM1C.dll (для 8 версии драйвера)", СтатусСообщения.Важное);
Сообщить("или C:\Program Files (x86)\Atol\Drivers8\Bin_Free\FPRNM1C.dll (для 8 версии драйвера)", СтатусСообщения.Важное);
Сообщить("C:\Program Files\ATOL\Drivers10\KKT\bin\fptr10.dll (для 10 версии драйвера)", СтатусСообщения.Важное);
Сообщить("C:\Program Files (x86)\ATOL\Drivers10\KKT\bin\fptr10.dll (для 10 версии драйвера)", СтатусСообщения.Важное);
КонецЕсли;
КонецПроцедуры
6. Обработка. См. приложенный файл.
7. после некоторых танцев с бубнами - на ККМ можно будет фото печатать. Не только Сбербанковские слип чеки.
Прикрепленные файлы:
СберБанкЭквайринговаяСистема.epf