Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: АТОЛ30Ф - пересчитывает суммы ?

v7: АТОЛ30Ф - пересчитывает суммы ?
Я
   zenon46
 
04.07.18 - 14:58
Доброго дня! Столкнулся с такой ситуацией, в документе реализация делается процедура, "распределение суммы по суммам" - обычно это делает когда надо убрать копейки и выровнять до круглой суммы, далее делается ПКО, а вот уже из ККМ чек выходит не с теми суммами что в документе, ХОТЯ список формируется четко по документу и передается в ККМ, для примера, напишу на примере двух позиций. Можно это как то выключить ?
Документ:
Товар1 50*20.03=1001.64
Товар2 20*20.03=400.66
ККМ
Товар1 50*20.03=100.50
Товар2 20*20.03=400.60
 
 
   sanyaka
 
1 - 04.07.18 - 15:01
Видимо улетает цена и количество. А нужно отправлять сумму и цену вычислять как сумма делённая на количество и значение округлить.
   zenon46
 
2 - 04.07.18 - 15:07
(1) в ККМ уходит, Цена / Количество / Сумма
   spectre1978
 
3 - 04.07.18 - 15:15
расчеты где-то неправильные, проверяйте. "Гуляет" слишком много, 60 и 66 это дофига, обычным округлением не объяснить
   piter3
 
4 - 04.07.18 - 15:16
а уверен,что уходит два знака,а не больше?
   zenon46
 
5 - 04.07.18 - 15:19
(3) еще раз уточняю, делается "распределение суммы по суммам".
Если в документе 1001.64/50=20.0328
Если в ККМ 1001.50/50=20.03
В том и вопрос зачем ККМ там что-то считает и можно ли это выключить ?
   Масянька
 
6 - 04.07.18 - 15:19
(0) Если на калькуляторе (фигня такая) сделать: 20.03 умножить на 20, получится 400.6 (ровно, больше ничего).
Откуда такие цифры в эске?
   sanyaka
 
7 - 04.07.18 - 15:20
(2) если в первом случае сумму поделить на количество и округлить в большую сторону то цена будет 50.01 эта цена должна уходить на кассу.
   Масянька
 
8 - 04.07.18 - 15:20
(5) Во... Я понял...
Открой обработку и посмотри, где пересчитывает.
   zenon46
 
9 - 04.07.18 - 15:20
(4) уверен что два, в отладчике смотрел.
   zenon46
 
10 - 04.07.18 - 15:21
(7) 50 - количество, 20.3 - цена
 
 Рекламное место пустует
   Масянька
 
11 - 04.07.18 - 15:21
(7) А вот тут поддержу. Со скидками долбалась - цена должна быть уже со скидкой.
   piter3
 
12 - 04.07.18 - 15:21
(8) не в этом дело.лезть надо в настройки касс
   zenon46
 
13 - 04.07.18 - 15:23
(8) В обработке тоже ничего не пересчитывается.
        Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
            
            Объект.Name = СписокТоваров.ТовНаим;
            Объект.Price = СписокТоваров.Цена;
            Объект.Quantity = СписокТоваров.Количество;
        
            Если СписокТоваров.СтавкаНДС = "none" Тогда
                Объект.TaxTypeNumber = 4;
            ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда
                Объект.TaxTypeNumber = 3;
            ИначеЕсли СписокТоваров.СтавкаНДС = "10" Тогда
                Объект.TaxTypeNumber = 2;
            ИначеЕсли СписокТоваров.СтавкаНДС = "0" Тогда
                Объект.TaxTypeNumber = 1;        
            КонецЕсли;
            
            Если ПризнВозврата = 0 Тогда
                Если Объект.Registration() <> 0 тогда
                    ОписаниеРезультата = Объект.ResultDescription;
                    Возврат Рез;
                КонецЕсли;
            Иначе    
                Если Объект.Return() <> 0 тогда
                    ОписаниеРезультата = Объект.ResultDescription;
                     Возврат Рез;
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
   Масянька
 
14 - 04.07.18 - 15:24
(13) А Суммы где?
   zenon46
 
15 - 04.07.18 - 15:24
Хотя вот я заметил что суммы по строке там нет, только наименование / цена / количество - получается потому она сумму и сама считает ?
   piter3
 
16 - 04.07.18 - 15:24
(15)так передай
   Масянька
 
17 - 04.07.18 - 15:25
(15) Это точно всё?
   Масянька
 
18 - 04.07.18 - 15:25
У меня есть такое (штрих правда):
    Если (Получено > 0) И (Получено > СуммаЧека) Тогда
        Объект.Password = Пароль;
        Объект.Summ1 = Окр(Получено, 2, 1);
    иначе
        Объект.Password = Пароль;
        Объект.Summ1 = итогсумма;
    КонецЕсли;
   zenon46
 
19 - 04.07.18 - 15:26
(18) такого нет
   zenon46
 
20 - 04.07.18 - 15:28
(16) Как правильно нахывается реквизит суммы по строке ? Summ - ?
   Масянька
 
21 - 04.07.18 - 15:29
(19)     Если (Получено > 0) И (Получено > СуммаЧека) Тогда
        Объект.Summ = Окр(Получено, 2, 1);
        Объект.ОплатаСоСдачей();
    Иначе
        Объект.ЗакрытьЧек();
    КонецЕсли;
   piter3
 
22 - 04.07.18 - 15:30
(20) вроде он
   zenon46
 
23 - 04.07.18 - 15:32
(17) как у вас суммы по строке передаются ? А то мне кажется что Summ = СуммаЧека
   zenon46
 
24 - 04.07.18 - 15:33
Вот нашел вот так - Amount
   Kigo_Kigo
 
25 - 04.07.18 - 15:35
(18) Не путай человека, это сумма полученных денег
машинка сумму считает сама из цена*количество, суммы по строке у нее нет, так что цена = сумма/количество
   Kigo_Kigo
 
26 - 04.07.18 - 15:36
точнее так 
цена = суммаСУчетомвсехскидоНадбавок/количество, и передавайте без округления
   zenon46
 
27 - 04.07.18 - 15:37
(25) как это нет ?
FiscalString    Name    Да    string    Наименование товара    Регистрирует фискальную строку с переданными реквизитами.
При печати длинных фискальных строк необходимо делать перенос на следующую строку.
Quantity    Да    double    Количество товара
Price    Да    double    Цена единицы товара без учета скидок/наценок
Amount    Да    double    Конечная сумма по позиции чека (с учетом всех скидок/наценок)
Department    Нет    long    Отдел, по которому ведется продажа
Tax    Да    string    Ставка НДС. Список значений:
"18" - НДС 18
"10" - НДС 10
"0" - НДС 0
"none" - БЕЗ НДС
   Масянька
 
28 - 04.07.18 - 15:37
(24) У меня в руководстве написано:
Drv.Summ1Enabled := True// Указываем, что

// сами рассчитываем цену
   Масянька
 
29 - 04.07.18 - 15:39
(27) Не, не... Он прав - это сумма чека.
Чтобы работало, как сумма по позиции - нужно до StringForPrinting втыкать.
   zenon46
 
30 - 04.07.18 - 15:41
Вот что получилось. Может кто, поправит если не так :

        СписокТоваров.ВыбратьСтроки();
        
        Пока СписокТоваров.ПолучитьСтроку() = 1 Цикл
            
            Объект.Name     = СписокТоваров.ТовНаим;
            Объект.Price    = СписокТоваров.Цена;
            Объект.Quantity = СписокТоваров.Количество;
            Объект.Amount   = СписокТоваров.Сумма;
        
            Если СписокТоваров.СтавкаНДС = "none" Тогда
                Объект.TaxTypeNumber = 4;
            ИначеЕсли СписокТоваров.СтавкаНДС = "18" Тогда
                Объект.TaxTypeNumber = 3;
            ИначеЕсли СписокТоваров.СтавкаНДС = "10" Тогда
                Объект.TaxTypeNumber = 2;
            ИначеЕсли СписокТоваров.СтавкаНДС = "0" Тогда
                Объект.TaxTypeNumber = 1;        
            КонецЕсли;
            
            Если ПризнВозврата = 0 Тогда
                Если Объект.Registration() <> 0 тогда
                    ОписаниеРезультата = Объект.ResultDescription;
                    Возврат Рез;
                КонецЕсли;
            Иначе    
                Если Объект.Return() <> 0 тогда
                    ОписаниеРезультата = Объект.ResultDescription;
                     Возврат Рез;
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
        
        Объект.Summ = СуммаЧека;
   Kigo_Kigo
 
31 - 04.07.18 - 15:42
(27) Это работало до ФЗ-53, также как и скидка процентом, скидка суммой, сейчас это не работает, нате вам ссылочку на атол и примеры
http://partner.atol.ru/files/163/1039/h_cc8f768595f75e88985cba5882fa3e5f
   Kigo_Kigo
 
32 - 04.07.18 - 15:43
(30) это работать не будет
   zenon46
 
33 - 04.07.18 - 15:48
(31) не понял, получается касса все равно будет сама рассчитывать сумму по строке ?
 
 
   spectre1978
 
34 - 04.07.18 - 15:50
(33) да. Там сумму вообще можно не задавать, если работаешь методами драйвера. Цену, количество. Сумму оно считает. Я вообще делал так - перед выводом последней строки получал накопленную по чеку сумму и последней строкой чека корректировал ее чтобы она сошлась с документом.
   spectre1978
 
35 - 04.07.18 - 15:51
(31) скидка в отдельных случаях работает
   zenon46
 
36 - 04.07.18 - 15:52
(34) что-то жесть какая-то и что никак нельзя выключить расчет суммы по строке ?
   spectre1978
 
37 - 04.07.18 - 15:53
(36) я не нашел, каким образом.
   spectre1978
 
38 - 04.07.18 - 15:56
в ККМ есть регистр, где хранится уже накопленная по чеку сумма. Поэтому в принципе можно понимать, чего она там насчитала, и корректироваться. Если бы не это - тогда бы был пипец.
   Kigo_Kigo
 
39 - 04.07.18 - 15:58
(35) Вот именно, что в отдельных, а что бы не гадать, сработает или нет, ее надо игнорировать вообще, у меня именно на атоле 30ф магаз встал, там скидку применили, и машинка не выплелвывала чек, и другие чеки не выплевывала, потому как повисла на открытой продаже, короче нуегонафиг эти скидки
   zenon46
 
40 - 04.07.18 - 16:00
(39) скидки да, ими не занимаемся. А вот почему сумму по строке передать нельзя, непонятно. В любом случае подкину обработку сейчас в магаз посмотрим что будет.
   Kigo_Kigo
 
41 - 04.07.18 - 16:00
(38) Какая команда ее получить, эту сумму?
   spectre1978
 
42 - 04.07.18 - 16:01
(39) насколько я знаю, скидка на всю сумму отрабатывает в случае, если требуется отбросить копейки в пользу покупателя. В остальных не отрабатывает.
   Kigo_Kigo
 
43 - 04.07.18 - 16:05
И кстати ТС как это у тебя такие суммы то получаются?
Документ:
Товар1 50*20.03=1001.64 ?
Товар2 20*20.03=400.66 ?
ККМ
Товар1 50*20.03=100.50
Товар2 20*20.03=400.60

тогда цену передавай в формате 000.000, то есть до тысячной,тогда и аппарат будет бить как надо
   zenon46
 
44 - 04.07.18 - 16:06
Да хрен там, выдало 
"Поле агрегатного объекта не обнаружено (Amount)"
   spectre1978
 
45 - 04.07.18 - 16:09
(41) Для Атол 11Ф работает вот так
Функция ПолучитьТекущуюСуммуЧека (Объект)
    
    Объект.RegisterNumber = 20;
    Объект.GetRegister ();
    Возврат Объект.Summ;
    
КонецФункции
   Kigo_Kigo
 
46 - 04.07.18 - 16:10
(44) Да что же вы "Фома" не верующий какой то? я вам это уже в 32 сказал
   zenon46
 
47 - 04.07.18 - 16:13
(46) вот так болт, нахрена это было делать.
   Масянька
 
48 - 04.07.18 - 16:15
(47) Жираф большой! Ему видней! (С)
   spectre1978
 
49 - 04.07.18 - 16:16
(43) тогда цену передавай в формате 000.000, то есть до тысячной,тогда и аппарат будет бить как надо -- а вы пробовали? Может, конечно, от прошивки зависит, но у меня дробных копеек не понимало.
 
 Рекламное место пустует
   zenon46
 
50 - 04.07.18 - 16:19
а если цена 20.03 - что туда передавать ???
   zenon46
 
51 - 04.07.18 - 16:22
Если передать туда 20.032, как машинка посчитает тогда сумму по строке ?
   Kigo_Kigo
 
52 - 04.07.18 - 16:22
короче, надо сделать так 
расчитать суу с учетом всех скидок, бонусов, сертификатов
далее 
Если количество >  1  тогда
ЦенаОкругленная = Окр(цену/количество,2);
СуммаОкругленая = ЦенаОкругленная * количество;
Если Сумма = СуммаОкругленая тогда
СписокТоваров.Цена = ЦенаОкругленная;
Иначе
СписокТоваров.Цена  = Окр(СуммаОкругленая/количество);

Списоктоваров.НоваяСтрока()
СписокТоваров.ТовНаим = Номенклатура.Наименование;
ЦенаНовая = Окр(СуммаОкругленая/количество);
СписокТоваров.Цена = СуммаОкругленная - (ЦенаНовая*(Количество - 1))
   spectre1978
 
53 - 04.07.18 - 16:25
(51) в моем случае не фискализировало строку, выдавало ошибку. Какую уже не вспомню.
   Kigo_Kigo
 
54 - 04.07.18 - 16:25
то есть если не удается разделить сумму и количество так, чтобы обратно получилось тоже число, мы продаем товар количество - 1, и количество = 1 с ценой которая откорректирует копейки
   spectre1978
 
55 - 04.07.18 - 16:26
(54) да, так я тоже делал
   Kigo_Kigo
 
56 - 04.07.18 - 16:35
ЦенаОкругленная = Окр(цену/количество,2);
читать как
ЦенаОкругленная = Окр(Сумма/количество,2);
   zenon46
 
57 - 04.07.18 - 16:38
Ужас короче устроили, одно не понятно элементарные вещи зачем отобрали?
   spectre1978
 
58 - 04.07.18 - 16:39
вопрос не к нам, а к законодателям и разработчикам ККМ. Мы можем только придрочиться к тому, что дают...
   Масянька
 
59 - 04.07.18 - 16:42
(56) ИМХО, самое правильное решение. От суммы.
(57) См. (48).
   Kigo_Kigo
 
60 - 05.07.18 - 13:13
Пример кода
driver.Mode = 1;
driver.SetMode();
driver.NewDocument();
driver.AttrNumber = 1021;
driver.AttrValue = "Старший кассир Иванов И.И.";
driver.WriteAttribute();
driver.OpenSession();
   Kigo_Kigo
 
61 - 05.07.18 - 13:13
Тьфу, не сюда


Список тем форума
Рекламное место пустует  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует