Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.25 KB | None | 0 0
  1. Процедура ВыполнитьОперацию;
  2. Если (PrinterType = 0) Тогда
  3. И_Сообщение('Принтер НЕустановлен или НЕизвестный тип Фискального Регистратора');
  4. Завершить;
  5. КонецЕсли;
  6.  
  7. Выбор ({Ярлык}) Из
  8. //Печать Х-отчёта
  9. 1:
  10. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  11. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  12. S := FiscalPrinter.KeyPosition;
  13. Если (S <> 'N') & (S <> 'X') Тогда
  14. И_Сообщение('Переведите ключ в режим X');
  15. КонецЕсли;
  16. FiscalPrinter.PrintXReport();
  17. Ждать(4000);
  18. Если (FiscalPrinter.LastErrorCode = 0) Тогда
  19. И_Сообщение('X отчёт напечатан!');
  20. Иначе
  21. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  22. КонецЕсли;
  23. FiscalPrinter.Close();
  24. КонецПункта;
  25.  
  26. //Установка времени в принтере такого же как текущее время на компе
  27. 2:
  28. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  29. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  30. FiscalPrinter.SetDateTime(Сейчас());
  31. Ждать(2000);
  32. Если (FiscalPrinter.LastErrorCode = 0) Тогда
  33. И_Сообщение('Часы переведены!');
  34. Иначе
  35. //ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  36. статус:= FiscalPrinter.DecodedStates;
  37. О_Сообщение(статус);
  38. КонецЕсли;
  39. FiscalPrinter.Close();
  40. КонецПункта;
  41.  
  42. //Сумма наличных денег в кассе // Печать нулевого чека (* FiscalPrinter.PrintNullCheck(); *)
  43. 3:
  44. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  45. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  46. S := 'Сумма продаж по кассе = ' + ВещВСтрокуФ(FiscalPrinter.SalesAmount,2) + ' руб.';
  47. S := СКопировать( S + ' ',1,58);
  48. S := S + 'Наличных денег в кассе = ' + ВещВСтрокуФ(FiscalPrinter.CashAmount,2)+ ' руб.';
  49. И_Сообщение(S);
  50. FiscalPrinter.Close();
  51. КонецПункта;
  52.  
  53. //Печать Х-отчёта по секциям // Карточка('к_Печать фин. отчета', '');
  54. 4:
  55. // Если (PrinterType <> 5) Тогда
  56. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  57. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  58. S := FiscalPrinter.KeyPosition;
  59. Если (S <> 'N') & (S <> 'X') Тогда
  60. И_Сообщение('Переведите ключ в режим X');
  61. КонецЕсли;
  62. Если (FiscalPrinter.SalesAmount > 0 ) Тогда
  63. FiscalPrinter.PrintXReportBySection();
  64. Ждать(3000);
  65. Если (FiscalPrinter.LastErrorCode = 0) Тогда
  66. И_Сообщение('X отчёт по секциям напечатан!');
  67. Иначе
  68. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  69. КонецЕсли;
  70. Иначе
  71. И_Сообщение('Нет продаж. Нет данных для печати!');
  72. КонецЕсли;
  73. FiscalPrinter.Close();
  74. // Иначе
  75. // И_Сообщение('Для данного типа принтера этот отчет недоступен!');
  76. // КонецЕсли;
  77. КонецПункта;
  78.  
  79. //внесение- выдача денег
  80. 5:
  81. Карточка('к_Изъятие_внесение_денег', '1');
  82. КонецПункта;
  83. //внесение- выдача денег
  84. 6:
  85. Карточка('к_Изъятие_внесение_денег', '2');
  86. КонецПункта;
  87.  
  88. //Открытие денежного ящика
  89. 7:
  90. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  91. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  92. FiscalPrinter.OpenCashBox();
  93. FiscalPrinter.Close();
  94. КонецПункта;
  95.  
  96. //Печать Z-отчёта
  97. 8:
  98. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  99. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  100. S := FiscalPrinter.KeyPosition;
  101. Если (S <> 'N') & (S <> 'Z') Тогда
  102. И_Сообщение('Переведите ключ в режим Z');
  103. КонецЕсли;
  104. Если(В_Сообщение('Будет произведено суточное гашение с обнулением итогов. Продолжить?' ,2) = 2) Тогда
  105. FiscalPrinter.PrintZReport();
  106. Ждать(5000);
  107. Если (FiscalPrinter.LastErrorCode = 0) Тогда
  108. S := 'Z отчёт напечатан!';
  109. //Обнуление генератора артикулов подключённого к Текущей станции принтера.
  110. //Получаем название генератора, который нужно обнулять:
  111. GenName := ЗначениеПоля('CAT0321', 'GENNAME', 'ID = ' + PrinterID, Да);
  112. //Обнуляем генератор:
  113. Если SQLКоманда('SET GENERATOR ' + GenName + ' TO 0') Тогда
  114. S := S + ' Регистр артикулов обнулён.';
  115. И_Сообщение(S);
  116. Иначе S := S + ' Регистр артикулов для ЭТОЙ КАССЫ не был обнулён, СООБЩИТЕ об этом программистам !!!';
  117. И_Сообщение(S);
  118. КонецЕсли;
  119. Иначе
  120. ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  121. КонецЕсли;
  122. КонецЕсли;
  123. FiscalPrinter.Close();
  124. КонецПункта;
  125.  
  126. //Продолжить работу ( для ШТРИХ и ДАТЕКС)
  127. 9:
  128. Если ((PrinterType = 2)|(PrinterType = 5)) Тогда
  129. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  130. FiscalPrinter.ResumeWork();
  131. Если (FiscalPrinter.LastErrorCode <> 0) Тогда
  132. S := 'Ошибка выполнения команды "Продолжить работу"' ;
  133. О_Сообщение(S);
  134. КонецЕсли;
  135. FiscalPrinter.Close();
  136. И_Сообщение('Снимите Х-отчёт. Сравните СУММУ на Х-отчёте и СУММУ чеков по кассе в форме "Аптечные накладные".');
  137. Иначе
  138. И_Сообщение('Выключите, затем Включите питание ФИСКАЛЬНОГО РЕГИСТРАТОРА.');
  139. И_Сообщение('После АВТОТЕСТА снимите Х-отчёт. Сравните СУММУ на Х-отчёте и СУММУ чеков по кассе в форме "Аптечные накладные".');
  140. КонецЕсли;
  141. КонецПункта;
  142.  
  143. 10:
  144. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  145. status:= FiscalPrinter.StatusString;
  146. СчБит:= 0;
  147. СчОшибок:= 0;
  148. Если
  149. СКопировать(status,2,1)= '1'
  150. Тогда
  151. СчБит:= СчБит+1;
  152. статус:= 'Открыт документ возврата';
  153. КонецЕсли;
  154.  
  155. Если
  156. СКопировать(status,3,1)= '1'
  157. Тогда
  158. СчБит:= СчБит+1;
  159. СчОшибок:= СчОшибок+1;
  160. статус:= статус+Символ(13)+Символ(10)+'Общая ошибка';
  161. КонецЕсли;
  162.  
  163. Если
  164. СКопировать(status,4,1)= '1'
  165. Тогда
  166. СчБит:= СчБит+1;
  167. СчОшибок:= СчОшибок+1;
  168. статус:= статус+Символ(13)+Символ(10)+'Печатающее устройство неисправно';
  169. КонецЕсли;
  170.  
  171. Если
  172. СКопировать(status,6,1)= '1'
  173. Тогда
  174. СчБит:= СчБит+1;
  175. СчОшибок:= СчОшибок+1;
  176. статус:= статус+Символ(13)+Символ(10)+'Таймер не установлен';
  177. КонецЕсли;
  178.  
  179. Если
  180. СКопировать(status,7,1)= '1'
  181. Тогда
  182. СчБит:= СчБит+1;
  183. СчОшибок:= СчОшибок+1;
  184. статус:= статус+Символ(13)+Символ(10)+'Неправильный код полученной команды';
  185. КонецЕсли;
  186.  
  187. Если
  188. СКопировать(status,8,1)= '1'
  189. Тогда
  190. СчБит:= СчБит+1;
  191. СчОшибок:= СчОшибок+1;
  192. статус:= статус+Символ(13)+Символ(10)+'Синтаксическая ошибка в полученных данных';
  193. КонецЕсли;
  194.  
  195. Если
  196. СКопировать(status,11,1)= '1'
  197. Тогда
  198. СчБит:= СчБит+1;
  199. СчОшибок:= СчОшибок+1;
  200. статус:= статус+Символ(13)+Символ(10)+'Крышка автообрезчика открыта';
  201. КонецЕсли;
  202.  
  203. Если
  204. СКопировать(status,12,1)= '1'
  205. Тогда
  206. СчБит:= СчБит+1;
  207. СчОшибок:= СчОшибок+1;
  208. статус:= статус+Символ(13)+Символ(10)+'После включения ФРа обнаружены нарушения данных в ОЗУ';
  209. КонецЕсли;
  210.  
  211. Если
  212. СКопировать(status,13,1)= '1'
  213. Тогда
  214. СчБит:= СчБит+1;
  215. СчОшибок:= СчОшибок+1;
  216. статус:= статус+Символ(13)+Символ(10)+'Батарея разряжена (Таймер реального времени в состоянии RESET)';
  217. КонецЕсли;
  218.  
  219. Если
  220. СКопировать(status,14,1)= '1'
  221. Тогда
  222. СчБит:= СчБит+1;
  223. СчОшибок:= СчОшибок+1;
  224. статус:= статус+Символ(13)+Символ(10)+'ОЗУ обнулено';
  225. КонецЕсли;
  226.  
  227. Если
  228. СКопировать(status,15,1)= '1'
  229. Тогда
  230. СчБит:= СчБит+1;
  231. СчОшибок:= СчОшибок+1;
  232. статус:= статус+Символ(13)+Символ(10)+'Команда не может быть выполнена в данном режиме';
  233. КонецЕсли;
  234.  
  235. Если
  236. СКопировать(status,16,1)= '1'
  237. Тогда
  238. СчБит:= СчБит+1;
  239. СчОшибок:= СчОшибок+1;
  240. статус:= статус+Символ(13)+Символ(10)+'Переполнение суммы';
  241. КонецЕсли;
  242.  
  243. Если
  244. СКопировать(status,19,1)= '1'
  245. Тогда
  246. СчБит:= СчБит+1;
  247. статус:= статус+Символ(13)+Символ(10)+'Открыт служебный документ';
  248. КонецЕсли;
  249.  
  250. Если
  251. СКопировать(status,20,1)= '1'
  252. Тогда
  253. СчБит:= СчБит+1;
  254. статус:= статус+Символ(13)+Символ(10)+'Близок конец контрольной ленты';
  255. КонецЕсли;
  256.  
  257. Если
  258. СКопировать(status,21,1)= '1'
  259. Тогда
  260. СчБит:= СчБит+1;
  261. статус:= статус+Символ(13)+Символ(10)+'Открыт платежный документ или документ возврата';
  262. КонецЕсли;
  263.  
  264. Если
  265. СКопировать(status,22,1)= '1'
  266. Тогда
  267. СчБит:= СчБит+1;
  268. статус:= статус+Символ(13)+Символ(10)+'Конец контрольной ленты';
  269. КонецЕсли;
  270.  
  271. Если
  272. СКопировать(status,23,1)= '1'
  273. Тогда
  274. СчБит:= СчБит+1;
  275. статус:= статус+Символ(13)+Символ(10)+'Недостаточно ленты';
  276. КонецЕсли;
  277.  
  278. Если
  279. СКопировать(status,24,1)= '1'
  280. Тогда
  281. СчБит:= СчБит+1;
  282. статус:= статус+Символ(13)+Символ(10)+'Закончилась лента';
  283. КонецЕсли;
  284.  
  285.  
  286.  
  287.  
  288. И_Сообщение(status);
  289. Если
  290. СчОшибок>0
  291. Тогда
  292. И_Сообщение('Обнаружены следущие ошибки в работе ФР:'+Символ(13)+Символ(10)+статус);
  293. Иначе
  294. И_Сообщение('Ошибок нет');
  295. КонецЕсли;
  296. FiscalPrinter.Close();
  297. КонецПункта;
  298.  
  299. 11:
  300. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  301. FiscalPrinter.CancelLastDoc();
  302. FiscalPrinter.Close();
  303. КонецПункта;
  304.  
  305. 12:
  306. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  307. FiscalPrinter.AddOperator('01','0000','Тёркин Василий Петрович');
  308. Если (FiscalPrinter.LastErrorCode = 0) Тогда
  309. И_Сообщение('Оператор добавлен успешно!');
  310. Иначе
  311. //ВыполнитьПроцедуру ('ПроверитьСостояниеПринтера');
  312. статус:= FiscalPrinter.DecodedStates;
  313. О_Сообщение(статус);
  314. FiscalPrinter.Close();
  315. КонецЕсли;
  316. КонецПункта;
  317.  
  318. 13:
  319. FiscalPrinter.Open(PrinterType,PrinterPort,{Активный_пользователь_название});
  320. И_Сообщение('Имя оператора:'+Символ(13)+Символ(10)+FiscalPrinter.GetOperatorName(1));
  321. FiscalPrinter.Close();
  322. КонецПункта;
  323.  
  324. КонецВыбора;
  325. КонецПроцедуры;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement