У меня ода точка, торгующая разливным пивом, поэтому опыт не большой.
Но...
Я использую программк УКМWIN, в связке с SQL сервером только в части контроля продаж алкоголя.
Постановка на кран делается из бэка(моя самописная конфа на базе ТиС 1с77).
Ставится марка, с полным объемом кега.
Списывается продажами, с подбором марки по остаткам.
Вот тут подробно рассказывал, как и что:
https://olegon.ru/showthread.php?t=38994
В кратце - для разливного пива, на кассе ничего не сканируется.
Используются "Быстрые товары". Выбирается из списка нужное пиве, и появляется окошко со списком марок с остатком(естественно, только с не нулевыми) по каждой.
И, естественно, если кассиру нужно продать 1.5 литра, а высветится три строки:
1. Марка 1 1.5 литра
2. Марка 2 0.5 литроа
3. Марка 3 30 литров (целый кег)
то любой здравомыслящий кассир возьмет строку 1, после чего, эта марка выведется из оборота, и исчезнет из списа выбора программы.
Строку 2 программа не пропустит, так, как там остатка не хватит, строку 3 можно, но зачем?
А потом, рано или поздно кто-то захочет купить пол литра, и так-же уйдет строка 2.
Останется только целая кега(если конечно к этому времени в бэке не "поставят на кран" еще одну или несколько).
В этой схеме марка сканируется один раз - при оформлении документа "Постановка на кран", потом, для продажи, берется с сервера..
PS да, в этой схеме может быть нюанс, что "остатки сладки" доливают не из той кеги, которая реально подключена, и "переходящий остаток" может накапливаться....
Но, что делать...Инвентаризация и списание накопившегося остатка выравнивают ситуацию.