Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 13.04.2018
Сообщений: 6
1
1C 8.x

Некорректное значение параметров команды ФН (Атол 30ф)

15.05.2018, 12:42. Показов 5919. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Требуется помощь.
Бухгалтерия 3
Атол 30ф, драйвер 8.16
касса ооо на Осно(только услуги)
Всё подключено, все тесты связи всё проходит.
Сначала создаётся реализация(там указываеи что это услуга) , после этого выбираем создать на основании и выбираем поступление наличных .
Далее нажмаем провести и закрыть, переходим в Кассовые документы , заходим в этот документ, нажимаем печать чека.
Если Выбрана система налогообложения Общая, то выдаёт ошибку "Некорректное значение параметров команды ФН"
Если выбрана ЕНВД, то чек печатается - но это не правильно.
В драйвере ККТ выбрана СНО Общая, в Организации Бухгалтерии выбрана тоже Общая.
В чём может быть причина? может кто-то сталкивался?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2018, 12:42
Ответы с готовыми решениями:

Фискальный регистратор Атол 30Ф и собственная программа
Привет всем! Скоро придется устанавливать онлайн-кассы, выбор пал на фискальный регистратор Атол...

Атол 30Ф печатает чек минуту и дольше
Добрый день. Платформа 8.3.12.1616 Конфигурация 1С Управление торговлей 10.3.13.2 Windows 7 sp1...

Фискальный регистратор Атол 30Ф и собственная программа
Привет всем! Скоро придется устанавливать онлайн-кассы, выбор пал на фискальный регистратор Атол...

Фискальный регистратор Атол 30Ф (он же онлайн касса) и программа на VB.NET
Привет всем! Скоро придется устанавливать онлайн-кассы, выбор пал на фискальный регистратор Атол...

13
1 / 1 / 0
Регистрация: 13.04.2018
Сообщений: 6
22.05.2018, 14:39  [ТС] 2
Не знаю, понадобится кому-то данная информация или нет.
Помогло обновление драйвера с оф.сайта на 9 версию.
Тему можно закрыть.
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
13.07.2018, 17:52 3
а где качали 9 драйвер? Какой подошел?
0
79 / 57 / 14
Регистрация: 28.03.2016
Сообщений: 421
17.07.2018, 21:24 4
ФН на 36 месяцев или на 15? Если на 36, при фискализации было указано применении в сфере услуг? В данном случае это важно, так как использовать ФН на 36 месяцев на ОСН запрещено, исключение - применение ККТ только для услуг
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
17.07.2018, 21:29 5
Цитата Сообщение от Alex Sprinter Посмотреть сообщение
ФН на 36 месяцев или на 15?
если вопрос мне, то я за этим слежу.

фн 15 месяцев

кстати, нынешние ФНки можно перерегистировать хоть 30 раз... это бесплатно
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
18.07.2018, 22:43 6
Кто-нибудь может помочь в этом вопросе?
Управление печатью на онлайн кассу через php
0
1261 / 787 / 224
Регистрация: 22.04.2013
Сообщений: 5,770
Записей в блоге: 1
19.07.2018, 06:38 7
IRIP,
а зачем все вот эти танцы с бубнами
PHP
1
2
3
4
$args = sprintf("%04d", '00');
       $args .= sprintf("%02d", [B]$type[/B]);
       $args .= sprintf("%10d", '00');
       return $this->executeCommand('B8', '0000030000000000');
если ВСЕГО ДВЕ КАССЫ ?
ну ладно бы было 10
а так = разве нельзя написать
если касса_1, то '00030000' elseif kassa_2 then '00019fda-00-15'
?
1
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.07.2018, 08:20 8
Yulunga, проблема в том, что управление печатью (отправкой на печать)
в этой программе, написанной на php

происходит из файла fiscal.php

две кассы онлайн одновременно подключены к компьютеру

в fiscal.php прописаны fiscal_food & fiscal_alco
0
1261 / 787 / 224
Регистрация: 22.04.2013
Сообщений: 5,770
Записей в блоге: 1
19.07.2018, 09:10 9
наверно я чего-то не понимаю всё-таки.
пока не вижу расхождений с моей логикой.
фискал.пхп можно менять ?
что мешает посылать строку целиком, не создавая её из трёх составляющих ?
1
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.07.2018, 19:56 10
Цитата Сообщение от Yulunga Посмотреть сообщение
что мешает посылать строку целиком, не создавая её из трёх составляющих

я вот и пытаюсь понять, что нужно подправить, чтобы получилось =)

Добавлено через 7 часов 25 минут
Цитата Сообщение от Yulunga Посмотреть сообщение
00019fda-00-15
откуда вот это взялось?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public function registration($title, $price, $qty, $discount = 0) {
        $args = $this->prepareText($title);
        $args .= sprintf("%02d", '00');
        $args .= sprintf("%010d", $price * 100);
        $args .= sprintf("%010d", $qty * 1000); # кол-во в граммах
        $args .= sprintf("%02d", '00');
        $args .= sprintf("%02d", '00');
        if ($discount < 0) {
            $args .= sprintf("%02d", '00');
            $discount = -$discount;
        } else {
            $args .= sprintf("%02d", '00');
        }
        $args .= sprintf("%010d", $discount * 100);
        $args .= sprintf("%02d", "01");
        $args .= sprintf("%02d", "01");
        $args .= sprintf("%034d", "00");
        return $this->executeCommand('e600', $args);
    }
Добавлено через 1 минуту
в 15 строчке выставляется налог
если меняю на 06 - то на фуд.принтере печатает "без НДС"
но при этом на алко принтере печатает "ндс 18%"

на печать отправляет вот этот кусочек кода


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    function print_check($id, $fiscal, $fiscal_alco) {
        $user = $this->auth->getActiveUser()->iduser;
 
        $sql = 'SELECT `check`.*,ohs.*,c.*,t.tables_name,o.order_date,o.order_return,o.storage_idstorage FROM `check`
            LEFT JOIN (SELECT * FROM order_has_check) AS cho
            ON `check`.idcheck = cho.check_idcheck
            LEFT JOIN (SELECT order_has_goods.*,g.goods_name,g.brands_idbrands FROM order_has_goods
            LEFT JOIN goods AS g ON order_has_goods.goods_idgoods = g.idgoods) AS ohs
            ON ohs.order_idorder = cho.order_idorder
            LEFT JOIN `order` AS o ON o.idorder = cho.order_idorder
            LEFT JOIN `cash` AS ca ON ca.idcash = `check`.cash_idcash
            LEFT JOIN contragent AS c ON o.contragent_idcontragent = c.idcontragent
            LEFT JOIN tables AS t ON o.tables_idtables = t.idtables
            WHERE `check`.idcheck =' . $id;
        $sum = 0;
        $object = $this->_db->select_sql($sql);
        $sql = 'SELECT iduser,user_name, user_printer FROM user WHERE iduser = ' . $user;
        $query = $this->_db->select_sql($sql)[0];
        $printer = $query->user_printer;
        $name = $object[0]->contragent_name;
        $content = array();
        $content[] = " Чек №$id                       ";
        $content[] = "--------------------------------";
        $content[] = " Дата:" . $object[0]->order_date;
        $content[] = "--------------------------------";
        $content[] = "Наименование     Кол-во    Цена";
        $content[] = "--------------------------------";
        foreach ($object as $item) {
            if (!$item->order_return) {
                $this->addInvoice($item);
            } else {
                $item->order_has_goods_qty = -$item->order_has_goods_qty;
                $this->addInvoice($item);
            }
        }
        foreach ($this->check as $key => $value) {
            if (!$value->order_return && ($value->order_has_goods_qty > 0)) {
                while (mb_strlen($value->goods_name, 'UTF-8') > 15) {
                    $content[] = mb_substr($value->goods_name, 0, 15, 'UTF-8');
                    $value->goods_name = mb_substr($value->goods_name, 15, NULL, 'UTF-8');
                }
                $price = number_format($value->order_has_goods_qty * floatval($value->order_has_goods_cost_p), 2, '.', '');
                $sum += $price;
                $value->goods_name = $this->mb_str_pad($value->goods_name, 17);
                $content[] = $value->goods_name . $this->mb_str_pad($value->order_has_goods_qty, 7) . $this->mb_str_pad($price, 8, " ", STR_PAD_LEFT);
            }
        }
//        $content[] = "      ";
        $content[] = "--------------------------------";
        $content[] = "Сумма: " . number_format($sum, 2, '.', '') . ' руб.';
        if ($object[0]->check_discount !== 0) {
            $content[] = "--------------------------------";
            $content[] = "Скидка:" . $this->mb_str_pad($object[0]->check_discount . "%", 21, " ", STR_PAD_LEFT);
            $content[] = "--------------------------------";
            $all_sum = $sum - ($sum / 100 * $object[0]->check_discount);
            $content[] = "Общая сумма: " . number_format($all_sum, 2, '.', '') . ' руб.';
        }
        $content[] = "--------------------------------";
        $content[] = "Официант: " . $name;
        $content[] = "--------------------------------";
        $content[] = "Касса: " . $object[0]->cash_name;
        $content[] = "--------------------------------";
        $content[] = "ИП Вангер Ю.В. ИНН 911002350518";
        $content[] = "297400, РФ, Р Крым г. Евпатория";
        $content[] = "ул. Фрунзе, 13/35";
        $content[] = "--------------------------------";
        $content[] = "             СПАСИБО!          ";
        $content[] = "       ПРИХОДИТЕ К НАМ ЕЩЕ!    ";
        $content[] = "--БУДЕМ РАДЫ ВИДЕТЬ ВАС СНОВА!--";        
        $content[] = "--------------------------------";
        $discount = $object[0]->check_discount;
        $this->print_tablet($printer, $content);
        // var_dump($object);
        // var_dump($discount);
        // var_dump($this->check);
        if ($fiscal == '1') {
            if (count($this->check) > 0) {
                $this->fiscal->printCheck_fiscal($this->check, $discount);
            }
        }
        if ($fiscal_alco == '1') {
            if (count($this->check_alco) > 0) {
                $this->fiscal->printCheck_alco_fiscal($this->check_alco, $discount);
            }
        }
    }
Добавлено через 50 секунд
Цитата Сообщение от Yulunga Посмотреть сообщение
фискал.пхп можно менять ?
что мешает посылать строку целиком, не создавая её из трёх составляющих ?

менять можно.

Добавлено через 1 минуту
Вот этот кусочек отвечает за отправку на алко и фуд

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
    public function printCheck_fiscal($object, $discount) {
        $dataarray = $object;
        var_dump($dataarray);
//        $header = $dataarray->header;
//        $discount = $header->r_invoice_discount * 1;
//        $inputsum = $header->inputsum;
//        unset($dataarray->header);
        $inputsum = 0;
        $sum = 0;
        $nalog = 0;
        try {
            $this->kkm->openConnection();
            var_dump($dataarray);
            try {
                $this->kkm->enterRegistrationMode();
////                if (!$this->kkm->isMoneyBoxClosed()) {
////                    $this->kkm->raiseCustomError('Спрячьте деньги! :-)');
//                }
            } catch (Exception $e) {
                throw $e;
            }
            try {
                $this->kkm->openNewCheck(1);
                foreach ($dataarray as $datarow) {
                    $sum += $datarow->order_has_goods_cost_p * $datarow->order_has_goods_qty;
                    $section = "12";
                    $qty = $datarow->order_has_goods_qty;
                    $price = $datarow->order_has_goods_cost_p;
                    $title = $datarow->goods_name;
                    $nalog = 1;
                    var_dump($nalog);
                    if (($qty > 0)) {
                        if (!$title or ! $price or ! $qty or ! $section) {
                            $this->kkm->raiseCustomError('Неверные параметры в чеке. Need: section, qty, price, title. Got: ' . serialize($datarow));
                        }
                        if ($qty > 0) {
                            $this->kkm->sell($title, $price, $qty, $discount, $nalog);
                        }
                    }
                }
 
                if ($sum > $inputsum) {
                    $inputsum = $sum;
                }
                if ($datarow->cash_idcash == 1) {
                    $c = '02';
                } else {
                    $c = '01';
                }
                if ($datarow->cash_idcash == 3) {
                    $c = '02';
                } else {
                    $c = '01';
                }
                $this->kkm->closeCheck($inputsum, 0, $c);
            } catch (Exception $e) {
                $this->kkm->cancelCheck();
                throw $e;
            }
            $this->kkm->closeConnection();
        } catch (Exception $e) {
            echo 'E: ' . $e->getMessage() . ' [' . $e->getCode() . ']' . PHP_EOL;
        }
    }
 
    public function printCheck_alco_fiscal($object, $discount) {
        $dataarray = $object;
        var_dump($dataarray);
//        $header = $dataarray->header;
//        $discount = $header->r_invoice_discount * 1;
//        $inputsum = $header->inputsum;
//        unset($dataarray->header);
        $inputsum = 0;
        $sum = 0;
        try {
            $this->kkm_alco->openConnection();
            var_dump($dataarray);
            try {
                $this->kkm_alco->enterRegistrationMode();
////                if (!$this->kkm->isMoneyBoxClosed()) {
////                    $this->kkm->raiseCustomError('Спрячьте деньги! :-)');
//                }
            } catch (Exception $e) {
                throw $e;
            }
            try {
                $this->kkm_alco->openNewCheck(1);
                foreach ($dataarray as $datarow) {
                    $sum += $datarow->order_has_goods_cost_p * $datarow->order_has_goods_qty;
                    $section = "12";
                    $qty = $datarow->order_has_goods_qty;
                    $price = $datarow->order_has_goods_cost_p;
                    $title = $datarow->goods_name;
                    var_dump($title);
                    if (($qty > 0)) {
                        if (!$title or ! $price or ! $qty or ! $section) {
                            $this->kkm_alco->raiseCustomError('Неверные параметры в чеке. Need: section, qty, price, title. Got: ' . serialize($datarow));
                        }
                        if ($qty > 0) {
                            $this->kkm_alco->sell($title, $price, $qty, $discount);
                        }
                    }
                }
 
                if ($sum > $inputsum) {
                    $inputsum = $sum;
                }
                if ($datarow->cash_idcash == 1) {
                    $c = '02';
                } else {
                    $c = '01';
                }
 
                $this->kkm_alco->closeCheck($inputsum, 0, $c);
            } catch (Exception $e) {
                $this->kkm_alco->cancelCheck();
                throw $e;
            }
            $this->kkm_alco->closeConnection();
        } catch (Exception $e) {
            echo 'E: ' . $e->getMessage() . ' [' . $e->getCode() . ']' . PHP_EOL;
        }
    }
0
1261 / 787 / 224
Регистрация: 22.04.2013
Сообщений: 5,770
Записей в блоге: 1
19.07.2018, 20:22 11
Цитата Сообщение от IRIP Посмотреть сообщение
в 15 строчке выставляется налог
я лично вижу, что
Цитата Сообщение от IRIP Посмотреть сообщение
$nalog = 1;
* * * * * * * * * * var_dump($nalog);
* * * * * * * * * * if (($qty > 0)) {
* * * * * * * * * * * * if (!$title or ! $price or ! $qty or ! $section) {
* * * * * * * * * * * * * * $this->kkm->raiseCustomError('Неверные параметры в чеке. Need: section, qty, price, title. Got: ' . serialize($datarow));
* * * * * * * * * * * * }
* * * * * * * * * * * * if ($qty > 0) {
* * * * * * * * * * * * * * $this->kkm->sell($title, $price, $qty, $discount, $nalog);
* * * * * * * * * * * * }
налог тождественно равен однёрке.
в функции алко налога нет никакого, наверно берёт по умолчани ю 18%, хз
1
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
19.07.2018, 20:37 12
Цитата Сообщение от Yulunga Посмотреть сообщение
я лично вижу, что

это я пытаюсь вставить его туда

Добавлено через 6 минут
получилось! Епрст!


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public function registration($title, $price, $qty, $discount = 0, $nalog) {
        $args = $this->prepareText($title);
        $args .= sprintf("%02d", '00');
        $args .= sprintf("%010d", $price * 100);
        $args .= sprintf("%010d", $qty * 1000); # кол-во в граммах
        $args .= sprintf("%02d", '00');
        $args .= sprintf("%02d", '00');
        if ($discount < 0) {
            $args .= sprintf("%02d", '00');
            $discount = -$discount;
        } else {
            $args .= sprintf("%02d", '00');
        }
        $args .= sprintf("%010d", $discount * 100);
        $args .= sprintf("%02d", $nalog);
        $args .= sprintf("%02d", "00");
        $args .= sprintf("%034d", "00");
        return $this->executeCommand('e600', $args);
    }
ну и далее в фуд и алко вставил $nalog = 01;
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 1
20.07.2018, 15:29 13
Обычно если такие проблемы надо просто скачать обновленный драйвер для устройства или обновить прошивку в крайнем случае









Аренда онлайн кассы для интернет магазина
0
513 / 145 / 28
Регистрация: 18.04.2015
Сообщений: 1,879
Записей в блоге: 15
20.07.2018, 17:56 14
Цитата Сообщение от kassa10 Посмотреть сообщение
Обычно если такие проблемы надо просто скачать обновленный драйвер для устройства
в том то и дело, что на одном аппарате старая прошивка и новая ФН
на втором аппарате новая прошивка и новая ФН
следовательно драйвер

для алко дает свою таблицу налогов, а для нового аппарата, новую таблицу налогов
0
20.07.2018, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.07.2018, 17:56
Помогаю со студенческими работами здесь

Остаток по Платежной карте (Электронными) за смену, Настроить драйвер ККМ Атол 30Ф чтобы был виден остаток по ПК
Добрый день уважаемые форумчане !!! Прошу помощи у гуру. Подскажите пожалуйста - есть ФР Атол...

Некорректное деление с использованием команды idiv
Добрый день. Столкнулся с проблемой: после выполнения команды idiv (код программы ниже) происходит...

Назначение команды Format и её параметров
Всем привет!!! Помогите ответить на вопрос. Обясните назначение команды и ее параметров Format...

Типизация параметров команды. SQLClient
Всем привет! Создаем команду для SQL Servera не могу понять как правильно устанавливать DbType...

Bash: Подстановка команды и параметров из переменной
Пытаюсь разобраться с подстановками. По отдельности, вроде бы, более менее понятно, но собрать всё...

Разработать процедуру или функцию, выполняющую заданную операцию над строками. Предусмотреть и описать реакцию на некорректное задание параметров.
Не использовать имеющиеся в языке средства обработки строк. Определить количество вхождений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru