powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Некорректная печать Чека ККМ, ошибка работы Обработки?
19 сообщений из 19, страница 1 из 1
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334336
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, Форумчане!
1с8.2, УТ 10.3.29.1, обычное

Имеется ККМ "Штрих-М-Лайт-ФРК"
Для работы использую обработку ShtrihMFiscalPrinters_v2.epf.

Но чек печатается некорректно: сначала печатается первая строчка с наименованием проданного товара, потом идет клише, далее как положено таблица с проданными товарами, но без первой строчки с наименованием
Вот так:

Товар ХХХ (шт.)
г.Такой-то, ул., дом.
ООО "Продажи и Ко"
ЗНК 8900 №0079
ИНН 5476547564765
26/10/16 12:34 Кассир Вася
Продажа ________№0034
____________2 * 12 = 24
Товар УУУ (шт.)
____________3 * 10 = 30
Всего_______________54
Наличными__________54

Как ведите, "товар ХХХ" выходит явно не там где нужно. В Штрих-М сказали, что у меня неправильно срабатывает какая-то функция и молчок...

Смогли бы подсказать, как можно в обработке исправить этот глюк?
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334425
trew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,

может нужно рулон наклеек в принтере поправить.
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334449
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trewUkraina,

может нужно рулон наклеек в принтере поправить.

Остро, по-заграничному... Ты такой умный, тебе череп не жмет?
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334456
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UkrainaСмогли бы подсказать, как можно в обработке исправить этот глюк?

Как исправить не подскажу, 1С нет.
Процесс пробития у Вас, примерно, следующий:

1. Напечатать текст с наименованием товара
2. Выполнить продажу
....
?. Закрыть чек

Чек открывается, когда делается первая продажа, поэтому название первого товара печатется перед заголовком чека.

Решить проблему можно так:
1. Весь чек печатать как текст (т.е. наименование, цена*кол=сумма), потом выполнить 1 продажу на сумму всего чека и закрыть чек.
2. Если прошивка поддерживает, перед первой продажей выполнить команду "Открыть чек", после алгоритм оставить прежним.
3. Если наименования не очень длинные, передавать их прямо в команде продажи
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334540
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отследил код ПровестиИРаспечататьЧек

Вышел на следующее:
Код: sql
1.
2.
3.
ОшибкаТО = ПолучитьСерверТО().ПечатьЧека(ФР, ПолучитьСерверТО().ПолучитьПарольКассираККМ(), НомерЧекаККМ, НомерСменыККМ,
ТаблицаТоваров, ПолучитьСуммуНаличнойОплаты(),									   ПолучитьСуммуБезналичнойОплаты(),
ВидОперации = Перечисления.ВидыОперацийЧекККМ.Возврат);



Т.е. сразу печатает чек. Ни слово про открытие!!!

Как правильно открыть чек? Попытался так:

Код: sql
1.
2.
3.
ОшибкаТО = ПолучитьСерверТО().ОткрытьЧек(ФР, ПолучитьСерверТО().ПолучитьПарольКассираККМ(),
ВидОперации = Перечисления.ВидыОперацийЧекККМ.Возврат,
НомерЧекаККМ, НомерСменыККМ, Истина);



Но это явно не правильно...
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334580
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,

А можете выложить _текст_ обработки? Как говорил, 1С нет, но глянуть можно.
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334585
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Ukraina,

А можете выложить _текст_ обработки? Как говорил, 1С нет, но глянуть можно.

Текст обработки гигантский Могу саму обработку кинуть, но у Вас нету 1с... Мож какой отдельный модуль?
Но там повязаны коды между формой документа чека ККМ, Обработкой "ТОСервер" и самой обработкой для Фискалки...

Как лучше то?
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334599
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кусок кода, который печатает чек, обращаясь к обработке "ТОСервер"

Код: sql
1.
2.
3.
4.
ОшибкаТО = ПолучитьСерверТО().ПечатьЧека(ФР, ПолучитьСерверТО().ПолучитьПарольКассираККМ(), НомерЧекаККМ, НомерСменыККМ,
ТаблицаТоваров, ПолучитьСуммуНаличнойОплаты(),
ПолучитьСуммуБезналичнойОплаты(),
ВидОперации = Перечисления.ВидыОперацийЧекККМ.Возврат);



Вот кусок кода функции обработке "ТОСервер"

Код: sql
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.
Функция ПечатьЧека(Идентификатор, Пароль, НомерЧека, НомерСмены,
                ОписаниеЧека, СуммаНал, СуммаБезнал, ПризнакВозврата) Экспорт

	Обработка = Неопределено;
	Объект    = Неопределено;
	Результат = ПолучитьОбъектДрайвера(Идентификатор, Обработка, Объект);

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

		Если НЕ ЗначениеЗаполнено(Результат) Тогда
			Позиция = Неопределено;
			Для Каждого Позиция Из ОписаниеЧека Цикл
				Сообщить("333№");

				ЗначениеСкидки = Позиция.Количество * Позиция.Цена * Позиция.Скидка * 0.01;
				СуммаСоСкидкой1С = Окр(Позиция.Количество * Позиция.Цена - ЗначениеСкидки, 2);
				СуммаСоСкидкойФР = Окр(Позиция.Количество * Позиция.Цена - Окр(ЗначениеСкидки, 2), 2);

				Если СуммаСоСкидкой1С = СуммаСоСкидкойФР Тогда
					Результат = Обработка.ПечататьСтроку(Объект,
														Позиция.Наименование,
														Позиция.Количество,
														Позиция.Цена,
														Позиция.Скидка,
														Позиция.НомерСекции,
														Позиция.СтавкаНДС);



Результат = Обработка.ОткрытьЧек(Объект, Пароль, ПризнакВозврата, НомерЧека, НомерСмены, Истина);

По ходу вот это открывает чек, но наверное это поздно срабатывает, чек уже печатается...
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334632
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UkrainaКак лучше то?

Я имел ввиду текст ShtrihMFiscalPrinters_v2.epf, он не должен быть очень большим.
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334648
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064UkrainaКак лучше то?

Я имел ввиду текст ShtrihMFiscalPrinters_v2.epf, он не должен быть очень большим.

Ну если не очень большой, то тогда

Код: sql
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.
960.
961.
962.
963.
964.
965.
966.
967.
968.
969.
970.
971.
972.
973.
974.
975.
976.
977.
978.
979.
980.
981.
982.
983.
984.
985.
986.
987.
988.
989.
990.
991.
992.
993.
994.
995.
996.
997.
998.
999.
1000.
1001.
1002.
1003.
1004.
1005.
1006.
1007.
1008.
1009.
1010.
1011.
1012.
1013.
1014.
1015.
1016.
1017.
1018.
1019.
1020.
#Если Клиент Тогда

///////////////////////////////////////////////////////////////////////////////
//// ПЕРЕМЕННЫЕ МОДУЛЯ

// Массив поддерживаемых моделей
Перем мМодели Экспорт;

// Соответствие протоколов
Перем мПротоколы Экспорт;

Перем мНетОшибки;
Перем мОшибкаПараметровНастройки;
Перем мОшибкаЗагрузкиДрайвера;
Перем мОшибкаНеизвестно;
Перем мОшибкаПриПодключении;
Перем мОшибкаТестНеПройден;
Перем мОшибкаНетВозможностиПечатиПКО;

Перем мНДС Экспорт;

Перем мИдентификатор;
Перем мВерсияОбработки;

Перем мВерсияТребуемая Экспорт;
Перем мВерсияИзДрайвера Экспорт;

Перем мОбновлениеМоделей;

///////////////////////////////////////////////////////////////////////////////
//// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ (ОБЩИЕ ФУНКЦИИ API)

// Функция возвращает номер версии API, поддерживаемой обработкой обслуживания.
//
// Номер версии задаётся следующим образом: Ver = Vmajor + Vminor / 100.0.
// Например, в случае, если данная функция возвращает значение «1.01», это
// означает, что данная обработка  имеет версию «1.1», полностью поддерживает
// версию «1.0» и содержит некоторые дополнительные элементы.
// В случае, если отличается целая часть версии (например, «2.1»), то это
// означает, что данная обработка несовместима с версией API «1.0».
//
// Функция является обязательной для любой версии API.
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  <Число> - Версия API обработки обслуживания.
//
//
Функция ПолучитьВерсиюAPI() Экспорт

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

КонецФункции // ПолучитьВерсиюAPI()

// Функция возвращает описание текущей обработки обслуживания (API v2.0).
//
// Данная функция позволяет серверу получить информацию об обработке
// обслуживания. Функция является обязательной для версий 1.X API.
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  <Структура> - Структура, содержащая описание текущей обработки.
//                Структура имеет следующие поля:
//
//                Вид              - <ПеречислениеСсылка.ВидыТорговогоОборудования>
//                                 - Вид торгового оборудования, поддерживаемый
//                                   данной обработкой обслуживания.
//
//                СписокМоделей    - <Массив>
//                                 - Список поддерживаемых обработкой моделей
//                                   торгового оборудования.
//
//                Наименование     - <Строка>
//                                 - Наименование обработки обслуживания.
//
//                Описание         - <Строка>
//                                 - Описание обработки обслуживания.
//
//                ВерсияОбработки  - <Число>
//                                 - Номер версии обработки обслуживания
//                                   (не версии API!!!).
//                                   Данный параметр используется при
//                                   обновлении.
//                                   Номер версии задаётся следующим образом:
//                                   Ver = Vmajor + Vminor / 100.0.
//
Функция ПолучитьОписание() Экспорт

	Результат                 = Новый Структура("Вид, СписокМоделей, Наименование,
	                                            |Описание, ВерсияОбработки,
	                                            |Идентификатор");
	мМетаданные               = Метаданные();
	Результат.Вид             = Перечисления.ВидыТорговогоОборудования.ФискальныйРегистратор;
	Результат.СписокМоделей   = мМодели;
	Результат.Наименование    = мМетаданные.Синоним;
	Результат.Описание        = мМетаданные.Комментарий;
	Результат.ВерсияОбработки = мВерсияОбработки;
	Результат.Идентификатор   = мИдентификатор;

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

КонецФункции // ПолучитьОписание()

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

	Результат = мНетОшибки;
	ОписаниеОшибки = "";
	ИДУстройства   = Неопределено;

	Порт                      = Неопределено;
	Скорость                  = Неопределено;
	Таймаут                   = Неопределено;
	НаличнаяОплата            = Неопределено;
	Секция                    = Неопределено;
	ПарольПользователя        = Неопределено;
	ПарольАдминистратора      = Неопределено;
	ОтменятьЧекПриПодключении = Неопределено;
	НаименованиеОплаты1       = Неопределено;
	НаименованиеОплаты2       = Неопределено;
	ЖурналОперацийДрайвера    = Неопределено;
	ПечататьЛоготип           = Неопределено;
	РазмерЛоготипа            = Неопределено;
	СовместимыеВерсии         = Неопределено;
	ТипПодключения            = Неопределено;
	ИмяКомпьютера             = Неопределено;
	IPАдрес                   = Неопределено;
	TCPПорт                   = Неопределено;

	Параметры.Свойство("Порт"                     , Порт);
	Параметры.Свойство("Скорость"                 , Скорость);
	Параметры.Свойство("Таймаут"                  , Таймаут);
	Параметры.Свойство("НаличнаяОплата"           , НаличнаяОплата);
	Параметры.Свойство("Секция"                   , Секция);
	Параметры.Свойство("ПарольПользователя"       , ПарольПользователя);
	Параметры.Свойство("ПарольАдминистратора"     , ПарольАдминистратора);
	Параметры.Свойство("ОтменятьЧекПриПодключении", ОтменятьЧекПриПодключении);
	Параметры.Свойство("НаименованиеОплаты1"      , НаименованиеОплаты1);
	Параметры.Свойство("НаименованиеОплаты2"      , НаименованиеОплаты2);
	Параметры.Свойство("ЖурналОперацийДрайвера"   , ЖурналОперацийДрайвера);
	Параметры.Свойство("ПечататьЛоготип"          , ПечататьЛоготип);
	Параметры.Свойство("РазмерЛоготипа"           , РазмерЛоготипа);
	Параметры.Свойство("ТипПодключения"           , ТипПодключения);
	Параметры.Свойство("ИмяКомпьютера"            , ИмяКомпьютера);
	Параметры.Свойство("IPАдрес"                  , IPАдрес);
	Параметры.Свойство("TCPПорт"                  , TCPПорт);
	Параметры.Свойство("СовместимыеВерсии"        , СовместимыеВерсии);

	Если Порт                      = Неопределено
	 Или Скорость                  = Неопределено
	 Или Таймаут                   = Неопределено
	 Или НаличнаяОплата            = Неопределено
	 Или Секция                    = Неопределено
	 Или ПарольПользователя        = Неопределено
	 Или ПарольАдминистратора      = Неопределено
	 Или ОтменятьЧекПриПодключении = Неопределено
	 Или НаименованиеОплаты1       = Неопределено
	 Или НаименованиеОплаты2       = Неопределено
	 Или ЖурналОперацийДрайвера    = Неопределено
	 Или ПечататьЛоготип           = Неопределено
	 Или РазмерЛоготипа            = Неопределено
	 Или ТипПодключения            = Неопределено
	 Или ИмяКомпьютера             = Неопределено
	 Или IPАдрес                   = Неопределено
	 Или TCPПорт                   = Неопределено
	 Или СовместимыеВерсии         = Неопределено Тогда
		Результат = мОшибкаПараметровНастройки;
		ОписаниеОшибки = "";
	Иначе
		Попытка
			ПрогИД = "AddIn.DrvFR1C";
			ПодключитьВнешнююКомпоненту(ПрогИД);
			Драйвер = Новый (ПрогИД);
		Исключение
			Результат = мОшибкаЗагрузкиДрайвера;
			ОписаниеОшибки = "Невозможно подключить внешнюю компоненту.
			| Проверьте, что внешняя компонента корректно установлена и имеет ту же версию, 
			| что и требуемая обработкой обслуживания.";
		КонецПопытки;

		Если Результат = мНетОшибки Тогда
			Попытка
				мВерсияИзДрайвера = Драйвер.ПолучитьНомерВерсии();
			Исключение
				Если Не ВерсииСовместимы(СовместимыеВерсии) Тогда
					Сообщить("""" + Модель + """:" + Символы.ПС +
					    "Внимание! Невозможно определить версию драйвера." + Символы.ПС +
					    "Требуемая версия: " + мВерсияТребуемая + Символы.ПС +
					    "Корректная работа драйвера не гарантируется", СтатусСообщения.Внимание);
				КонецЕсли;
			КонецПопытки;

			Если мВерсияИзДрайвера <> Неопределено И (Не ВерсииРавны() И Не ВерсииСовместимы(СовместимыеВерсии)) Тогда
				Сообщить("""" + Модель + """:" + Символы.ПС +
				    "Внимание! Текущая версия драйвера отличается от поддерживаемой." + Символы.ПС +
				    "Текущая версия: " + мВерсияИзДрайвера + Символы.ПС +
				    "Требуемая версия: " + мВерсияТребуемая + Символы.ПС +
				    "Корректная работа драйвера не гарантируется", СтатусСообщения.Внимание);
			КонецЕсли;

			Объект = Новый Структура("Модель, Параметры, Драйвер, ОписаниеОшибки, ИДУстройства",
			                          Модель, Параметры, Драйвер, ОписаниеОшибки, ИДУстройства);
		КонецЕсли;
	КонецЕсли;

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

КонецФункции // СоздатьОбъектДрайвера()

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

	Таблица = Новый ТаблицаЗначений();

	Таблица.Колонки.Добавить("ИмяСобытия");

	Возврат Таблица;

КонецФункции // ПолучитьОписаниеСобытий()

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

	Результат = мНетОшибки;
	СерийныйНомерККМ = Неопределено;

	МассивЗначений = Новый Массив;
	МассивЗначений.Добавить(Объект.Параметры.Порт);
	МассивЗначений.Добавить(Объект.Параметры.Скорость);
	МассивЗначений.Добавить(Объект.Параметры.ПарольПользователя);
	МассивЗначений.Добавить(Объект.Параметры.ПарольАдминистратора);
	МассивЗначений.Добавить(Объект.Параметры.Таймаут);
	МассивЗначений.Добавить(СерийныйНомерККМ);
	МассивЗначений.Добавить(мНДС[0]);
	МассивЗначений.Добавить(мНДС[1]);
	МассивЗначений.Добавить(мНДС[2]);
	МассивЗначений.Добавить(мНДС[3]);
	МассивЗначений.Добавить(Ложь);
	МассивЗначений.Добавить(Объект.Параметры.ЖурналОперацийДрайвера);
	МассивЗначений.Добавить(Объект.Параметры.НаименованиеОплаты1);
	МассивЗначений.Добавить(Объект.Параметры.НаименованиеОплаты2);
	МассивЗначений.Добавить(Объект.Параметры.ПечататьЛоготип);
	МассивЗначений.Добавить(Объект.Параметры.РазмерЛоготипа);
	МассивЗначений.Добавить(Объект.Параметры.ТипПодключения);
	МассивЗначений.Добавить(Объект.Параметры.ИмяКомпьютера);
	МассивЗначений.Добавить(Объект.Параметры.IPАдрес);
	МассивЗначений.Добавить(Объект.Параметры.TCPПорт);

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

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

КонецФункции // Подключить()

// Процедура осуществляет отключение устройства.
// (API v2.0)
//
// Параметры:
//  Объект - <*>
//         - Объект драйвера торгового оборудования.
//
Процедура Отключить(Объект) Экспорт

	// Закрыть соединение
	Если Не Объект.Драйвер.Отключить(Объект.ИДУстройства) Тогда
		Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
	КонецЕсли;

КонецПроцедуры // Отключить()

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

	Результат = Подключить(Объект);
	Если Результат = мНетОшибки Тогда
		Отключить(Объект);
	КонецЕсли;

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

КонецФункции // ТестУстройства()

// Процедура осуществляет вызов формы настройки торгового оборудования.
// (API v2.0)
//
// Параметры:
//  Модель    - <Строка>
//            - Модель настраиваемого оборудования.
//
//  Параметры - <Структура>
//            - Входной/выходной параметр; структура параметров.
//
Процедура НастроитьОборудование(Модель, Параметры) Экспорт

	Форма                    = ПолучитьФорму("ФормаНастройки");
	Форма.мМодель            = Модель;
	Форма.мПараметры         = Параметры;

	Ответ = Форма.ОткрытьМодально();

	Если Ответ = КодВозвратаДиалога.ОК Тогда
		Параметры = Форма.мПараметры;
	КонецЕсли;

КонецПроцедуры // НастроитьОборудование()

// Функция возвращает имя источника внешнего события 
// генерируемое при подключеннии внешней компонентой.
// По уникальному для сеанса подключения имени производится поиск 
// из конфигурации обработки обслуживания для обработки полученного
// события.
// (API v2.1)
//
// Параметры:
//  Объект                         - <*>
//                                 - Объект драйвера устройства.
//
// Возвращаемое значение:
//  <Строка> - Имя внешнего источника события.
//
Функция ПолучитьИмяИсточникаВнешнегоСобытия(Объект) Экспорт

	Возврат "";

КонецФункции

///////////////////////////////////////////////////////////////////////////////
//// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ (ФУНКЦИИ API ОБРАБОТОК ОБСЛУЖИВАНИЯ ФР)

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

	Результат   = ?(Объект.Параметры.НаличнаяОплата, мНетОшибки, мОшибкаНеизвестно);
	НомерОтдела = Объект.Параметры.Секция;
	
	Если (Результат = мОшибкаНеизвестно) Тогда
		Объект.ОписаниеОшибки = "Данный фискальный регистратор не имеет возможности отражать в чеке факт наличных расчетов с юридическими лицами
		                        |В случае, если данная возможность предусмотрена фискальным регистратором, рекомендуется проверить его настройки в форме обработки ""Настройка торгового оборудования""";
	КонецЕсли;

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

КонецФункции // ПолучитьПараметрыНаличнойОплаты()

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

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

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

			Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
			+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

			Если Ответ = КодВозвратаДиалога.Повторить Тогда
				Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

				Если Результат <> мНетОшибки И Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
					Результат = мНетОшибки;
					Прервать;
				КонецЕсли;
			Иначе
				Результат = мНетОшибки;
				Прервать;
			КонецЕсли;
		Иначе
			Если Результат = мНетОшибки И Не Объект.Драйвер.НапечататьОтчетБезГашения(Объект.ИДУстройства) Тогда
				Результат = мОшибкаНеизвестно;
				Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
			Иначе
				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции // XОтчет()

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

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

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

			Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
			+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

			Если Ответ = КодВозвратаДиалога.Повторить Тогда
				Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

				Если Результат <> мНетОшибки И Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
					Результат = мНетОшибки;
					Прервать;
				КонецЕсли;
			Иначе
				Результат = мНетОшибки;
				Прервать;
			КонецЕсли;
		Иначе
			Если Результат = мНетОшибки И Не Объект.Драйвер.НапечататьОтчетСГашением(Объект.ИДУстройства) Тогда
				Результат = мОшибкаНеизвестно;
				Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
			Иначе
				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции // ZОтчет()

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

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

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

			Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
			+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

			Если Ответ = КодВозвратаДиалога.Повторить Тогда
				Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

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

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

КонецФункции // Сумма()

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

	Результат  = мНетОшибки;
	НомерЧека  = 0;
	НомерСмены = 0;

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

			Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
			+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

			Если Ответ = КодВозвратаДиалога.Повторить Тогда
				Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

				Если Результат <> мНетОшибки И Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
					Результат = мНетОшибки;
					Прервать;
				КонецЕсли;
			Иначе
				Объект.Драйвер.ОтменитьЧек(Объект.ИДУстройства);
				Объект.ОписаниеОшибки = Объект.ОписаниеОшибки + ". Операция печати чека отменена.";
				Результат = мОшибкаНеизвестно;
				Прервать;
			КонецЕсли;
		Иначе
			Если Результат = мНетОшибки И Не Объект.Драйвер.ОткрытьЧек(Объект.ИДУстройства, ФискальныйЧек, ЭтоВозврат, Истина, НомерЧека, НомерСмены) Тогда
				Результат = мОшибкаНеизвестно;
				Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
			Иначе
				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции // ОткрытьЧек()

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

	Результат  = мНетОшибки;
	СуммаПозиции = Количество*Цена - Окр(Количество*Цена*Скидка/100, 2, РежимОкругления.Окр15как20);

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

			Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
			+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

			Если Ответ = КодВозвратаДиалога.Повторить Тогда
				Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

				Если Результат <> мНетОшибки И Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
					Результат = мНетОшибки;
					Прервать;
				КонецЕсли;
			Иначе
				Объект.Драйвер.ОтменитьЧек(Объект.ИДУстройства);
				Объект.ОписаниеОшибки = Объект.ОписаниеОшибки + ". Операция печати чека отменена.";
				Результат = мОшибкаНеизвестно;
				Прервать;
			КонецЕсли;
		Иначе
			Если Результат = мНетОшибки И Не Объект.Драйвер.НапечататьФискСтроку(Объект.ИДУстройства, Наименование, Количество, Цена, СуммаПозиции, Отдел, НДС) Тогда
				Результат = мОшибкаНеизвестно;
				Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
			Иначе
				Если Результат <> мНетОшибки Тогда
					Объект.Драйвер.ОтменитьЧек(Объект.ИДУстройства);
				КонецЕсли;

				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции // ПечататьСтроку()

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

	Возврат ОтменитьЧек(Объект);

КонецФункции // АннулироватьЧек()

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

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

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

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

КонецФункции // ОтменитьЧек()

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

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

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

			Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
			+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

			Если Ответ = КодВозвратаДиалога.Повторить Тогда
				Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

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

				Прервать;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции // ЗакрытьЧек()

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

	Результат = мНетОшибки;
	НомерЧека = 0;
	НомерСмены = 0;
	ПечатьСтрокОтмена = Ложь;

	Для Каждого СтрокаТекста Из МассивСтрок Цикл
		Пока Истина Цикл
			Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
				Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

				Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
				+ "Устраните неисправность и нажмите ""Повторить"" для продолжения печати.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

				Если Ответ = КодВозвратаДиалога.Повторить Тогда
					Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);

					Если Результат <> мНетОшибки И Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
						Результат = мНетОшибки;
						Прервать;
					КонецЕсли;
				Иначе
					ПечатьСтрокОтмена = Истина;
					Объект.Драйвер.ОтменитьЧек(Объект.ИДУстройства);
					Объект.ОписаниеОшибки = Объект.ОписаниеОшибки + ". Операция печати чека отменена.";
					Результат = мОшибкаНеизвестно;
					Прервать;
				КонецЕсли;
			Иначе
				Если Результат = мНетОшибки И Не Объект.Драйвер.НапечататьНефискСтроку(Объект.ИДУстройства, СтрокаТекста) Тогда
					Результат = мОшибкаНеизвестно;
					Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);
				Иначе
					Если Результат <> мНетОшибки Тогда
						ПечатьСтрокОтмена = Истина;
						Объект.Драйвер.ОтменитьЧек(Объект.ИДУстройства);
						Прервать;
					КонецЕсли;

					Прервать;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;

		Если ПечатьСтрокОтмена Тогда
			Прервать;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции

// Функция возвращает Истину, если поддерживается смешанный режим печати
//  чека (одновременно фискальные и нефискальные строки).
// (API v2.4)
//
// Параметры:
//
// Возвращаемое значение:
//  <Булево> 
//
Функция ПоддерживаетсяСмешанныйРежимПечати() Экспорт

	Возврат Истина;

КонецФункции // ПоддерживаетсяСмешанныйРежимПечати()

///////////////////////////////////////////////////////////////////////////////
//// ПРОЦЕДУРЫ И ФУНКЦИИ

Функция ВерсииРавны() Экспорт

	Результат = Истина;

	Если мВерсияИзДрайвера <> Неопределено Тогда
		Для Индекс = 1 По ?(СтрДлина(мВерсияИзДрайвера) < СтрДлина(мВерсияТребуемая), СтрДлина(мВерсияИзДрайвера), СтрДлина(мВерсияТребуемая)) Цикл
			Если Сред(мВерсияИзДрайвера,Индекс, 1) <> Сред(мВерсияТребуемая, Индекс, 1) Тогда
				Результат = Ложь;
				Прервать;
			КонецЕсли;
		КонецЦикла;
	Иначе
		Результат = Ложь;
	КонецЕсли;
	
	Возврат Результат;

КонецФункции

Функция ВерсииСовместимы(СовместимыеВерсии) Экспорт

	Результат = Истина;

	Если мВерсияИзДрайвера <> Неопределено Тогда
		Если СовместимыеВерсии.Количество() = 0 Тогда
			Результат = Ложь;
		Иначе
			Для Каждого СтрокаТаблицы Из СовместимыеВерсии Цикл
				Результат = Истина;
				Для Индекс = 1 По ?(СтрДлина(мВерсияИзДрайвера) < СтрДлина(СтрокаТаблицы.СовместимаяВерсия), СтрДлина(мВерсияИзДрайвера), СтрДлина(СтрокаТаблицы.СовместимаяВерсия)) Цикл
					Если Сред(мВерсияИзДрайвера,Индекс, 1) <> Сред(СтрокаТаблицы.СовместимаяВерсия, Индекс, 1) Тогда
						Результат = Ложь;
						Прервать;
					КонецЕсли;
				КонецЦикла;

				Если Результат Тогда
					Прервать;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	Иначе
		Если СовместимыеВерсии.Найти("Не определена", "СовместимаяВерсия") <> Неопределено Тогда
			Результат = Истина;
		Иначе
			Результат = Ложь;
		КонецЕсли;
	КонецЕсли;

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

КонецФункции

Функция ПроверкаСостоянияПечати(Объект)

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

	Пока Истина Цикл
		Если Не Объект.Драйвер.ПроверитьСостояниеПечати(Объект.ИДУстройства) Тогда
			Объект.Драйвер.ПолучитьОшибку(Объект.ОписаниеОшибки);

				Ответ = Вопрос(Объект.ОписаниеОшибки + Символы.ПС
				+ "Устраните неисправность и нажмите ""Повторить"" для продолжения операции.", РежимДиалогаВопрос.ПовторитьОтмена, 0, КодВозвратаДиалога.Повторить);

				Если Ответ = КодВозвратаДиалога.Повторить Тогда
					Объект.Драйвер.ПродолжитьПечать(Объект.ИДУстройства);
				Иначе
					Прервать;
				КонецЕсли;
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;

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

КонецФункции

///////////////////////////////////////////////////////////////////////////////
//// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

мНетОшибки                           = Перечисления.ТООшибкиОбщие.ПустаяСсылка();
мОшибкаПараметровНастройки           = Перечисления.ТООшибкиОбщие.ОшибкаПараметровНастройки;
мОшибкаЗагрузкиДрайвера              = Перечисления.ТООшибкиОбщие.ОшибкаЗагрузкиДрайвера;
мОшибкаНеизвестно                    = Перечисления.ТООшибкиОбщие.ОшибкаНеизвестно;
мОшибкаПриПодключении                = Перечисления.ТООшибкиОбщие.ОшибкаПриПодключении;
мОшибкаТестНеПройден                 = Перечисления.ТООшибкиОбщие.ОшибкаТестНеПройден;
мОшибкаНетВозможностиПечатиПКО       = Перечисления.ТООшибкиФР.ОшибкаНетВозможностиПечатиПКО;

// Поддерживаемые модели фискальных регистраторов
мМодели = Новый Массив();
мМодели.Добавить("ШТРИХ-950-К");
мМодели.Добавить("ШТРИХ-КОМБО-ФР-К");
мМодели.Добавить("ШТРИХ-МИНИ-ФР-К");
мМодели.Добавить("ШТРИХ-ФР-К");
мМодели.Добавить("ШТРИХ-М-ФР-К");
мМодели.Добавить("ШТРИХ-КИОСК-ФР-К");
мМодели.Добавить("ЭЛВЕС-ФР-К");
мМодели.Добавить("ШТРИХ-LIGHT-ФР-К");
мМодели.Добавить("ШТРИХ-ФР-Ф исп.03");
мМодели.Добавить("ШТРИХ-ФР-Ф исп.04");

мНДС = Новый Массив();
мНДС.Добавить(0);
мНДС.Добавить(15.00);
мНДС.Добавить(0);
мНДС.Добавить(0);

мИдентификатор   = Новый УникальныйИдентификатор;
мВерсияОбработки = 2.25;

мВерсияТребуемая  = "4.9";
мВерсияИзДрайвера = Неопределено;

#КонецЕсли

...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39334932
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,

Очень похоже, что Ваш ФР не поддерживает команду 0x8D (открытие чека). Скорее всего, нужно поменять прошивку.
Проверить это утверждение можно посмотрев в логе DrvFR.log результат выполнения команды 0x8D
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39335920
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Ukraina,

Очень похоже, что Ваш ФР не поддерживает команду 0x8D (открытие чека). Скорее всего, нужно поменять прошивку.
Проверить это утверждение можно посмотрев в логе DrvFR.log результат выполнения команды 0x8DА еще лучше в ФР со своими прошивками не лезть, а делегировать это сервисной службе, имеющей полномочия работы с ФР, предварительно зарегистрировать это событие в налоговой.
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39335981
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064,

Возможно не поддерживает. Команда 0x8D в явном виде в логе не обнаружена. Может формат этой команды другой.
Но как тогда можно объяснить, что в УТ 11.3 чеки печатаются. В Данной конфигурации драйвера для Штрих-М там предустановлены.
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39336195
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukrainax1ca4064,

Возможно не поддерживает. Команда 0x8D в явном виде в логе не обнаружена. Может формат этой команды другой.
Но как тогда можно объяснить, что в УТ 11.3 чеки печатаются. В Данной конфигурации драйвера для Штрих-М там предустановлены.

Хотелось бы посмотреть лог (или его часть) с пробитием чека. Кроме этого можете попробовать пробить чек из "Теста драйвера (интерфейс 1С)", воспроизведется ли проблема?. УТ 11.3 работает с этим же ФР?
Т.к. сама обработка почти ничего не делает, кроме вызова методов драйвера, то проблема может быть в драйвере. Его можно скопировать с рабочего компьютера или поставить свежую версию с сайта Штрих.
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39336316
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064Ukrainax1ca4064,

Возможно не поддерживает. Команда 0x8D в явном виде в логе не обнаружена. Может формат этой команды другой.
Но как тогда можно объяснить, что в УТ 11.3 чеки печатаются. В Данной конфигурации драйвера для Штрих-М там предустановлены.

Хотелось бы посмотреть лог (или его часть) с пробитием чека. Кроме этого можете попробовать пробить чек из "Теста драйвера (интерфейс 1С)", воспроизведется ли проблема?. УТ 11.3 работает с этим же ФР?
Т.к. сама обработка почти ничего не делает, кроме вызова методов драйвера, то проблема может быть в драйвере. Его можно скопировать с рабочего компьютера или поставить свежую версию с сайта Штрих.

Попробовал распечатать с тест Драйвера в интерфейсе 1с. На вкладке "Чек": Открыть, РасчечататьФиксСтроку, ЗакрытьЧек. Та жа ошибка, т.е. в певой строке печатает наименование товара, далее как положено.

УТ 11.3 работает с тем же ФР!!! Но без ошибки.

Я смог вытащить из 11.3 новый драйвер в архиве smDrvFR1CLib.dll (там еще какие-то 2 файла хтмл-формата)
Такой же драйвер использует (есть наличие на диске после установки 4.12.090)

Может его заменить на вытащенный из 11.3? Я пробовал тупым копированием, но не помогло...
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39338408
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,

Логи бы
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39338918
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста.
Высылаю Лог-файл.
Там 2-а чека
Чек №1
Чай черный 2 * 15 = 30
Чай зеленый 3* 15 = 30

Чек №2
Чай черный 1 * 15 = 15
Чай зеленый 1* 15 = 15
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39339312
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ukraina,

Это лог от устройства "YARUS-TM C21". С семейством "Ярус" я дела не имел, но допускаю, что команда "Открыть чек" им не поддерживается (если я правильно интерпретировал строку: "Get_CapOpenCheck: False").
...
Рейтинг: 0 / 0
Некорректная печать Чека ККМ, ошибка работы Обработки?
    #39340843
Ukraina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мелькнула такая мысль

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

На сайте 1с есть возможность для скачивания Библиотек Подключаемого Оборудования разных версий.
Если верить всем, то используя эту БПО можно в собственных разработках наладить подключение оборудования, в том числе и ККМ...

Есть ли смысл скачать современную БПО с предустановленными драйверами, интегрировать в УТ 10.3 на платформе 8.3 и подключить нужное оборудование через предустановленные драйвера?

Кто-нибудь имеет опыт по подключению БПО?
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Некорректная печать Чека ККМ, ошибка работы Обработки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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