С Меркурием не упражнялись, на Феликсе делали. Вот код, по которому чек не печатает построчно перечень товаров, но для секций 1 и 3 выделяет НДС 18% в чеке. Творчески его используйте и надеюсь, всё получится
Function Main()
local hkkm ,sum, dat, dept, doc, nds, NCheck, aMenu, aQues, p, f, s
p := LoadPath() + '!kkm.log'
if File(p) = .T.
f := FOpen(p, 1)
else
f := FCreate(p)
endif
aQues := {"ЏҐз в вм 祪?"}
aMenu := {" „ "," ЌҐв "}
nds := 0
if select('mdoc') > 0
if (empty(mdoc->DATE0) .and. upper(alltrim(mdoc->USER_CODE)) = "KASSA" .and. NoOrYes (aQues,2,aMenu) = 1)
sum := mdoc->SUMMA
dept := 2 // ‡¤Ґбм ¤® ¤®Ў ўЁвм ўў®¤ ᥪ樨, «ЁЎ® Ї® Є Є®¬г-ЁЎг¤м
// ЇаЁ§ Єг ¤®Єг¬Ґв ў Ѓќ‘’Ґ ( Їа. Є®¤ ®ЇҐа жЁЁ), «ЁЎ® Їа®бв® ¤Ё «®Ј®¬
// …б«Ё ᥪжЁп 1 Ё«Ё 3, ў 祪Ґ ўл¤Ґ«пҐвбп Ќ„‘
if dept = 1 .or. dept = 3
nds := sum*18/118
sum := sum-nds
endif
// ЁЁжЁ «Ё§ жЁп ®ЎкҐЄв
hkkm := CreateObject('AddIn.FprnM45')
try
hkkm:DeviceEnabled := .t.
hkkm:GetStatus()
if hkkm:CheckState() <> 0
hkkm:CancelCheck()
endif
NCheck := hkkm:CheckNumber()
hkkm:Password := "30"
hkkm:Mode := 1
hkkm:SetMode()
hkkm:Price := Round(sum, 2)
hkkm:Quantity := 1
hkkm:Department := dept
hkkm:Registration()
if dept = 1 .or. dept = 3
hkkm:Name := OemToAnsi("Ќ„‘ 18%")
hkkm:Price := Round(nds, 2)
hkkm:Quantity := 1
hkkm:Department := dept
hkkm:Registration()
endif
hkkm:TypeClose := 0
hkkm:CloseCheck()
catch
hkkm:CancelCheck()
hkkm := nil
alert('ЋиЁЎЄ ЇаЁ ЇҐз ⨠祪 !')
FClose(f)
return -1
end
hkkm:GetStatus()
if NCheck+1 == hkkm:CheckNumber()
mdoc->(dbrlock())
mdoc->DATE0 := Date()
mdoc->(dbcommit())
mdoc->(dbunlock())
else
hkkm:CancelCheck()
alert('ЋиЁЎЄ ЇаЁ ЇҐз ⨠祪 !!!')
endif
hkkm := nil
FSeek(f, 0, 2)
s := 'Џа®¤ ¦ ! „ в : '+dtos(date())+', —ҐЄ: '+str(NCheck)+', ‘ҐЄжЁп: '+str(dept)+', ‘㬬 : '+str(Round(sum, 2)+Round(nds, 2))+CHR(13)+CHR(10)
FWrite(f, s, len(s))
FClose(f)
endif
endif
return 0