Имя: Пароль:
1C
1С v8
АТОЛ: Округление копеек в команде XML
,
0 CaIIIka
 
10.02.20
14:20
Здравствуйте! Не первый, к моему сожалению, день борюсь с проблемой округления налички до рубля. Перерыл инет, видел много похожих тем здесь и на других ресурсах, но на свой вопрос ответа так и не нашел. Зашел в тупик.

База самописная. Общается с ККМ с помощью XML. Кто-то командует скриптами, кто-то методами типа SummDiscount(). Но методы, я так понимаю, в старых дровах были.

В общем задача, чтобы ККМ вместо "Итог: 15,57 руб." выдал "Итог: 15 руб". и "Скидка" или "Округление: 0,57 руб." При всех моих попытках заставить аппарат это сделать, он мне говорит "...... Чек оплачен не полностью". Потому что сумму по позициям он насчитал 15,57, а не 15.
Как в XML передать итог по документу, чтобы разницу до рубля ККМ отнес в скидку?
Мануалы говорят, что есть метод скрипта "receiptTotal()", который мне нужен. Прям то, что надо по описанию. Но я не знаю, как его использовать, работая через XML. Методы, описывающие ручную скидку, прилепить к процессу тоже хз как.

У меня же получается, что в описании элемента "CheckPackage" нет ни слова о сумме документа. Я вообще о сумме документа во всей инструкции по структуре XML ничего не нашел.
Также я пробовал добавлять атрибут <Total> в раздел <Parameters>. Подобную структуру нашел в описании загрузки чеков из XML.Там наравне с описанием параметров, таких как <cashier> и др. есть атрибут <total>10150.00</total>. Не помогло, да и что я только не добавлял...

Направьте, пожалуйста, на путь истинный.
1 Kigo_Kigo
 
10.02.20
14:25
Путь истинный
Сумма = Окр(Сумма,1,0)
Цена =  сумма/количество

но тут могут быть подводные с копейкой

в аппарате ККТ в настройках есть - округлять до рубля, где эта настройка я не помню
2 Garykom
 
гуру
10.02.20
14:26
(0) Истинный пусть самому округлять и пробивать "Итог: 15 руб" а вручную выводить строку "Скидка" или "Округление: 0,57 руб."
3 CaIIIka
 
10.02.20
14:31
(1)(2) А если цены прежними оставить, то никак?
4 CaIIIka
 
10.02.20
14:37
Если скидку еще и на все строки распределять, да в зависимости от типа оплаты нал/безнал применять/убирать округление, то это полная опа получается. И НДС везде пересчитывать тоже?
5 Kigo_Kigo
 
10.02.20
14:52
как гласят последние разъяснениепо ФЗ, что нам пофиг ваши скидки акции акации и все прочее, в ОФД вы должны преедать окончательнну цену и сумму, все остальное печатайте не фискальными строками
6 CaIIIka
 
10.02.20
14:59
(5) Надо же?? Можно, пожалуйста, ссылку на подобную рекомендацию. А то я уже устал писать механизмы, чтобы разносить постоплаты по каждому товару (когда клиент принес денег за последние три месяца покупок), и всякую сопутствующую хрень.... И это только 1.05.
7 Kigo_Kigo
 
10.02.20
15:00
(4) Вот по этому у меня по каждой строке есть расчитанная сумма с учетом скидок акций баллов и прочее а команда ккт идет цена = сумма/количество, там правдв еще проверка есть на копейку и разделение строк
если Окр(сумма/количество)*количество <> Сумма/Количество * количество тогда
СуммаПервых  = Окр(Сумма/количество)*(Количество-1)
ЦенаПоследнего = Сумма/Количество - СуммаПервых
8 Kigo_Kigo
 
10.02.20
15:02
9 Kigo_Kigo
 
10.02.20
15:03
Где то есть повесомее ссылки, где это все разжевано, лень искать, но весь смысл в (5)
10 CaIIIka
 
10.02.20
15:06
(9) Спасибо, как копейки поделить я видел статьи. Мне интересно стало увидеть инфу про "нам пофиг ваши скидки акции акации и все прочее, в ОФД вы должны преедать окончательнну цену и сумму, все остальное печатайте не фискальными строками" )))
Загорелся идеей :)
11 d4rkmesa
 
10.02.20
15:10
(0) Посмотрите в типовых УТ10/УПП как реализована коррекция строк при включении формато-логического контроля, может вам подойдет подобный алгоритм. У нас в УПП тоже подобные ошибки из-за скидок происходили время от времени, пытался как то переделать, но в конце-концов просто включил опцию и все.
12 d4rkmesa
 
10.02.20
15:10
(11) Единственно, у нас не розница, поэтому, что там в чеке - не так критично.
13 CaIIIka
 
10.02.20
15:16
(11) Как работает ФЛК и как скидку раскидать понимаю. Мне фискальнику нужно как-то объяснить, что итог по документу не 15,57, а 15. Это при том, что один товар стоит 7,23, а второй 8,34, например. Это есть в скриптах драйвера. Чтобы цены не менять, и скидка на копейки ко всему доку относилась.

А можно ли как-то скрипт прикрутить к процессу пробития чека из 1С, не переписывая весь механизм работы с ККМ (через XML)? Перепись всего я сейчас по времени не потяну. А то в документации АТОЛ замечательный метод есть:

Зарегистрировать итог

    Регистрация итога чека

libfptr_set_param_double(fptr, LIBFPTR_PARAM_SUM, 1000.00);
libfptr_receipt_total(fptr);

Для регистрации итога чека требуется вызвать метод receiptTotal(), передав сумму чека в параметре LIBFPTR_PARAM_SUM.

Допускается регистрация итога меньше суммы чека, но только в рамках копеек. Т.е., если общая сумма чека равна 1000.57, то можно зарегистрировать итог от 1000.00 до 1000.57.

Метод не является обязательным. Если его не использовать, сумма чека будет посчитана автоматически, без округлений копеек


Прям то, что нужно.
14 Kigo_Kigo
 
10.02.20
15:22
receiptTotal у меня на атоле не заработал, как я его не крутил, да и не штрихе тоже, это работало до ФФД и ФЗ, но я точно видел настройку отброса копеек в самой ккт, по моему в таблицах
15 CaIIIka
 
10.02.20
15:28
(14) Капец. Спасибо за информацию! В общем в этом направлении не копать?
В таблице менял настройку, мне не помогло. А может надо было в комплексе, и таблицу поменять и receiptTotal сделать, тогда заработает?

Менял по инструкции: https://softologic.ru/articles/144-rabota-s-onlajn-kassami-atol-prakticheskie-sovety.html
16 d4rkmesa
 
10.02.20
15:35
(13) Скорее всего, придется разносить вручную эти копейки в скидку. Т.к. переписать функционал с компоненты на работу через методы драйвера будет, видимо, еще сложнее.
17 CaIIIka
 
10.02.20
15:46
Спасибо! Буду дальше тему курить и конфу курочить)
18 Злопчинский
 
10.02.20
16:00
вроде как сейчас нет скидки на чек.
есть только построчные скидки.
19 Kigo_Kigo
 
10.02.20
16:03
(18) и построчных нет
20 CaIIIka
 
10.02.20
17:04
(18) Похоже (19) прав. Я в экспериментах выводил построчные скидки, превышающие сумму недоплаты (те 57 копеек из текущей задачи). Чек все равно не печатался, ругался на то, что оплачен не полностью. Надпись скидка в строке к расчетам никакого отношения не имеет. Цены и суммы уже посчитаны и включают все скидки. Я пробивал чек на 1 рубль и печатал скидку 40 рублей. Чек успешно пробивался.

Остается вопрос, как свести изменения в БД к минимуму? А именно пересчет цен и НДС в табличной части.
21 CaIIIka
 
11.02.20
08:57
В общем придется делать так, как говорил Игорь в (7). БД не трогать, в ККМ передавать ересь. Самый простой, быстрый и качественный вариант в наших темных реалиях.

Вчера специально зашел в "Магнит" и купил за наличку банку корнишонов под закуску для успокоения нервной системы.
Выдали чек: https://drive.google.com/file/d/1_X-qmQdhl7cxMoVZ9p0Vgy-KtvmC4nwu/view?usp=sharing
В чеке все прекрасно! Есть настоящая цена с копейками. Есть итог, уменьшенный до рубля, несмотря на нестыковку данных Цена*Колво и Итого (чего я хотел, но так и не смог добиться). Есть информация о скидке до целого рубля. Есть информация об округлении. Возможно, скидка и округление - нефискальные строки. Но цены и итог!... Там не 1С. Похоже, их ККМ на аппаратном уровне как-то все же позволяет это делать.

Получается те, кто работает с АТОЛ через 1С посредством addin.atol_kkt_1c83_v10 обязаны подчиниться идиотизму?

PS Да, еще заметил на чеке надпись "ОФД АО "Тандер"". Они сами себе ОФД? Может они вообще всегда нефискальные чеки выдают с красивыми надписями, а затем их собственный ОФД передает данные в налоговую общей массой электронно на основании какой-либо БД?
22 Сияющий в темноте
 
11.02.20
08:59
(20) построчные скидки есть
но,во-первых,таг для ее передачи считается устаревшим,хотя ОФД его понимает.
во-вторых,сумма скидки,согласно,ффд 105 и далее передается к сведению и из итога строки не вычитается,так как цена передается уже с учетом всех скидок.
округление чека до рублей осталось,для этого у Штрих-М,например,есть поле DiscountOnCheck,куда пишутся убираемые копейки.
23 Сияющий в темноте
 
11.02.20
09:00
(21) у Штриха или Атола можно установить флаг печатм чека в ноль,а потом напнчатать весь чек текстовыми строками.
24 Сияющий в темноте
 
11.02.20
09:01
посмотрите описание xml должна быть скидка на чек.
25 Сияющий в темноте
 
11.02.20
09:07
26 CaIIIka
 
11.02.20
09:09
Перечитывал не раз описание :)

В этом описании XML слово "скидк" есть в трех местах:
- раздел Positions поле DiscountAmount - Сумма скидок и наценок (если значение > 0 то в чеке выводиться скидка, если значение < 0 то наценка). Это там, где я товар по цене 1 руб. продал со скидкой 40 руб.
- секция товаров заказа (Goods) - там цена без скидки и сумма со скидкой
- секция списка товаров чека (Goods) - аналогично п.2

Что за секция Goods? Может в ней можно то, что мне нужно?
27 CaIIIka
 
11.02.20
09:14
(23) Расскажите, пожалуйста, поподробнее про печать чека в ноль. Передачу всех параметров, как в (7), а потом печать текстового чека? ККМ же захочет все это напечатать на ленте... Магнит выдает один правильный чек. Или первый чек надо только электронно, а второй текстом печатать любую ересь?
28 Garykom
 
гуру
11.02.20
09:24
(26) Тебе нужен нативный драйвер вместо урезанного по стандарту 1С
https://integration.atol.ru/api/
29 CaIIIka
 
11.02.20
09:24
(+26) В Вашей инструкции из (25) и вовсе только п.1.
Я свою инструкцию сегодня поисковиком по-быстрому нашел. https://its.1c.ru/db/metod8dev/content/4829/hdoc
Секия Goods - это из другой оперы. Поторопился с выводами.

В общем нельзя из 1С через XML скидку на документ передать.

(27) Актуально.
30 Garykom
 
гуру
11.02.20
09:26
(29) И не надо в ККТ скидку передавать, о чем неоднократно уже написали.
См ее делай и выводи не фискальными строками
31 CaIIIka
 
11.02.20
09:29
(28) Дело хорошее, но в (14) говорят, что не работает receiptTotal - главная пожелайка, ради которой захочется перейти на нативный драйвер.
(29) Это давно понятно. Цену как настоящую передать, чтобы получить чек, как в "Магните"? Я и говорю, что получается те, кто работает с АТОЛ через 1С посредством addin.atol_kkt_1c83_v10 не смогут этого сделать?
32 CaIIIka
 
11.02.20
09:32
(29)->(30)
33 Garykom
 
гуру
11.02.20
09:35
Зарегистрировать итог
Регистрация итога чека

begin
    fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 1000.00);
    fptr.receiptTotal;
end;
Для регистрации итога чека требуется вызвать метод receiptTotal(), передав сумму чека в параметре LIBFPTR_PARAM_SUM.

Допускается регистрация итога меньше суммы чека, но только в рамках копеек. Т.е., если общая сумма чека равна 1000.57, то можно зарегистрировать итог от 1000.00 до 1000.57.

Метод не является обязательным. Если его не использовать, сумма чека будет посчитана автоматически, без округлений копеек.
34 CaIIIka
 
11.02.20
09:37
(33) Посмотрите в (13) и (14).
35 Garykom
 
гуру
11.02.20
09:38
(34) 312    Работа со скидками    число    0 - Запрещены
1 - Разрешены на весь чек
2 - Разрешены на позицию
3 - Разрешены все
313    Работа со надбавками    число    0 - Запрещены
1 - Разрешены на весь чек
2 - Разрешены на позицию
3 - Разрешены все
36 Kigo_Kigo
 
11.02.20
09:42
(35) Это уже не работает, это работало до ФН
37 CaIIIka
 
11.02.20
09:42
Из настроек ККТ (10.5.0.0 / Свойства - Параметры ККТ):

4 Скидки/надбавки
  Работа со скидками - Разрешены все
  Работа со надбавками - Разрешены все

"со надбавками" )))
38 Kigo_Kigo
 
11.02.20
09:43
И да, с ХМЛ поделкой от 1С это точно не прокатит, а переходить на нативный драйвер и работать с ним - то еще удовольствие
39 CaIIIka
 
11.02.20
09:50
(38) Спасибо за (7). Поясню все руководству (что не увидят они чек, как в Магните), и за работу.
Остались лишь сомнения по разнице цен в документе и в ККМ. Не вылезет ли это проблемой через время?
40 Garykom
 
гуру
11.02.20
10:04
(36) Эта хрень никак не мешает работе с ФН и зависит от реализации в прошивке.
Но так как место для прошивки ограничено а засунуть надо много разных то понятно дело жертвуют нафик не сильно важным и реализуемым другими способами функционалом