Версия для печати темы (https://pro1c.org.ua/index.php?s=19351831c94cf15e5ccd640ffa0343a5&showtopic=66767)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Работа с торговым оборудованием _ Обробка для МІНІ-ФП54.01 (Бухгалтерия для Украины 1.2.)

Автор: Cordelia 12.10.21, 9:07

Доброго дня!
Згідно документації та стандартної обробки для 1С вдалось реалізувати роботу КА МІНІ-ФП54.01 по стандартним командам. Але є задача виводити на форму обробки дані по руху грошових коштів.
В КА Мария є команда GetCashInfoXML(), за допомогою якої раніше виводили необхідні дані:

НачОстаток     = "rest";
СлужВнесение = "income";
СлужИзъятие   = "outcome";
Получено        = "sales";
Выдано           = "return";
КонОстаток     = "total";


В МІНІ-ФП подібної команди не знайшли. Можливо хтось зможе підказати як краще реалізувати даний функціонал?

Вичитали в документації про команду get_report, за допомогою якої можна зберегти в BIN-файл звіт. Викликаємо її ПриОткрытии() форми.

Приклад коду:
КассовыйАппаратОбъект.T400me("get_report;0;"); // має зберігати Х1 звіт.


Тут вилітає помилка (і не завжди її можна зловити):
"308,"Ошибки DLL-библиотеки №308 'касса не доступна '" і "Cash Register is busy and can not run a command".

Не розуміємо, чи це може бути проблеми з DLL-библиотекою чи ще з чим. Чи може хтось порадити/допомогти з цим питанням?

Автор: Gazulo 12.10.21, 13:41

Cordelia @ Сегодня, 10:07 * ,
Добрий день, спробуйте утилітою TstT400Server виконати команду...

Автор: volodya1122 12.10.21, 13:47

Cordelia @ Сегодня, 10:07 * ,

Я працюю з MINI-T400, але драйвер використовується той самий що і для фіскального реєстратора. Зараз якраз була Кампанія по перепрошивках Касових апаратів і реєстраторів під нові вимоги законодавства для друку штрихкодів акцизних марок.
Тому насамперед питаненя:
1. Ви перепрошивали свій реєстратор? і помилка виникла після перепрошивки?
2. Попередній драйвер видалили?
3. після цього новий драйвер зареєстрували (від імені адміністратора) (І згідно інструкціі повинен ще лежати в папці C:\olesrv)

Автор: Gazulo 12.10.21, 14:41

volodya1122 @ Сегодня, 14:47 * ,
Я так розумію, що все працює, відбувається друк і т.д., тобто всі вказані вами дії вже зроблені, проблема при виконанні конкретної команди.

Цитата(Cordelia @ 12.10.21, 10:07) *
Викликаємо її ПриОткрытии() форми

Може спочатку треба відкрити порт......

Автор: volodya1122 12.10.21, 14:42

Gazulo, Це не до мене.

Автор: Cordelia 12.10.21, 18:02

Все працює, друкує всі необхідні чеки і звіти, але саме ця команда не виконується.

Так, спочатку відкриваю порт:

Функция Инит() Экспорт
    
    НомерПорта = ПолучитьКомПортКА();
    
    КассовыйАппаратОбъект = Новый COMОбъект("ecrmini.t400");
    
    КассовыйАппаратОбъект.T400me("open_port;"+НомерПорта+";115200");
    КодОшибки=КассовыйАппаратОбъект.get_last_error;
    
    Если  КодОшибки = 0 Тогда
        
        КассовыйАппаратОбъект.T400me("open_port;"+НомерПорта+";115200");
        КассовыйАппаратОбъект.T400me("cashier_registration;1;0;");
        КассовыйАппаратОбъект.T400me("set_error_log;0");
        
    Иначе
        Сообщить(" Ошибка открытия порта= "+КодОшибки+", "+КассовыйАппаратОбъект.get_error_info);
    КонецЕсли;
    
    Возврат КассовыйАппаратОбъект;
    
КонецФункции



volodya1122 @ Сегодня, 14:47 * ,

1. Ви перепрошивали свій реєстратор? і помилка виникла після перепрошивки?
- Сказали, що підакцизний товар не продають, тому не перепрошивали КА.
2. Попередній драйвер видалили?
- якщо не перепрошивали, значить це також не робили.
3. Після цього новий драйвер зареєстрували (від імені адміністратора) (І згідно інструкціі повинен ще лежати в папці C:\olesrv)
- зможу уточнити завтра, хтось із спеціалістів підключався і налаштовував КА (можу зателефонувати і запитати це).

Ситуація така, що поки що працюють в старій програмі, але будуть найближчим часом переходити на 1С. А в 1С була обробка під Марію, тому потрібно зараз переробити під МІНІ, але зі збереженням функціоналу.

Цитата(Gazulo @ 12.10.21, 14:41) *
спробуйте утилітою TstT400Server виконати команду...

Дякую, спробую. Ще через утиліту не пробувала викликати команди.

Автор: Sharzem 13.10.21, 15:55

Цитата(Cordelia @ 12.10.21, 10:07) *
Cash Register is busy and can not run a command

Що тут не зрозуміло ?

get_report 44000000.gif
такого немає....
Є execute_report....

Автор: Cordelia 18.10.21, 12:15

Цитата(Sharzem @ 13.10.21, 16:55) *
Що тут не зрозуміло ?

get_report 44000000.gif
такого немає....
Є execute_report....


в документації є, і потрібно зберегти файл, а не друкувати звіт

Автор: ValeryZ 05.11.21, 16:01

Cordelia @ 12.10.21, 9:07 * ,
Доброго дня.
Може запізно і проблема вирішилася, але вставлю свої 17 копійок.

Я так розумію, що ви проводите ініціювання послідовного порту один раз?

Як показала багаторічна практика 54 апарати полюбляють, щоб їм постійно нагадували про те, до якого порту вони підключені. Окрім того, можливо, що КА не знає, куди записати файл.

Тому, я б вчинив наступним чином:
1. Повідомив би ЕККА, куди писати файл (точніше OLE-серверу):
1.1. Підключаю порт: "open_port;3;115200;"
1.2. Налаштовую каталог: "set_dir;D:\OLE\Exemple;"
1.3. Закриваю порт: "close_port;"
2. Виконав би звіт:
2.1. Відкриваю порт
2.2. Виконую звіт: "get_report;0;"
2.3. Закриваю порт;

По Вашому коду я бачу, що ви у обов’язковому порядку при ініціалізації порту проводите реєстрацію касира. Не знаю, наскільки це виправдано для кожного випадку зверенення до порту. Наприклад при внесенні товарної позиції до чека це не обов’язково. А от при оплаті - так.
Можливо цей звіт не вимагає реєстрації касира. Я сам не користуюся get_report (немає необхідності).

І ще одне. Якщо КА перепрошитий на 5401F3, то йому потрібно поставити останній драйвер (там є зміни, які OLE-сервер попередніх версій не розуміє). Якщо не перепрошитий - ситуація дзеркально подібна, тож оновлювати драйвер не потрібно, або, якщо це відбулося - поставити попередню версію.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua