Показать сообщение отдельно
Старый 11.12.2009, 10:36   #24  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Интегрировали Аксапту с фискальным регистратором FPrint-02K.

1) Покупаете фискальный регистратор FPrint-02K (это принтер с фискальной памятью), http://www.atol.ru/products/fr/fprint/. Регистратор стоит около 30 тыс. рублей.

2) Скачиваете драйверы Atoll с : http://www.atol.ru/support/programs/

3) Устанавливаете драйверы на том компьютере, с которого будут печататься чеки из Аксапты.

4) Джоб, идущий ниже, в Аксапте демонстрирует возможности принтера. Также в дистрибутиве с драйверами идут примеры на разных языках программирования. Я использовал пример из Excel'я - просто переписал макросы оттуда в Аксапту.

X++:
static void zFiscalPrinterTest(Args _args)
{
    COM                 ECR;
    ;
    ECR = new COM("AddIn.FprnM45");

    //занимаем порт
    ECR.DeviceEnabled(True);
    if (ECR.ResultCode())
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");

    //получаем состояние ККМ
    if (ECR.GetStatus() != 0)
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");

    //проверяем на всякий случай ККМ на фискализированность
    if (ECR.Fiscal())
    {
        if (Box::yesNo("ККМ фискализирована! Вы действительно хотите продолжить?", DialogButton::No) == DialogButton::No)
        {
            throw error("Действие отменено!");
        }
    }

    //если есть открытый чек, то отменяем его
    if (ECR.CheckState() != 0)
    {
        if (ECR.CancelCheck() != 0)
            throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
    }

    //входим в режим регистрации
    //устанавливаем пароль кассира
    ECR.Password("1");
    //входим в режим регистрации
    ECR.Mode(1);
    if (ECR.SetMode() != 0)
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");

    //продажа без сдачи
    //регистрация продажи
    ECR.Name("Молоко");
    ECR.Price(10.45);
    ECR.Quantity(5);
    ECR.Department(2);
    If (ECR.Registration() != 0)//вызывать для каждой добавляемой строки
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
    ECR.Name("Хлеб");
    ECR.Price(543.23);
    ECR.Quantity(2);
    ECR.Department(2);
    If (ECR.Registration() != 0)
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");

    info(strfmt("Номер чека %1, номер документа %2", ECR.CheckNumber(), ECR.Table()));

    //закрытие чека наличными с вводом полученной от клиента суммы
    //ECR.Summ(100);
    ECR.TypeClose(0);
    //If (ECR.Delivery() != 0)
    //    throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
    if (ECR.CloseCheck() != 0)
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");


    //выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
    If (ECR.ResetMode() != 0)
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");
    //освобождаем порт
    ECR.DeviceEnabled(False);
    If (ECR.ResultCode() != 0)
        throw error("Ошибка ККМ: " + ECR.ResultDescription() + "!");

    Box::info("Все операции успешно выполнены!");
}
За это сообщение автора поблагодарили: slava (1), Logger (1), clerk (1), ice (1).