Процедура ПечататьЧек() Док = Расшифровка.Получить("Документ"); Предоплата = Расшифровка.Получить("Предоплата"); Если Предоплата = 1 Тогда ПечататьЧекНаПредоплату(); Возврат; КонецЕсли; Если ПустоеЗначение(Док) = 1 Тогда Возврат; КонецЕсли; ОбрДок = Расшифровка.Получить("ОбрДок"); Если ПустоеЗначение(ОбрДок) = 1 Тогда ОбрДок = Док; КонецЕсли; Если ФискальныйРегистратор = 0 Тогда Подключить(1); КонецЕсли; ФискальныйРегистратор.Password = глПользователь.ПарольККТ; Рез = ФискальныйРегистратор.GetECRStatus(); Если ФискальныйРегистратор.ECRMode = 8 Тогда Подрежим = ФискальныйРегистратор.ECRAdvancedMode; ФискальныйРегистратор.CancelCheck(); // Х.З. 19.06.2022 - ???????????? Сообщить("Аннулирован незакрытый чек"); ИначеЕсли ФискальныйРегистратор.ECRMode = 3 Тогда Если Вопрос("Смена превысила 24 часа!" + РазделительСтрок + "Снять Z-отчет?", "Да+Нет") = "Нет" Тогда Предупреждение("Дальнейшая работа с ККМ невозможна!"); Возврат; Иначе ЗакрытиеСмены(); КонецЕсли; КонецЕсли; Если ФискальныйРегистратор.ECRMode = 4 Тогда ФискальныйРегистратор.FNBeginOpenSession(); Если СокрЛП(глПользователь.Сотрудник.ИНН) <> "" Тогда ФискальныйРегистратор.TagNumber = 1203; ФискальныйРегистратор.TagType = 7; ФискальныйРегистратор.TagValueStr = СокрЛП(глПользователь.Сотрудник.ИНН); ФискальныйРегистратор.FNSendTag(); КонецЕсли; Рез = ФискальныйРегистратор.FNOpenSession(); // Открываю смену, если закрыта КонецЕсли; ФискальныйРегистратор.StringForPrinting = "№ документа :" + ОбрДок.НомерДок; ФискальныйРегистратор.PrintString(); ФискальныйРегистратор.Department = Мин(15,Число(ОбрДок.Подразделение.Код)); ОбрДок.ВыбратьСтроки(); СуммаДокумента = 0; Если ОбрДок.Вид() <> "ЗаказНаряд" Тогда Если ОбрДок.ЧекНаВозврат = 0 Тогда ФискальныйРегистратор.CheckType = 0; Иначе ФискальныйРегистратор.CheckType = 2; КонецЕсли; Иначе ФискальныйРегистратор.CheckType = 0; КонецЕсли; Рез = ФискальныйРегистратор.OpenCheck(); Если СокрЛП(глПользователь.Сотрудник.ИНН) <> "" Тогда ФискальныйРегистратор.TagNumber = 1203; ФискальныйРегистратор.TagType = 7; ФискальныйРегистратор.TagValueStr = СокрЛП(глПользователь.Сотрудник.ИНН); ФискальныйРегистратор.FNSendTag(); КонецЕсли; Пока ОбрДок.ПолучитьСтроку() > 0 Цикл Если ОбрДок.Вид() = "ЗаказНаряд" Тогда Если ОбрДок.Наличие = 4 Тогда Продолжить; КонецЕсли; КонецЕсли; ПредстЦена = Окр((ОбрДок.Сумма + ОбрДок.НП) / ОбрДок.Количество, 2, 1); СуммаДокумента = СуммаДокумента + ОбрДок.Количество * ПредстЦена; Наим = Лев(СтрокуНоменклатурыЧек(ОбрДок.Номенклатура.Наименование, ОбрДок.Номенклатура), 40); Если ОбрДок.Вид() <> "ЗаказНаряд" Тогда КТН = СокрЛП(ОбрДок.КТН); Если ОбрДок.Касса.ФФД_ККТ = Перечисление.ФФД_ККТ.ФФД1_05 Тогда Если (ПустоеЗначение(КТН) = 0) И (ОбрДок.Касса.ПечПризнМарк = 1) Тогда ФискальныйРегистратор.StringForPrinting = "[M] " + Наим; Иначе ФискальныйРегистратор.StringForPrinting = Наим; КонецЕсли; Иначе ФискальныйРегистратор.StringForPrinting = Наим; КонецЕсли; Иначе ФискальныйРегистратор.StringForPrinting = Наим; КонецЕсли; // ФискальныйРегистратор.CheckType = 1; ФискальныйРегистратор.Price = ПредстЦена; ФискальныйРегистратор.Quantity = ОбрДок.Количество; ФискальныйРегистратор.Summ1Enabled = 1; ФискальныйРегистратор.Summ1 = ПредстЦена * ОбрДок.Количество; ФискальныйРегистратор.PaymentTypeSign = 4; // Подакцизы Если ОбрДок.Вид() <> "ЗаказНаряд" Тогда Если ОбрДок.Номенклатура.Подакциз = 0 Тогда ФискальныйРегистратор.PaymentItemSign = 1; Иначе ФискальныйРегистратор.PaymentItemSign = 2; КонецЕсли; Иначе ФискальныйРегистратор.PaymentItemSign = 1; КонецЕсли; // ********* ФискальныйРегистратор.MeasureUnit = 0; // мера количества ФискальныйРегистратор.DivisionalQuantity = 0; // без дробного количества Рез = ФискальныйРегистратор.FNOperation(); Если ПустоеЗначение(ОбрДок.КТН) = 0 Тогда КТН = СтрЗаменить(СокрЛП(ОбрДок.КТН), "(GS1)", Симв(29)); Если ОбрДок.Касса.ФФД_ККТ = Перечисление.ФФД_ККТ.ФФД1_2 Тогда // ФискальныйРегистратор.BarCode = СокрЛП(ОбрДок.КТН); ФискальныйРегистратор.BarCode = КТН; Рез = ФискальныйРегистратор.FNSendItemBarcode(); // РазрРежим Если ПустоеЗначение(СокрЛП(ОбрДок.УидЗапрРР)) = 0 Тогда // ФООИВ - федеральный орган исполнительной власти 1262 ФискальныйРегистратор.TagNumber = 1262; ФискальныйРегистратор.TagType = 7; ФискальныйРегистратор.TagValueStr = "030"; ФискальныйРегистратор.FNSendTagOperation(); // дата документа 1263 ФискальныйРегистратор.TagNumber = 1263; ФискальныйРегистратор.TagType = 7; ФискальныйРегистратор.TagValueStr = "21.11.2023"; ФискальныйРегистратор.FNSendTagOperation(); //номер этого документа 1264 ФискальныйРегистратор.TagNumber = 1264; ФискальныйРегистратор.TagType = 7; ФискальныйРегистратор.TagValueStr = "1944"; ФискальныйРегистратор.FNSendTagOperation(); //ИД + "&" + время из запроса 1265 ФискальныйРегистратор.TagNumber =1265; ФискальныйРегистратор.TagType = 7; ФискальныйРегистратор.TagValueStr = "UUID=" + СокрЛП(ОбрДок.УидЗапрРР) + "&Time=" + СокрЛП(ОбрДок.ВремяЗапрРР); ФискальныйРегистратор.FNSendTagOperation(); КонецЕсли; Иначе GTIN = Сред(КТН, 3, 14); SerialNumber = Сред(КТН, 19, 13); ФискальныйРегистратор.MarkingType = 17485; // Это "444D" ФискальныйРегистратор.GTIN = GTIN; ФискальныйРегистратор.SerialNumber = SerialNumber; Рез = ФискальныйРегистратор.FNSendItemCodeData(); // отправка тега маркировки КонецЕсли; КонецЕсли; Если ОбработкаОшибок() <> 0 Тогда Возврат; КонецЕсли; КонецЦикла; Получено = Число(Расшифровка.Получить("Получено")); Если Получено <= 0 Тогда Получено = СуммаДокумента; КонецЕсли; Если (Получено > 0) И (Получено > СуммаДокумента) Тогда ФискальныйРегистратор.Summ1 = Окр(Получено,2,1); ФискальныйРегистратор.Summ2 = 0; ФискальныйРегистратор.Summ3 = 0; ФискальныйРегистратор.Summ4 = 0; ИначеЕсли Док.ВидОпл = Перечисление.ВидОплаты.Мир Тогда ФискальныйРегистратор.Summ2 = Окр(СуммаДокумента,2,1); ФискальныйРегистратор.Summ1 = 0; ФискальныйРегистратор.Summ3 = 0; ФискальныйРегистратор.Summ4 = 0; ИначеЕсли Док.ВидОпл = Перечисление.ВидОплаты.Visa Тогда ФискальныйРегистратор.Summ3 = Окр(СуммаДокумента,2,1); ФискальныйРегистратор.Summ1 = 0; ФискальныйРегистратор.Summ2 = 0; ФискальныйРегистратор.Summ4 = 0; ИначеЕсли Док.ВидОпл = Перечисление.ВидОплаты.Master Тогда ФискальныйРегистратор.Summ4 = Окр(СуммаДокумента,2,1); ФискальныйРегистратор.Summ1 = 0; ФискальныйРегистратор.Summ3 = 0; ФискальныйРегистратор.Summ2 = 0; Иначе ФискальныйРегистратор.Summ1 = Окр(СуммаДокумента,2,1); ФискальныйРегистратор.Summ2 = 0; ФискальныйРегистратор.Summ3 = 0; ФискальныйРегистратор.Summ4 = 0; КонецЕсли; ФискальныйРегистратор.Summ5 = 0; ФискальныйРегистратор.Summ6 = 0; ФискальныйРегистратор.Summ7 = 0; ФискальныйРегистратор.Summ8 = 0; ФискальныйРегистратор.Summ9 = 0; ФискальныйРегистратор.Summ10 = 0; ФискальныйРегистратор.Summ11 = 0; ФискальныйРегистратор.Summ12 = 0; ФискальныйРегистратор.Summ13 = 0; ФискальныйРегистратор.Summ14 = 0; ФискальныйРегистратор.Summ15 = 0; ФискальныйРегистратор.Summ16 = 0; ФискальныйРегистратор.RoundingSumm = 0; // Сумма округления Если ОбрДок.Вид() = "ТоварныйЧек" Тогда ФискальныйРегистратор.TaxType = ОбрДок.Касса.СНО; // Основная система налогообложения Иначе ФискальныйРегистратор.TaxType = ОбрДок.Подразделение.ОсновнаяКасса.СНО; КонецЕсли; ФискальныйРегистратор.StringForPrinting = " "; // Без этого, печатает повтором последнюю строку наименования товара Рез = ФискальныйРегистратор.FNCloseCheckEx(); ВыданаСдача = ФискальныйРегистратор.Change; Ошибка=ФискальныйРегистратор.ResultCode; Если ОбработкаОшибок() = 0 Тогда Если Метаданные.Документ(Док.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран() = 1 Тогда Док.ЧекПробитККМ = 1; КонецЕсли; Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран() = 1 Тогда ОбрДок.ЧекПробитККМ = 1; КонецЕсли; Иначе Если Метаданные.Документ(Док.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран() = 1 Тогда Док.ЧекПробитККМ = 0; КонецЕсли; Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("ЧекПробитККМ").Выбран() = 1 Тогда ОбрДок.ЧекПробитККМ = 0; КонецЕсли; КонецЕсли; Если Метаданные.Документ(Док.Вид()).РеквизитШапки("НомерЧекаККМ").Выбран() = 1 Тогда Док.НомерЧекаККМ = ФискальныйРегистратор.DocumentNumber; КонецЕсли; Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("НомерЧекаККМ").Выбран() = 1 Тогда ОбрДок.НомерЧекаККМ = ФискальныйРегистратор.DocumentNumber; КонецЕсли; Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("Касса").Выбран() = 1 Тогда ОбрДок.Касса = ККМ; КонецЕсли; Если Метаданные.Документ(Док.Вид()).РеквизитШапки("Касса").Выбран() = 1 Тогда Док.Касса = ККМ; КонецЕсли; Если Метаданные.Документ(ОбрДок.Вид()).РеквизитШапки("ВыданаСдача").Выбран() = 1 Тогда ОбрДок.ВыданаСдача = Получено - СуммаДокумента; КонецЕсли; Если Метаданные.Документ(Док.Вид()).РеквизитШапки("ВыданаСдача").Выбран() = 1 Тогда Док.ВыданаСдача = Получено - СуммаДокумента; КонецЕсли; // ФискальныйРегистратор.OpenDrawer(); Если ОбработкаОшибок() <> 0 Тогда Возврат; КонецЕсли; КонецПроцедуры