<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
(2243) Насколько полная поддержка и насколько быстро она будет успевать за изменениями в ДТО10? Есть полноценная поддержка данной обертки для типовых конфигураций 1С 7.7 или нужно писать самостоятельно обработки обслуживания? Не повредит ли лишняя «прослойка» работе с драйвером Атола из 1С 7.7 в плане появления недокументированных (неизвестных) ошибок или в результате зависимости от автора данной «обертки», в т.ч в виде прекращения развития данной обертки ее автором?
Почему не удалось это сделать автору данного решения? Стандартный драйвер ДТО10 работает в 1С 7.7 с полной поддержкой функциональности при использовании оригинальной обертки Атол (подтверждением тому являетсярешение ). В чем же тогда преимущества данной обертки перед использованием родной обертки от стандартного драйвера Атол в 1С 7.7, которая обновляется одновременно с выходом новой версии ДТО10?
(1) Стандартный драйвер Атол v10 в 1Cv7 не работает, поэтому пришлось доработать запуск стандартного драйвера Атол v10
Ваше решение работает только с 8й версией драйвера, 10 — заявлено, но не работает… (в комментариях к обработке много об этом пишут…)
В Вашем решение принципиально неправильный алгоритм работы.
Поэтому плюсы этого решения — Простое и понятное с минимальными доработками.
Если касса подключена по ethernet. То я так понимаю данное решение не подходит?
(2) Если у вас не хватило умений или таланта подключить ДТО10 в 1с 7.7 это вовсе не означает, что он не работает у других. В комментариях писали те, кто невнимательно изучил инструкцию по подключению, но и у них уже работает после исправления их ошибок.
В нашем решении заявлено, что работает драйвер ДТО10 с 1С 7.7 и он на самом деле работает, полностью поддерживая все новые теги, чек коррекции и прочее.
А ведь способов подключения ДТО10 к 1С 7.7 несколько:
https://infostart.ru/public/991465/
https://infostart.ru/public/858638/
— вот тебе и через родную обретку addin_fptr10_x86.dll
— вот тебе и через JSON-задания
Или у других тоже не работает в 1С 7.7? Получается, они тоже обманывают окружающих?
И нужно использовать только вашу обертку для 1С 7.7?
😉
(4) Виктор, считаю, что Вы абсолютно неправы, талант в следовании инструкции совсем не нужен.
То что вы продаете разработку, которая по умолчанию нарушает закон — это на вашей совести
(6) А в чем нарушение можете объяснить? Стало интересно.
(3) должно работать, измените параметрыhttp://integration.atol.ru/api/?pascal#driver_settings
LIBFPTR_SETTING_PORT — способ связи с ККТ. Остальные настройки связи зависят от значения этой настройки. Может принимать следующие значения:
LIBFPTR_PORT_COM — работа с ККТ либо через физический COM-порт, либо через виртуальные COM-порт и TTY-файл. Доступно для Windows, Linux и Android. К данному каналу также относятся настройки LIBFPTR_SETTING_BAUDRATE, LIBFPTR_SETTING_BITS, LIBFPTR_SETTING_STOPBITS, LIBFPTR_SETTING_PARITY, LIBFPTR_SETTING_COM_FILE.
LIBFPTR_PORT_USB — работа с ККТ по USB. Доступно для Windows, Linux и Android. К данному каналу также относится настройка LIBFPTR_SETTING_USB_DEVICE_PATH.
LIBFPTR_PORT_TCPIP — работа с ККТ по TCP/IP (Ethernet, Wi-Fi). Доступно для Windows, Linux, Android и iOS. К данному каналу также относятся настройки LIBFPTR_SETTING_IPADDRESS и LIBFPTR_SETTING_IPPORT.
LIBFPTR_PORT_BLUETOOTH — работа с ККТ по Bluetooth. Доступно для Windows, Linux и Android. К данному каналу также относится настройка LIBFPTR_SETTING_MACADDRESS.
(5) Посмотрите внимательноhttp://forum.infostart.ru/forum28/topic209034/message2246463/#.. . — стандартный драйвер выдает ошибку:
«Ошибка при создании объекта из компоненты C:1C estaddin_fptr10_x86.dll (отсутствует интерфейс IInitDone) »
Ваша обработка нарушает правила оформления чеков — посмотрите презентации во вложении
Вы не обманываете, а не договариваете = скрываете истину намеренно или потому что не знаете?
(9)
По ссылке ошибка в коде — не нужно использовать метод ЗагрузитьВнешнююКомпоненту.
Если дойдете до поста (21) в той же теме, то увидете что решение было найдено:
Потом дошло, ее не надо пытаться подключить как ВК, достаточно зарегистрировать через regsvr32,
и обращаться к объекту «FR = СоздатьОбъект(«AddIn.Fptr10»); «
Что такое «правила оформления чеков»? Как именно нарушает? Где вложение с презентацией?
Можно конкретику или детали вместо пустых и общих слов?
(10) ок, тогда еще проще.
Пример обработки для стандартного драйвера во вложении
Только как вы будете формировать чек корректировки со стандартным драйвером?
1С не поддерживает массив байтов, необходимый для открытия чека корректировки…
P.S. сможете ответить никого не оскорбляя и не ехидничая?
Если не сможете — лучше промолчите.
(11)
Вы меня ни с кем не перепутали? Дайте конкретные примеры, где я кого-то оскобрил или ехидничал.
Чек коррекции через ДТО10 в 1С 7.7 я реализовал в полном объеме для ФФД 1.05. Пришлось конечно повозиться, но всё работает штатно и без костылей.
А вам рекомендую внимательно читать инструкции, чтобы не писать потом:
(11)
Для таких случаев драйвер содержит другие методы:
используем getParamString, т.к. getParamByteArray 1С 7.7 не поддерживает.
(12) Это вы рекламируете себя, что умеете хорошо читать инструкцию? )))
Инфостарт не место для разбора вашего поведения, если вы не замечаете — обратитесь к специалистам.
(14) После таких слов даже не возникает желания помогать и отвечать…
Наверное, пост (13) я создал зря.
Эту ветку больше не мониторю.
(15) Вашу помощь в критике и обесценивании переоценить просто невозможно…
Обещал не мониторить, но всё-таки отвечу: что не так в моем поведении, и что конкретно Вы ожидали от меня после многочисленных и необоснованных обвинений с Вашей стороны?:
— Ваше решение работает только с 8й версией драйвера, 10 — заявлено, но не работает…
— В Вашем решение принципиально неправильный алгоритм работы.
— вы продаете разработку, которая по умолчанию нарушает закон
— Ваша обработка нарушает правила оформления чеков …
— Вы не обманываете, а не договариваете = скрываете истину…
и т.д.
Несостоятельность Ваших обвинений я объяснял на примерах и своем опыте, также просил разъяснить в чем именно мои нарушения состоят.
Однако в ответ не получил от Вас ни обоснований Ваших лживых обвинений, ни извинений…
Виктор, самоутверждайтесь в другом месте, пожалуйста.
Обычно dll загружаются через ЗагрузитьВнешнююКомпоненту, что со стандартной обработкой не сработало.
Поэтому написал внешнюю dll. Обработка работает, все функции работают и даже больше.
То что вас обидели мои комментарии — это понятно. То что ваша обработка устарела и весь алгоритм работы вашей обработки неправильный — говорится в презентации Атол. см вложения
Обсуждать вашу обработку мне неинтересно, делайте это на своей странице.
Считаю ваше поведение абсолютно некорректным.
Подскажите пожалуйста : а если у меня подключение не по ком а по лан что поменять в коде ?
(19) посмотрите параметры
LIBFPTR_SETTING_IPADDRESS — IP-адрес ККТ. Может быть как ip-адресом, так и hostname-ом.
LIBFPTR_SETTING_IPPORT — IP-порт ККТ.
LIBFPTR_SETTING_MACADDRESS — Bluetooth MAC-адрес ККТ. Устройство должно быть предварительно сопряжено с хостом средствами ОС.