Имя: Пароль:
1C
1С v8
Как увеличить число способов оплаты при печати чекаККМ на FPRINT-55
0 GoldMax
 
28.08.12
10:31
Управление торговлей 10.3.15.9 для 1С версии 8.2.

Для печати чеков используется FPrint-55 и внешняя обработка AutoFiscalPrinters_v2.epf.

На сегодняшний день в чеке печатаются только 2 вида оплаты: наличные и безналичные. Но нам также необходимо видеть в чеке и другие способы оплаты, например “Банковский кредит”.

Согласно документации FPrint-55 имеет возможность печатать в чеке до 10 видов оплаты. В 1С в документе “ЧекККМ” мы можем указать не менее 3 видов оплаты: наличные, пластиковые карты, банковский кредит.
Но в напечатанном чеке мы видим только 2 первых вида оплаты. При этом сумма наличных указывается правильно, а сумма безналичных объединяет в себе сумму оплаты по пластиковым картам и сумму оплаты по банковским кредитам.

Подскажите пожалуйста что и как необходимо исправить во внешней обработке AutoFiscalPrinters_v2.epf для того чтобы в чеке, напечатанном на Fprint-55, можно было увидеть не менее 3 способов оплаты (наличные, пластиковые карты, банковский кредит).
Все изменения, необходимые для вычисления суммы по каждому виду оплаты в основную конфигурацию я уже внес. Осталось только исправить процедуру “ЗакрытьЧек” во внешней обработке AutoFiscalPrinters_v2.epf

Сейчас процедура “ЗакрытьЧек” выглядит следующим образом:

// Функция осуществляет закрытие текущего открытого чека на ФР. (API v2.0)
// Параметры:  Объект  - <*>    - Объект драйвера ФР.
//  СуммаНал  - <Число>  - Сумма, внесённая наличными.
//  СуммаБезнал    - <Число>   - Сумма, внесённая при помощи карты.
//
// Возвращаемое значение:   <ПеречислениеСсылка.ТООшибки*> - Результат выполнения операции.
//
Функция ЗакрытьЧек(Объект, СуммаНал, СуммаБезнал) Экспорт

   Результат = мНетОшибки;

   Если Не Объект.Драйвер.ЗакрытьЧек(Объект.ИДУстройства, СуммаНал, СуммаБезнал) Тогда
       Результат = мОшибкаНеизвестно;
       Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

       ОтменитьЧек(Объект);
   КонецЕсли;

   Возврат Результат;

КонецФункции // ЗакрытьЧек()
1 aleks-id
 
28.08.12
10:36
а кредит это не безнал? какая тебе разница то?
2 GoldMax
 
28.08.12
10:38
Да, кредит это тоже безналичная оплата. Но ее обязательно необходимо выделить отдельной строкой
3 aleks-id
 
28.08.12
10:40
тогда пиши разработчикам Объект.Драйвер.ЗакрытьЧек
4 Шапокляк
 
28.08.12
10:41
(0) Если в конфигурации определена передача только двух параметров - суммы нал и суммы безнал, то при чем тут внешняя обработка фискальника? Будете вычислять и передавать 10 сумм, тогда и во внешней обработке имеет смысл что-то менять.
5 GoldMax
 
28.08.12
10:47
(4) Если внешняя обработка сможет печатать более 2 способов оплаты, то изменить основную конфигурацию так чтобы вычислялась сумма отдельно по каждому виду оплаты не представляет никакой сложности.
6 GoldMax
 
28.08.12
10:53
(3) Написал разработчику. Они отказались от тех. поддержки конечных пользователей и оказывают тех. поддержку только партнерам.
7 DEVIce
 
28.08.12
10:58
(6). Напиши партнеру
8 GoldMax
 
28.08.12
11:03
(7) Партнеры интересуются почему не покупали у них
9 GoldMax
 
28.08.12
11:15
А другой партнер порекомендовал обратиться к программистам 1С
10 GoldMax
 
28.08.12
11:35
Так как же увеличить количество печатаемых спосбов оплаты в чеке ККМ?
11 GoldMax
 
28.08.12
12:18
Неужели данная задача не имеет решения?
12 Lokli
 
28.08.12
12:25
(11) Имеет конечно. :)
Если я правильно понимаю, то это атоловский аппарат.
У вас сколько видов оплаты планируется и какие?
13 GenAcid
 
28.08.12
12:26
(11) Есть, перепиши работу с ФР так, чтобы вместо стандартного интерфейса 1С использовался родной атоловский.
14 GoldMax
 
28.08.12
12:29
(12) Да, это атоловский апарат FPrint 55

Сейчас необходимо иметь 3 вида оплаты:
1) Наличные
2) Пластиковые карты
3) Банковский кредит
15 GoldMax
 
28.08.12
12:30
(13) Вот я и пытаюсь изменить внешнюю обработку управления ФР.
16 Lokli
 
28.08.12
12:33
(14) В общем алгоритм работы такой:
1. В настройках самого аппарата необходимо прописать нужные варианты оплаты.
2. Т.к. изначально в типовой конфигурации и в обработках торг.оборудования по ККМ всё рассчитано на два вида обплаты, вам придётся доработать парочку типовых процедур и обработку по работе с ККМ до 3-х видов оплат.

УТ 10.3 у меня под рукой нет, поэтому точно где, как и что менять подсказать не могу. Если вам долго разбираться и у вас небольшой опыт работы с ТО, советую обратиться к партнёру Атола. В принципе, им всё равно где это покупалось, а за денежку они эту проблему решат.
17 Lokli
 
28.08.12
12:34
(11) Переписывать интерфейс?! Хм, мне кажется, это будет очень долго, нудно и не продуктивно.
18 GenAcid
 
28.08.12
12:36
(15) Так скачай книжку «АТОЛ: Драйвер ККМ» с оффсайта и почитай, особо обрати внимание на описание метода "ЗакрытьЧек" в основном разделе и в разделе Интерфейс драйвера по стандарту компании «1С». Осознай что используются 2 разные библиотеки и перепиши с ущербной универсально-1Совой на расово-верную атоловскую.

(16) Хаха. Тоже скачай и прочитай.
19 Neg
 
28.08.12
12:36
(15) Посмотри как реализованы в обработке два вида оплат, по аналогии сделай третий.
20 del123
 
28.08.12
12:41
(15) в прошлой ветке тебе ответил. Не знаю что у тебя за обработка, но у меня в типовой позволяет три вида оплаты передавать в закрытие чека. Проверь у себя.
21 Neg
 
28.08.12
12:45
Вообще-то 4 вида оплаты в обработках по умолчанию.
22 GoldMax
 
28.08.12
12:47
(16) В настройках аппарата (в драйвере) уже давно все варианты оплаты прописаны. Их сейчас 4, даже больше чем нам нужно.

Да, действительно в стандартной конфигурации все обработки расчитаны только на 2 вида оплаты: наличная и безналичная. Исправить все эти обработки не представляет труда.

Проблема только во внешней обработке AutoFiscalPrinters_v2.epf в процедуре ЗакрытиеЧека()
23 del123
 
28.08.12
12:50
попробуй в строке
   Если Не Объект.Драйвер.ЗакрытьЧек(Объект.ИДУстройства, СуммаНал, СуммаБезнал)
дописать один или два параметра после "суммабезнал" и посмотри, может проканает
24 GoldMax
 
28.08.12
12:52
(18) Давно уже скачал и почитал книжку «АТОЛ: Драйвер ККМ» с оффсайта. Особо внимательно читал метод ЗакрытьЧек. В книге команды приведены не на языке 1С, а совместить их с языком 1С мне никак не удается
25 GenAcid
 
28.08.12
12:52
(21)(23)Ну как вам сказать: "ЗакрытьЧек (ИДУстройства, НаличнаяОплата, БезналичнаяОплата)" / «АТОЛ: Драйвер ККМ» v.8.0 стр.203.

(22)Еще раз: проблема в драйвере который по умолчанию использует УТ. Если использовать атоловскую FPrnM1C.dll можно будет использовать старый интерфейс, но нужно будет найти старую обработку ФР и немного подправить или переписать новую под стандартный интерфейс.
26 GenAcid
 
28.08.12
12:53
(24) смотри (25)
27 GoldMax
 
28.08.12
12:54
(23) Добавлял еще 1 параметр. Пишет что слишком много параметров передано при вызове процедуры
28 GoldMax
 
28.08.12
12:56
(21) А не могли бы вы показать текст процедуры ЗакрытьЧек в используемой вами внешенй обработке?
29 GoldMax
 
28.08.12
12:59
(25) Ваше решение мне кажется наиболее удачным, возможно даже заработает

Уточните пожалуйста какие версии драйверов мне необходимо поставить и какую именно обработку необходимо для них использовать.
30 Lokli
 
28.08.12
13:02
А попробуй взять обработку по работе с ТО не от 1С, а от Атол.
31 GenAcid
 
28.08.12
13:04
(29)Любая версия драйвера FPrnM1C.dll, чем новее тем лучше естественно, и обработка с ФР с интерфейсом ТО версии 1.хх. Скорее всего придется скрестить ее с обработкой текущей версии.
32 GoldMax
 
28.08.12
13:10
(25) На стр. 203 нашел только ЗакрытьЧек (ИДУстройства, НаличнаяОплата, БезналичнаяОплата). Всего лишь 2 способа оплаты. У меня сейчас именно так и работает. Не пойму что же вы предлагаете. Пожалуйста уточните
33 GenAcid
 
28.08.12
13:19
(32) Предлагаю использовать не "драйвер по стандарту компании «1С»" ака AddIn.ATOL_KKM_1C, а обычный стандартный драйвер ака AddIn.FPrnM45 или AddIn.FPrnM8(если драйвер 8ой версии). Описание первого это 5 страничек в конце книги, описание вторых почти 200 страниц в начале.
34 GenAcid
 
28.08.12
13:21
(32) Пример простейшего чека кстати есть в ЗакрытьЧек(), выглядит так:

// Формирование простого чека продажи
// Открытие чека (является необязательным, т.к. ККМ  
// автоматически открывает чек при первой регистрации в чеке).
// Войти в режим регистрации
Драйвер.Password = 30;
Драйвер.Mode = 1;
Драйвер.SetMode();
// Устанавливаем параметры регистрации
Драйвер.Name = “Чипсы”;   // Название товара
Драйвер.Price = 12.34;   // Цена товара
Драйвер.Quantity = 1.234;  // Количество товара
Драйвер.Registration(); // Регистрация позиции
// Для остальных позиций чека повторять действия
Драйвер.CloseCheck();   // Закрыть чек
35 GenAcid
 
28.08.12
13:23
Если лень полностью переписывать ищи обработку фискальника с _v1 в конце, в ней все через нормальные драйвера работало, можно оттуда кусков надергать.
36 GoldMax
 
28.08.12
13:35
Да, мне понравилось начало описания функции ЗакрытьЧек() в предложенной вами книге. Именно это я и пытаюсь внедрить. Но пример там очень неудачный. Самое интересное - оплата разными сособами даже не рассматривается. Именно это вы и показали здесь. К сожалению данный пример прост и понятен но мою задачу пока что не решает.
37 GoldMax
 
28.08.12
13:40
(35) Информации получилось немного больше чем нужно. Давайте пожалуйста уточним то что надо сделать. Я думаю что мне необходимо:

1) На сайте разработчика по адресу http://www.atol.ru/support/programs/ скачать АТОЛ: Драйверы торгового оборудования v8.X
2) Установить скачанные драйвера
3) Там же скачать внешнюю обработку. Обработка для типовых конфигураций (УТ 10.3 и Розница 1.0) на платформе 8.2 по обмену данными с Frontol
4) Попытаться изменить скачанную внешнюю обработку.
38 GenAcid
 
28.08.12
13:51
(37) Обработку можешь не качать, потому что скачаешь то, что у тебя уже есть. С минимальными изменениями.
У тебя есть 2 пути:
- переписать обработку самому, с помощью описания драйвера и метода научного тыка.
- найти обработку которая называется не atolfiscalprinters_v2.epf, а atolfiscalprinters_v1.epf и выдернуть(посмотреть как реализованы) основные функции в ней.
39 GenAcid
 
28.08.12
13:54
Драйвер.Password = 30;
Драйвер.Mode = 1;
Драйвер.SetMode();
// Устанавливаем параметры регистрации

Драйвер.Name = “Чипсы”;   // Название товара

Драйвер.Price = 12.34;   // Цена товара

Драйвер.Quantity = 1.234;  // Количество товара

Драйвер.Registration(); // Регистрация позиции

// Для остальных позиций чека повторять действия

Драйвер.Summ = 12.34 * 1.234; //Сумма оплаты
Драйвер.TypeClose = 3 //Вид оплаты. 0 - наличные, 1 - тип оплаты 1, итд
Драйвер.Payment();   // Оплата

Драйвер.CloseCheck();   // Закрыть чек
40 GenAcid
 
28.08.12
13:58
Либо:

Драйвер.Password = 30;
Драйвер.Mode = 1;
Драйвер.SetMode();
// Устанавливаем параметры регистрации


Драйвер.Name = “Чипсы”;   // Название товара
 
Драйвер.Price = 12.34;   // Цена товара
 
Драйвер.Quantity = 1.234;  // Количество товара
 
Драйвер.Registration(); // Регистрация позиции


// Для остальных позиций чека повторять действия

Драйвер.TypeClose = 3 //Вид оплаты. 0 - наличные, 1 - тип оплаты 1, итд

Драйвер.CloseCheck();   // Закрыть чек

РТФМ же, http://prntscr.com/ejkcx
41 GoldMax
 
28.08.12
14:26
(40) Т.е. вы хотите сказать что у меня старая версия драйвера. Тогда заменив ее новой версией драйвера мне достаточно будет в существующей внешней обработке поправить процедуру ЗакрытьЧек

Процедура ЗакрытьЧек()
   Драйвер.Summ = 5
   Драйвер.TypeClose = 0 //Наличная оплата
   Драйвер.Summ = 2
   Драйвер.TypeClose = 0 //Пластиковая карта
   Драйвер.Summ = 10
   Драйвер.TypeClose = 0 //Банковский кредит
   
  Драйвер.CloseCheck()

КонецПроцедуры

Все остальные процедуры проверки наличия подключенного оборудования, открытия чека я все же хочу оставить без изменений.

Если в результате внесенных изменений в процедуре ЗакрытьЧек() существующей внешней обработки я у вижу напечатанные 3 вида оплаты с моими фиксированными суммами (5, 2, 10), то тогда лишь останется поправить вызов данной процедуры из основной конфигурации, а в этом я сейчас проблемы не вижу. Основную конфигурацию исправить гораздо проще чем внешнюю обработку.

(40) Надеюсь я вас правильно понял?
42 GoldMax
 
28.08.12
14:29
Я уже пробовал данный алгоритм применить с существующими настройками оборудования. И при вызове Драйвер.Summ = 5 получал сообщение о том, что такой метод (переменная) отстутствуют.
43 GenAcid
 
28.08.12
15:06
(41) Дело не в старой-новой версии драйвера. Дело в 2 разных драйверах с разными интерфейсами. И переписывать придется все, потому что ИНТЕРФЕЙС ДРУГОЙ! Но, если найти обработку которая работала по интерфейсу Атол, а не 1С можно почти все взять из нее.
(42) ясен пень там нет такого метода/переменной. Читай (33) до просветления, разрешаю даже воспользоваться поиском по модулю обработки обслуживания и описанию драйвера.
Или позвони в Атол, может они тебе разжуют, у них техподдержка неплохая раньше была.
44 GoldMax
 
28.08.12
15:18
(43) Так что же мне сейчас делать? Переустанавливать драйвер или оставить тот же. Я же не успею за 5 минут полностью переписать всю обработку.

Т.е. получается так что после того как я установлю новые драйвера у меня ФР FPRINT вообще перестанет работать до тех пор пока я не создам новую обработку. А старую обработку версии 1.0 я еще пока что не нашел.

А написать новую обработку с неустановленными драйверами только методом научного тыка не получится. Нужно устанавливать драйвера и писать обработку.

С чего же лучше всего начать?
45 GenAcid
 
29.08.12
07:14
(44) Ты как думаешь, почему в описании драйвера описаны оба интерфейса? Может быть в поставку драйвера входят обе длл?
Совсем прозрачно намекаю - ищи в описании драйвера "AddIn.ATOL_KKM_1C", прочитай внимательно раздел, он всего полстраницы занимает. Потом поднимись на одну страничку вверх, и прочитай еще один раздел. Открой свою обработку обслуживания и найди ту же самую строку там. Потом включи мозг, сделай копию обработки, в копии подключи правильный AddIn, и экспериментируй на здоровье. Благо в новых версиях нормального драйвера есть тестовый режим. Но на всякий случай, суммы больше пары копеек при проверках пробивать не рекомендую.
46 GoldMax
 
29.08.12
12:36
(46) Да, большое спасибо за совет.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший