powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Атол ККТ10 и VBA
25 сообщений из 59, страница 2 из 3
Атол ККТ10 и VBA
    #39741893
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не выходит каменный цветок (
Никак не могу обработать этот момент, ошибка синтаксиса.
fptr.setParam (1021, "Кассир Иванов И.")
Хотя в Object Browser указано Sub setParam(paramId As Long, value)
т.е paramId = 1021, value ="Кассир Иванов И."
В чём может быть подвох?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741899
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман, ?
Код: vbnet
1.
Call fptr.setParam(1021, "Кассир Иванов И.")
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741901
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, Спасибо большое.
Я за двое суток изучения нового драйвера Атола похоже отупел)
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741905
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман, методы нужно запускать с оператором "Call" и параметры заключать в скобки или без оператора и скобок (правило такое). Иначе выполняется действие в скобках, идёт ошибка.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741915
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
ОК, обязательно это учту.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741916
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман, чтобы защитить себя от изменения версий и последующих грабель - лучше таки веб сервер поставить и потом менять что-то в джос запросе, а не вот так.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741918
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинШаман, чтобы защитить себя от изменения версий и последующих грабель - лучше таки веб сервер поставить и потом менять что-то в джсон запросе, а не вот так.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741974
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманЯ за двое суток изучения нового драйвера Атола похоже отупел)

Да нет... просто в этот раз атол переплюнул сам себя... сейчас в новом драйвере практически ничего не осталось от старого, теперь драйвер штриха уже больше похож на старый драйвер атола чем новый атол на самого себя старого... Похоже это связано с унификацией, в исходниках есть инсталы для винды, линуха, андроида и 1С... Eсли еще и через web сервер можно чеки печатать по принципу работы с UTM егаис, то вообще шикарно (по идее можно на этот же комп поставить web атола, послать ему через тот же curl файл
с чеком в utf-8 и он распечатается на ккм)... Попросил аппарат в техценте, наверно тоже начну ковырять,
не думал что будет все так кардинально по другому... Тут все стонут и вздрагивают (особенно 1С) от каждой
смены кодов налогов в драйвере, а уж такие-то нововведения кое кто может и не пережить...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39741982
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманВсем привет!
В связи с переходом в 2019 году Атола на 10 драйвер и отказа от ДТО 8 возникла необходимость переписать обработку пробития чеков по новым правилам.

И кстати, сказанное выше не имеет никакой юридической силы (пока это только пожелания и предложения атола). Драйвер менять никто заставить не может. Львиная доля юзеров использует ДТО 8.16.3.9007. 1 С -вцы предпочитают ДТО 9. Кассы с прошивкой под 1.05ФФД работают от ДТО 8 и выше... Ну, на перспективу да... но так чтоб носиться и бить в колокола - пока наверно не стоит...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742015
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман vmag , web не прокатит. Много магазинов в деревнях без интернета.
Сейчас буду дальше разбираться, но если есть какие мысли на эту тему - поделитесь.

1. Ну интернет то по любому нужен для передачи чеков в офд, хотя бы раз в месяц иначе касса заблокируется...
2. Для собственно печати чеков интернет не нужен, если при установке драйвера атол на машину поставить галку Web Server, то в конце (или потом) можно прикрутить этот сервер к ккм (см. рисунок).
3. Ну а потом обращаясь к этому серверу локально или по локальной сети можно отсылать ему файлы заданий, которые он будет выполнять (х,z отчеты, печать чека и т.д.) ну это я так понял и с этим тоже нужно разбираться...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742084
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну в общем не так страшен чёрт, как его малюют.
Потихонечку и со скрипом начала вырисовываться ясная картинка.
В какой то мере оказалось лучше чем 8 версия. Но пока это только первые впечатления.
Как сделаю рабочий вариант отпишусь. Работу через Web сервер еще не смотрел.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742164
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, подведу итог.
Для работы с драйвером Атол ККТ 10 надо:
1. MS ACCESS 2010 и выше
2. Зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe (с правами Админа).
3. В папку с программой положить addin_fptr10_x86.dll (даже если у Вас 64-битное приложение) и принудительно добавить эту библиотеку в References.

Заодно выкладываю пример для VBA. В нём все основные функции кассира (без обработки ошибок).
Еще раз спасибо за помощь zimkon (guest_rusimport) и Панург.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742175
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P/S Перечитал топик. Вчера в запарке не увидел ответ alecko. Не удобно как то стало. Человек дело посоветовал, а я банально проглядел его ответ. alecko, отдельное спасибки за совет)
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39742185
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманДля работы с драйвером Атол ККТ 10 надо:
1. MS ACCESS 2010 и выше
2. Зарегистрировать в системе библиотеку addin_fptr10_x86.dll (addin_fptr10_x64.dll в случае 64-битного приложения) с помощью команды regsvr32.exe (с правами Админа).
3. В папку с программой положить addin_fptr10_x86.dll (даже если у Вас 64-битное приложение) и принудительно добавить эту библиотеку в References.

Попробовал по старинке:
поставил ДТО 10.4.2 ( KKT10-10.4.2-windows32-setup.exe из инсталлятора) на W7 (32) + Офис 2003 (32), все примеры отсюда (до ккм ибо ее пока нет) пошли в лет без регистраций, копирования и добавления библиотек в референсы, думаю при наличии ккт с остальным тоже не будет проблем
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744925
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманЗаодно выкладываю пример для VBA. В нём все основные функции кассира (без обработки ошибок).


а не будет ли так любезен многоуважаемый джинн ... сделать пример в формате 2002\2003 - если возможности нет - буду искать более старшие версии для самостоятельной конвертации
просто я пока для себя остановился на варианте использования 8 серии драйверов атола плюс команды нижнего уровня для новых прошивок - если честно - просто нет времени разбираться с 10-й серией и раз уж появилась такая возможность то проще будет уже идти по протоптанной дорожке...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744936
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример для 8 версии Атола взято с этой ветки 21272468
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
655.
656.
657.
658.
659.
660.
661.
662.
663.
664.
665.
666.
667.
668.
669.
670.
671.
672.
673.
674.
675.
676.
677.
678.
679.
680.
681.
682.
683.
684.
685.
686.
687.
688.
689.
690.
691.
692.
693.
694.
695.
696.
697.
698.
699.
700.
701.
702.
703.
704.
705.
706.
707.
708.
709.
710.
711.
712.
713.
714.
715.
716.
717.
718.
719.
720.
721.
722.
723.
724.
725.
726.
727.
728.
729.
730.
731.
732.
733.
734.
735.
736.
737.
738.
739.
740.
741.
742.
743.
744.
745.
746.
747.
748.
749.
750.
751.
752.
753.
754.
755.
756.
757.
758.
759.
760.
761.
762.
763.
764.
765.
766.
767.
768.
769.
770.
771.
772.
773.
774.
775.
776.
777.
778.
779.
780.
781.
782.
783.
784.
785.
786.
787.
788.
789.
790.
791.
792.
793.
794.
795.
796.
797.
798.
799.
800.
801.
802.
803.
804.
805.
806.
807.
808.
809.
810.
811.
812.
813.
814.
815.
816.
817.
818.
819.
820.
821.
822.
823.
824.
825.
826.
827.
828.
829.
830.
831.
832.
833.
834.
835.
836.
837.
838.
839.
840.
841.
842.
843.
844.
845.
846.
847.
848.
849.
850.
851.
852.
853.
854.
855.
856.
857.
858.
859.
860.
861.
862.
863.
864.
865.
866.
867.
868.
869.
870.
871.
872.
873.
874.
875.
876.
877.
878.
879.
880.
881.
882.
883.
884.
885.
886.
887.
888.
889.
890.
891.
892.
893.
894.
895.
896.
897.
898.
899.
900.
901.
902.
903.
904.
905.
906.
907.
908.
909.
910.
911.
912.
913.
914.
915.
916.
917.
918.
919.
920.
921.
922.
923.
924.
925.
926.
927.
928.
929.
930.
931.
932.
933.
934.
935.
936.
937.
938.
939.
940.
941.
942.
943.
944.
945.
946.
947.
948.
949.
950.
951.
952.
953.
954.
955.
956.
957.
958.
959.
Public Function PrintRegChek(lngKod As Long, Optional curSum As Currency) As Boolean
'Печать чека на регистраторе со сдачей.
Dim ECR As Object
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset
Dim sql As String, sql1 As String, iDiscount As Integer
Dim intMark As Integer, curSumma As Currency, curSum1 As Currency, curSumDis As Currency

On Error GoTo Error_mark

12 sql = "SELECT tblПродажа.КодЧека, tblПродажа.Скидка,tblПродажа.Внесено,tblПродажаТовара.ШтрихКод, tblПродажаТовара.Количество, tblПродажаТовара.Цена "
sql = sql & "FROM ПродажаТовара INNER JOIN ТОВАР ON Продажа.КодЧека=ПродажаТовара.КодЧека"
sql = sql & "WHERE (((tblПродажа.КодЧека)=" & lngKod & "));"

22 If rst.State = adStateClosed Then
221 rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
End If

222 iDiscount = rst![Скидка]

223 If rst.RecordCount = 0 Then GoTo Exit_mark

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
224 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
20 ECR.DeviceEnabled = True
294 If ECR.ResultCode <> 0 Then
225 If MsgBox("Ошибка ККМ: " + ECR.ResultDescription + "!", vbCritical + vbRetryCancel + vbDefaultButton1, conVersion) = vbRetry Then
GoTo 20
Else
226 If MsgBox("Чек не будет напечатан!", vbCritical + vbOKCancel + vbDefaultButton2, conVersion) = vbCancel Then
GoTo 20
Else
227 PrintRegChek = False
GoTo Exit_mark
End If
End If
End If

228 Select Case iDiscount 'Два варианта чека: без скидки и со скидкой.
Case 0 'Если без скидки.
'Метка для перехода при ошибке ввода суммы.
intMark = 1
'Входим в режим регистрации
'Устанавливаем пароль кассира
229 ECR.Password = "1"
'Входим в режим регистрации
230 ECR.Mode = 1
231 Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
GoTo Gaschenie
Else
PrintRegChek = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case Else
PrintRegChek = True
End Select

'Продажа co сдачeй
4 Do Until rst.EOF
41 ECR.Name = rst![ШтрихКод]
42 ECR.Price = rst![Цена]
43 ECR.Quantity = rst![Количество]
44 Select Case ECR.Registration
Case 0
Case -3807
11 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
45 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 11
End If
46 rst.MoveFirst
GoTo 4
Case Else
PrintRegChek = False
GoTo Error_mark
End Select
47 rst.MoveNext
Loop

'Закрытие чека наличными с вводом полученной от клиента суммы
1 curSumma = CCur(InputBox("Внесено.", conVersion))

'Проверяем введеную сумму, полученную от покупателя.
48 If curSumma = 0 Then
'Повторяем ввод.
GoTo 1
End If

49 If curSumma < curSum Then
50 Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
GoTo 1
End If

51 ECR.Summ = curSumma
52 ECR.TypeClose = 0
53 Select Case ECR.Delivery
Case -3807
10 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
54 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 10
End If
55 rst.MoveFirst
GoTo 4
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChek = False
GoTo 1
Case 0
PrintRegChek = True
End Select

Case Is > 5
iDiscount = rst![Скидка]
If iDiscount > 15 Then
rst.Close
rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
iDiscount = rst![Скидка]

If iDiscount > 5 Then
Call MsgBox("Скидка не правильна. Отбейте чек вручную.", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo Exit_mark
Else
GoTo 228
End If
Else
GoTo 228
End If
Case Else 'Со скидкой.
56 rst.Close

'Список со скидкой.
57 sql = "SELECT tblПродажа.КодЧека, tblПродажа.Скидка,tblПродажа.Внесено,tblПродажаТовара.ШтрихКод, tblПродажаТовара.Количество, tblПродажаТовара.Цена "
58 sql = sql & "FROM ПродажаТовара INNER JOIN ТОВАР ON Продажа.КодЧека=ПродажаТовара.КодЧека"
59 sql = sql & "WHERE (((tblПродажа.КодЧека)=" & lngKod & "));"
60 rst.Open sql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

'Список без скидки.
61 sql1 = "SELECT tblПродажа.КодЧека, tblПродажа.Скидка,tblПродажа.Внесено,tblПродажаТовара.ШтрихКод, tblПродажаТовара.Количество, tblПродажаТовара.Цена "
62 sql1 = sql & "FROM ПродажаТовара INNER JOIN ТОВАР ON Продажа.КодЧека=ПродажаТовара.КодЧека"
63 sql1 = sql1 & "WHERE (((tblПродажа.КодЧека)=" & lngKod & ") AND ((tblТовары.Скидка)=IsNull));"

64 rst1.Open sql1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

65 If rst.RecordCount = 0 Then
GoTo 21
Else
66 iDiscount = rst![Скидка]
End If

'Метка для перехода при ошибке ввода суммы.
intMark = 2

'Входим в режим регистрации
'Устанавливаем пароль кассира
67 ECR.Password = "1"
'Входим в режим регистрации
68 ECR.Mode = 1
69 Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
70 rst.Close
71 rst1.Close
GoTo Gaschenie
Else
PrintRegChek = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
72 rst1.Close
PrintRegChek = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
73 rst1.Close
PrintRegChek = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
74 rst1.Close
PrintRegChek = False
GoTo 3
Case Else
PrintRegChek = True
End Select

'Продажа co сдачeй
'Закрытие чека наличными с вводом полученной от клиента суммы
2 curSumma = CSng(InputBox("Внесено.", conVersion))

'Проверяем введеную сумму, полученную от покупателя.
75 If curSumma = 0 Then
'Повторяем ввод.
GoTo 2
End If

76 If curSumma < curSum Then
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
GoTo 2
End If

7 Do Until rst.EOF
77 ECR.Name = rst![ШтрихКод]
78 ECR.Price = rst![Цена]
79 ECR.Quantity = rst![Количество]
80 curSum1 = curSum1 + rst![Цена] * rst![Количество]
81 Select Case ECR.Registration
Case 0
Case -3807
13 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
82 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 13
End If
83 rst.MoveFirst
GoTo 7
Case Else
84 rst1.Close
PrintRegChek = False
GoTo Error_mark
End Select
85 rst.MoveNext
Loop

'Скидка
86 curSumDis = Round(curSum1 * iDiscount / 100)
87 ECR.Summ = curSumDis
88 ECR.Destination = 0
89 If ECR.SummDiscount <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

90 If rst1.RecordCount = 0 Then
91 ECR.Summ = curSumma
92 ECR.TypeClose = 0
93 Select Case ECR.Delivery
Case -3807
14 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
94 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 14
End If
95 rst.MoveFirst
GoTo 7
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChek = False
GoTo 2
Case 0
96 rst1.Close
PrintRegChek = True
GoTo 3
End Select
Else
'Закрытие чека
97 ECR.TypeClose = 0
98 Select Case ECR.CloseCheck
Case -3807
15 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
99 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 15
End If
111 rst.MoveFirst
GoTo 7
Case 0
End Select
End If

'Входим в режим регистрации
'Устанавливаем пароль кассира
21 ECR.Password = "1"
'Входим в режим регистрации
112 ECR.Mode = 1
Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
113 rst.Close
114 rst1.Close
GoTo Gaschenie
Else
PrintRegChek = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
PrintRegChek = False
GoTo 3
Case Else
PrintRegChek = True
End Select

'Продажа со сдачей
9 Do Until rst1.EOF
115 ECR.Name = rst1![ШтрихКод]
116 ECR.Price = rst1![Цена]
117 ECR.Quantity = rst1![Количество]
118 Select Case ECR.Registration
Case 0
Case -3807
16 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
119 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 16
End If
120 rst1.MoveFirst
GoTo 9
Case Else
121 rst1.Close
PrintRegChek = False
GoTo Error_mark
End Select
122 rst1.MoveNext
Loop

'Закрытие чека
123 ECR.Summ = curSumma - (curSum1 - curSumDis)
124 ECR.TypeClose = 0
125 Select Case ECR.Delivery
Case -3807
17 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
126 If ECR.CancelCheck <> 0 Then
PrintRegChek = False
GoTo 17
End If
127 rst1.MoveFirst
GoTo 9
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChek = False
GoTo 1
Case 0
PrintRegChek = True
End Select
rst1.Close
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
3 If ECR.ResetMode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

'Освобождаем порт
128 ECR.DeviceEnabled = False
129 If ECR.ResultCode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

PrintRegChek = True

Exit_mark:
130 rst.Close
131 Set rst = Nothing
132 Set rst1 = Nothing
133 Set ECR = Nothing
Exit Function

Error_mark:
Select Case Err.Number
Case 0
If Erl = 224 Then
PrintRegChek = False
Exit Function
End If
Case 13
'Скорее всего неправильно введена сумма.
Select Case intMark
Case 1
GoTo 1
Case 2
GoTo 2
End Select
Case 91 'Выход из-за ошибки.
Call MsgBox("Ошибка создания объекта AddIn.FprnM45. Приложение завершит свою работу.", vbCritical + vbOKOnly, conVersion)
ReportError "PrintRegChek", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChek = False
Exit Function
Case 3218 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3202 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3188 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3186 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3187 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3211 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case 3212 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case Else
Select Case Err.Description
Case "Чтение невозможно; блокировка другим пользователем." 'Если таблица блокирована.
DoCmd.OpenForm "frmPause"
pause (10)
DoCmd.Close acForm, "frmPause"
GoTo 22
Case Else
Call Protocol(Form_frmЛокальныеНастройки.ПолеКодПользователя, "Печать чека. " & lngKod, Err.Description)
ReportError "PrintRegChek", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChek = False
Resume Next
End Select
End Select

Gaschenie:
'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
134 If ECR.ResetMode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

'Освобождаем порт
135 ECR.DeviceEnabled = False
136 If ECR.ResultCode <> 0 Then
PrintRegChek = False
GoTo Exit_mark
End If

137 Call PrintRegZReport

GoTo 20
End Function

Public Sub PrintRegXReport()
Dim ECR As Object
On Error GoTo Error_mark

If ProverkaRegistratoraQuick = False Then Exit Sub

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт
ECR.DeviceEnabled = True
Select Case ECR.ResultCode
Case 0
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical, conVersion)
GoTo Exit_mark
Case Else
GoTo Exit_mark
End Select

'X - отчет
'Устанавливаем пароль администратора ККМ
ECR.Password = "29"
'Входим в режим отчетов без гашения
ECR.Mode = 2
If ECR.SetMode <> 0 Then
GoTo 1
End If
'Снимаем отчет
ECR.ReportType = 2
3 Select Case ECR.Report
Case 0
Case -3807
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 3
Case Else
GoTo 1
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
ECR.DeviceEnabled = False
If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
Set ECR = Nothing
Exit Sub

Error_mark:
ReportError "PrintRegXReport", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Sub

Public Sub PrintRegZReport()
Dim ECR As Object
On Error GoTo Error_mark

If ProverkaRegistratoraQuick = False Then Exit Sub

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт
ECR.DeviceEnabled = True
Select Case ECR.ResultCode
Case 0
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical, conVersion)
GoTo Exit_mark
Case Else
GoTo Exit_mark
End Select

'Z - отчет
'Устанавливаем пароль системного администратора ККМ
ECR.Password = "30"
'Входим в режим отчетов с гашением
ECR.Mode = 3
If ECR.SetMode <> 0 Then
Exit Sub
End If
'Снимаем отчет
ECR.ReportType = 1
3 Select Case ECR.Report
Case 0
Case -3807
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 3
Case -3828
Call MsgBox("Отчет с гашением уже снят.", vbExclamation + vbOKOnly, conVersion)
Case Else
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
ECR.DeviceEnabled = False
If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
Set ECR = Nothing
Exit Sub

Error_mark:
ReportError "PrintRegZReport", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Sub

Public Function ProverkaRegistratora() As Boolean
'Проверка регистратора перед запуском программы.
On Error GoTo Error_mark

ProverkaRegistratora = True

'Создаем объект общего драйвера ККМ
5 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
6 ECR.DeviceEnabled = True
7 Select Case ECR.ResultCode
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo Exit_mark
Case 0
End Select

'Проверяем связь с ККМ.
8 Select Case ECR.GetCurrentMode
Case -1 'Нет связи с ККМ.
Call MsgBox("Нет связи с ККМ либо ККМ не включено!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 2
End Select

9 If ECR.PrinterConnectionFailed = True Then 'Есть ли ошибки связи.
Call MsgBox("Ошибка связи с ККМ!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 2
End If

10 If ECR.OutOfPaper = True Then 'Есть ли бумага.
Call MsgBox("В ККМ нет ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End If

'Получаем состояние ККМ.
11 If ECR.GetStatus <> 0 Then
Call MsgBox("Ошибка ККМ: " + ECR.ResultDescription + "!", vbCritical + vbOKOnly, conVersion)
GoTo Error_mark
ProverkaRegistratora = False
GoTo 1
End If

12 If ECR.CheckPaperPresent = False Then 'Проверка ленты.
Call MsgBox("В ККМ нет ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End If

13 If ECR.ControlPaperPresent = False Then 'Проверка ленты.
Call MsgBox("В ККМ нет контрольной ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End If

14 If ECR.BatteryLow = True Then 'Проверка зарядки батареи.
Call MsgBox("Внимание разряжена батарея!", vbCritical + vbOKOnly, conVersion)
End If

4 Select Case ECR.CheckState 'Проверяем нет ли открытого чека.
Case 0 'Открытого чека нет.
Case Else 'Есть не закрытый чек.
15 Select Case ECR.CloseCheck 'Пытаемся закрыть чек.
Case 0 'Чек успешно закрыт.
Case -3807 'Нет бумаги.
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 4
Case Else 'Другая ошибка.
Call MsgBox("Ошибка закрытия чека!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratora = False
GoTo 1
End Select
End Select

'Если смена не открыта, открываем ее.
16 If ECR.SessionOpened = False Then
17 ECR.OpenSession
End If

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
2 ECR.DeviceEnabled = False
18 If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
19 Set ECR = Nothing
Exit Function

Error_mark:
ReportError "ProverkaRegistratora", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Function

Public Function ProverkaRegistratoraQuick() As Boolean
'Быстрая проверка регистратора перед продажей.
On Error GoTo Error_mark

ProverkaRegistratoraQuick = True

'Создаем объект общего драйвера ККМ
5 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
6 ECR.DeviceEnabled = True
7 Select Case ECR.ResultCode
Case -3
Call MsgBox("Порт занят другим приложением или данный порт отсутсвует в ПК либо ККМ не включено.", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo Exit_mark
Case 0
End Select

'Проверяем связь с ККМ.
8 Select Case ECR.GetCurrentMode
Case -1 'Нет связи с ККМ.
Call MsgBox("Нет связи с ККМ либо ККМ не включено!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 2
End Select

9 If ECR.PrinterConnectionFailed = True Then 'Есть ли ошибки связи.
Call MsgBox("Ошибка связи с ККМ!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 2
End If

10 If ECR.OutOfPaper = True Then 'Есть ли бумага.
Call MsgBox("В ККМ нет ленты!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 1
End If

4 Select Case ECR.CheckState 'Проверяем нет ли открытого чека.
Case 0 'Открытого чека нет.
Case Else 'Есть не закрытый чек.
11 Select Case ECR.CloseCheck 'Пытаемся закрыть чек.
Case 0 'Чек успешно закрыт.
Case -3807 'Нет бумаги.
Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
GoTo 4
Case Else 'Другая ошибка.
Call MsgBox("Ошибка закрытия чека!", vbCritical + vbOKOnly, conVersion)
ProverkaRegistratoraQuick = False
GoTo 1
End Select
End Select

'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что нибуть нехорошее
1 If ECR.ResetMode <> 0 Then
End If

'Освобождаем порт
2 ECR.DeviceEnabled = False
12 If ECR.ResultCode <> 0 Then
GoTo Exit_mark
End If

Exit_mark:
Set ECR = Nothing
Exit Function

Error_mark:
ReportError "ProverkaRegistratoraQuick", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
Resume Next
End Function

Public Function ProverkaObjectFprnM45() As Boolean
'Проверяем можно ли создать объект драйвера ККМ.
'Тем самым грубо проверяем работает ли драйвер ККМ.
Dim ECR As Object
On Error GoTo Error_mark

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set ECR = CreateObject("AddIn.FprnM45")

ProverkaObjectFprnM45 = True
Set ECR = Nothing

Exit_mark:
Exit Function

Error_mark:
ProverkaObjectFprnM45 = False
ReportError "ProverkaObjectFprnM45", Err.Number, Err.Source, Err.Description
Resume Exit_mark
End Function

Public Function PrintRegChekSumm(curSum As Currency) As Boolean
'Печать чека на регистраторе со сдачей.
Dim ECR As Object
Dim intMark As Integer, curSumma As Currency, curSum1 As Currency, curSumDis As Currency

On Error GoTo Error_mark

'Создаем объект общего драйвера ККМ
'Если объект создать не удается генерируется исключение, по которому завершается работа приложения
224 Set ECR = CreateObject("AddIn.FprnM45")

'Занимаем порт.
20 ECR.DeviceEnabled = True
294 If ECR.ResultCode <> 0 Then
225 If MsgBox("Ошибка ККМ: " + ECR.ResultDescription + "!", vbCritical + vbRetryCancel + vbDefaultButton1, conVersion) = vbRetry Then
GoTo 20
Else
226 If MsgBox("Чек не будет напечатан!", vbCritical + vbOKCancel + vbDefaultButton2, conVersion) = vbCancel Then
GoTo 20
Else
227 PrintRegChekSumm = False
GoTo Exit_mark
End If
End If
End If

'Если без скидки.
'Метка для перехода при ошибке ввода суммы.
intMark = 1
'Входим в режим регистрации
'Устанавливаем пароль кассира
229 ECR.Password = "1"
'Входим в режим регистрации
230 ECR.Mode = 1
231 Select Case ECR.SetMode 'Входим в режим
Case -3822
If MsgBox("Чек не может быть напечатан! Текущая смена превысила 24 часа! Сделать гашение?", vbCritical + vbYesNo, conVersion) = vbYes Then
GoTo Gaschenie
Else
PrintRegChekSumm = False
GoTo 3
End If
Case -3842
Call MsgBox("ККМ заблокирована после ввода некорректного пароля налогового инспектора!", vbCritical + vbOKOnly, conVersion)
PrintRegChekSumm = False
GoTo 3
Case -3892
Call MsgBox("ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП!", vbCritical + vbOKOnly, conVersion)
PrintRegChekSumm = False
GoTo 3
Case -3937
Call MsgBox("ККМ находится в режиме ввода даты или времени!", vbCritical + vbOKOnly, conVersion)
PrintRegChekSumm = False
GoTo 3
Case Else
PrintRegChekSumm = True
End Select

'Продажа co сдачeй
42 ECR.Price = curSum
43 ECR.Quantity = 1
44 Select Case ECR.Registration
Case 0
Case -3807
11 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
45 If ECR.CancelCheck <> 0 Then
PrintRegChekSumm = False
GoTo 11
End If
GoTo 42
Case Else
PrintRegChekSumm = False
GoTo Error_mark
End Select

'Закрытие чека наличными с вводом полученной от клиента суммы
1 curSumma = curSum

'Проверяем введеную сумму, полученную от покупателя.
48 If curSumma = 0 Then
'Повторяем ввод.
curSumma = CCur(InputBox("Внесено.", conVersion))
GoTo 48
End If

51 ECR.Summ = curSumma
52 ECR.TypeClose = 0
53 Select Case ECR.Delivery
Case -3807
10 Call MsgBox("Вставьте бумагу в ККМ и нажмите ОК.", vbExclamation + vbOKOnly, conVersion)
54 If ECR.CancelCheck <> 0 Then
PrintRegChekSumm = False
GoTo 10
End If
55 rst.MoveFirst
GoTo 51
Case -3835
Call MsgBox("Введеная сумма меньше суммы чека - " & curSum & "!", vbCritical + vbOKOnly, conVersion)
'Повторяем ввод.
PrintRegChekSumm = False
GoTo 1
Case 0
PrintRegChekSumm = True
End Select


'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
3 If ECR.ResetMode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

'Освобождаем порт
128 ECR.DeviceEnabled = False
129 If ECR.ResultCode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

PrintRegChekSumm = True

Exit_mark:
133 Set ECR = Nothing
Exit Function

Error_mark:
Select Case Err.Number
Case 0
If Erl = 224 Then
PrintRegChekSumm = False
Exit Function
End If
Case 91 'Выход из-за ошибки.
Call MsgBox("Ошибка создания объекта AddIn.FprnM45. Приложение завершит свою работу.", vbCritical + vbOKOnly, conVersion)
ReportError "PrintRegChekSumm", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChekSumm = False
Exit Function
Case Else
Call Protocol(Form_frmЛокальныеНастройки.ПолеКодПользователя, "Печать чека. " & lngKod, Err.Description)
ReportError "PrintRegChekSumm", Err.Number, Err.Source, Err.Description & " Ошибка в строке " & Erl
PrintRegChekSumm = False
Resume Next
End Select

Gaschenie:
'Выходим в режим выбора, чтобы кто-то под введенными паролями не сделал что-нибудь нехорошее
134 If ECR.ResetMode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

'Освобождаем порт
135 ECR.DeviceEnabled = False
136 If ECR.ResultCode <> 0 Then
PrintRegChekSumm = False
GoTo Exit_mark
End If

137 Call PrintRegZReport

GoTo 20
End Function


и файлик от самого Атола https://www.sql.ru/forum/actualfile.aspx?id=21250866
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744943
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманПример для 8 версии Атола

с 8-й серией драйверов проблем нет :) все давно и успешно работает, я имел ввиду изыскания по 10-й серии
или пример (АТОЛ10_VBA2.zip) выложенный ранее в формате accdb тоже только для 8-х драйверов ?
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744989
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stu314, если правильно понял, Вам нужен пример в формате Access2003, но зачем?
Он не будет работать под VBA6. Нужен минимум 7, а это MSO2010
Тут на форуме Атола обсуждали это http://forum.atol.ru/lofiversion/index.php?t35954.html
Сохранить базу в формате 2000-2003 Access не дает. Прикрепляю код.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
Option Compare Database
Private fptr As Object

Private Sub Form_Open(Cancel As Integer)
On Error GoTo NotOLE
' создаем объект общего драйвера ККМ
' если объект создать не удается генерируется исключение, по которому завершается работа приложения
Set fptr = CreateObject("AddIn.Fptr10")
Exit Sub
NotOLE:     'Обработка ошибки при создании OLE-объекта
A = MsgBox("Ошибка при создании объекта AddIn.Fptr10", vbCritical + vbOKOnly)
Cancel = 1
End Sub

Private Sub Кнопка0_Click()
    '// Соединение с ККТ
    fptr.Open
    
    Call fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STATUS)
    fptr.queryData
   
    operatorID = fptr.getParamInt(fptr.LIBFPTR_PARAM_OPERATOR_ID)
    logicalNumber = fptr.getParamInt(fptr.LIBFPTR_PARAM_LOGICAL_NUMBER)
    shiftState = fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_STATE)
    model = fptr.getParamInt(fptr.LIBFPTR_PARAM_MODEL)
    Mode = fptr.getParamInt(fptr.LIBFPTR_PARAM_MODE)
    submode = fptr.getParamInt(fptr.LIBFPTR_PARAM_SUBMODE)
    receiptNumber = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_NUMBER)
    documentNumber = fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
    shiftState = fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER)
    receiptType = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE)
    lineLength = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
    lineLengthPix = fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX)
    receiptSum = fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPT_SUM)
    isFiscalDevice = fptr.getParamBool(fptr.LIBFPTR_PARAM_FISCAL)
    isFiscalFN = fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_FISCAL)
    isFNPresent = fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_PRESENT)
    isCashDrawerOpened = fptr.getParamBool(fptr.LIBFPTR_PARAM_CASHDRAWER_OPENED)
    isPaperPresent = fptr.getParamBool(fptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT)
    isCoverOpened = fptr.getParamBool(fptr.LIBFPTR_PARAM_COVER_OPENED)
    isPrinterConnectionLost = fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST)
    isPrinterError = fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_ERROR)
    isCutError = fptr.getParamBool(fptr.LIBFPTR_PARAM_CUT_ERROR)
    isPrinterOverheat = fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_OVERHEAT)
    isDeviceBlocked = fptr.getParamBool(fptr.LIBFPTR_PARAM_BLOCKED)
    FdateTime = fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME)
    serialNumber = fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER)
    modelName = fptr.getParamString(fptr.LIBFPTR_PARAM_MODEL_NAME)
    firmwareVersion = fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION)
End Sub

Private Sub Кнопка57_Click()
fptr.Open 'подключение к кассе
isOpened = fptr.isOpened 'проверка логического соединения
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, fptr.LIBFPTR_MODEL_ATOL_AUTO)
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, fptr.LIBFPTR_PORT_COM)
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, [Порт] * 1)
Call fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, fptr.LIBFPTR_PORT_BR_115200)
     fptr.applySingleSettings
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fptr.Close 'отключение от кассы
Кнопка0_Click

If fptr.printText < 0 Then
MsgBox "Код ошибки " & (fptr.ErrorCode) & ": " & fptr.errorDescription, vbCritical + vbOKOnly, "ФР АТОЛ 10"
Exit Sub
End If
End Sub

Private Sub Кнопка58_Click()
fptr.Open 'подключение к кассе
isOpened = fptr.isOpened 'проверка логического соединения
If fptr.printText < 0 Then
MsgBox "Код ошибки " & (fptr.ErrorCode) & ": " & fptr.errorDescription, vbCritical + vbOKOnly, "ФР АТОЛ 10"
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Call fptr.setParam(1021, "Кассир Иванов И.")
    Call fptr.setParam(1203, "123456789047")
    fptr.operatorLogin
    fptr.openShift
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка60_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASH_SUM)
    fptr.queryData

    MsgBox "Сейчас в кассе " & fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM)
    
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка61_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_X)
    fptr.Report
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка62_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SUM, [Сумма] * 1)
    fptr.cashIncome
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка63_Click()
fptr.Open 'подключение к кассе
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SUM, [Сумма] * 1)
    fptr.cashIncome
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка7_Click()
fptr.Open 'подключение к кассе
isOpened = fptr.isOpened 'проверка логического соединения
If fptr.printText < 0 Then
MsgBox "Код ошибки " & (fptr.ErrorCode) & ": " & fptr.errorDescription, vbCritical + vbOKOnly, "ФР АТОЛ 10"
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Call fptr.setParam(1021, "Кассир Иванов И.")
    Call fptr.setParam(1203, "123456789047")
    fptr.operatorLogin
    fptr.setParam fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT
    fptr.Report
    fptr.checkDocumentClosed
    
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fptr.Close 'отключение от кассы
End Sub


Private Sub Кнопка59_Click()
    '// Соединение с ККТ
    fptr.Open

    '// Регистрация кассира
    Call fptr.setParam(1021, "Иванов И.И.")
    Call fptr.setParam(1203, "500100732259")
    fptr.operatorLogin

    '// Открытие чека (с передачей телефона получателя)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL)
    Call fptr.setParam(1008, "+79161234567")
    fptr.openReceipt
    

    '// Регистрация позиции
    Call fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 73.99)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT18)
    Call fptr.setParam(1212, 1)
    Call fptr.setParam(1214, 7)
    fptr.registration

    '// Регистрация итога (отрасываем копейки)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 369#)
    fptr.receiptTotal

    '// Оплата наличными
    Call fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000)
    fptr.payment

    '// Закрытие чека
    fptr.closeReceipt

'    If Not fptr.getParamBool(fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED) Then
'        '// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
'        fptr.cancelReceipt
'        Exit Sub
'    End If


  ' '// Запрос информации о закрытом чеке
   ' Call fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_LAST_DOCUMENT)
   ' fptr.fnQueryData
   ' showmessage ("Fiscal Sign = " + fptr.getParamString(fptr.LIBFPTR_PARAM_FISCAL_SIGN))
   ' showmessage ("Fiscal Document Number = " + IntToStr(fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)))
   
    '// Формирование слипа ЕГАИС
    fptr.beginNonfiscalDocument

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_QR)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SCALE, 5)
    fptr.printBarcode

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_CHARS)
    fptr.printText

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c 78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 81 74")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_WORDS)
     fptr.printText

    fptr.endNonfiscalDocument
    
fptr.Close 'отключение от кассы
End Sub

Private Sub Кнопка76_Click()
    '// Соединение с ККТ
    fptr.Open
    '// Формирование слипа ЕГАИС
    fptr.beginNonfiscalDocument

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_QR)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_SCALE, 5)
    fptr.printBarcode

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_CHARS)
    fptr.printText

    fptr.printText

    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c 78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 81 74")
    Call fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER)
    Call fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_WORDS)
     fptr.printText

    fptr.endNonfiscalDocument
    
    fptr.Close 'отключение от кассы
End Sub

...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39744997
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманОн не будет работать под VBA6. Нужен минимум 7, а это MSO2010
Тут на форуме Атола обсуждали
я участвовал в том обсуждении, потом вроде писали что более правильную сборку атол сделал
у меня все на 2002 аксесе, за код - отдельное спасибо, жаль только что нет формы - проще было бы разрулить :)
кстати а какой аксес не дал сохранить в младшей версии ? я просто считал что это возможно ... просто с версиями более 2003 дела пока еще не имел
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745001
stu314
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманОн не будет работать под VBA6.
сейчас проверил на 2002 хр Ваш пример - все прицепилось с драйвером атола 10.4.2
отрабатывают конструкции fptr As New Fptr10Lib.fptr и CreateObject("AddIn.Fptr10")
все остальное - уже завтра если время будет - просто у меня кроме атола еще куча других - штрихи, пириты, сп-шки...
поэтому и решил пока оставаться на 8-х драйверах, но на 10-х будет лучше т.к. 8-е и 9-е атол хоронит...
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745010
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманОн не будет работать под VBA6. Нужен минимум 7, а это MSO2010

Ваш вклад в науку воистину велик (в основном как первооткрывателя), и с этим вам спасибо... но сэр не путайте народ...
Все ваши проблемы от того, что вы пытаетесь пихать везде dll вместо того чтобы установить драйвер штатно, в этом случае dll сама ляжет куда нужно и как нужно...
То что там у кого-то где-то что-то не получалось, так это потому, что там не было спецов типа Панурга, Константина, Алеско...
Атол заявляет поддержку ОС от Win XP (см. самую первую свою ссылку в этом топике)
На картинке я показываю, что вызов свойств драйвера работает и в Акцесс 2000, просто по совету Константина зашел в свойства и увидел, что showProperties это Функция, и как оказалось драйвер не любит когда ее вызывают как процедуру (чем кстати и грешит большинство юзеров) и ему некуда возвращать значение... но стоит присвоить значение переменной Long и все полетело....
Кстати чуть выше вам (как и я ранее) показывал, что это работает и в 2003..
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745012
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,

Установите себе штатный драйвер, получите в программах приблуду как на картинке, один раз в ней настройте свойства ккм, и все проблемы исчезнут, далее будет только
fptr.Open
....
fptr.Close
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745062
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы. Обязательно попробую. Мне и самому под MS A2010 переделывать не очень хочется.
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745066
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманМне и самому под MS A2010 переделывать не очень хочется.

А вот это зря...

Рано или поздно придется, возможно очень скоро 2003 и ниже споткнутся окончательно...
2007-2010-... тяжелее даже не вооруженным глазом, но тут уж как говориться се ля ви...
Многие (из тех кто ваяет) одной ногой стоят на 2000-2003, другой на 2007 и выше...

Дрова я брал отсюда (10.4.2)
https://atoldriver.ru/vse-drajvera-atol-versii-10/
Это не официалы, но компоновка у них лучше чем у официалов...
Установщик под винду в архиве примерно тут ...\10.4.2\installer\exe\
...
Рейтинг: 0 / 0
Атол ККТ10 и VBA
    #39745067
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stu314... жаль только что нет формы - проще было бы разрулить :)
кстати а какой аксес не дал сохранить в младшей версии ? я просто считал что это возможно ... просто с версиями более 2003 дела пока еще не имел Напрямую из А10 не сохраняет в А2003. Создал пустую базу в 2000 и подгрузил форму.
Только у меня так и просит ActiveX (
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Атол ККТ10 и VBA
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]