<?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='\
Но все-таки, переходите уже на УФ
Будем, но видимо не так скоро))
Для АТОЛ-а 55Ф не получается фокус в «Комплексной автоматизации» 1.1.90.1, а для эмулятора ККТ и принтера чеков(ReceiptPrinter.epf) — все замечательно. Для АТОЛ-ов находит обработку у кого нибудь?
(3)хм… Доработки не было? По идее ресурс Компьютер используют все… Если конечно атоловская обработка не работает иначе. В моем случае эмулятор и штрих-мовские отработали на ура.
Попробую посмотреть, интересно.
Доработки ТО не было. Я имя компьютера составляю добавляя имя пользователя в транслитерации. 3 года назад поставил успешно(для ТСД).
мИмяКомпьютера = ВРег(ИмяКомпьютера())+»#»+Элв_ДополнительныйМодуль.ПолучитьСтрокуНаЛатинском(ВРег(ИмяПользователя()));
Данный код для кнопочки откроет регистр сведений «ТорговоеОборудовние» с разрешением изменять вручную.
Показать
(5) Какая-та допись у вас видимо, может из-за неё какой конфликт
(6) Специально скачал обработку АТОЛ ККТ
Подключил три кассы АТОЛ (выделил зеленым)
Всё работает нормально.
Я думаю вам стоит посмотреть код своих доработок (которые вы отметили красным).
и подключить ККТ в разрезе пользователей
(10)
Спасибо (9). Проверю. Вероятно обработка Атоловская не находит ИмяПользователя() . Попробую
через имя компьютера.
А есть видео где она ставит ККТ онлайн без ОФД и ИТС?
(13) А есть видео где она ставит ККТ онлайн без ОФД и ИТС?
(13) у этого парня есть видеоhttps://infostart.ru/profile/439778/
Помоему данная статья дублирует уже существующуюНастройка торгового оборудования . Вней я привел несколько вариантов решения проблемы подключения торгового оборудования в терминальном режиме на неуправляемых формах.
(16) по моему моя статья, на что я и ссылаюсь, резюме статьиhttps://infostart.ru/public/197612/ (которая датирована 2013 г. и явно появилась раньше вашей). А ваша статья с заголовком «Настройка торгового оборудования в конфигурации «Управление торговлей» ред. 10.3 при работе в терминальном режиме» узко направленная, или правильно называйте статьи чтобы было легче их искать.
Краткое содержание для тех кому лень читать:
В функции определения компьютера автор к имени клиентского компа, добавил еще имя пользователя. Собственно все. Непонятно почему так коротко получилось? Где история, как делали раньше, где истории как мучались клиенты? Больше воды, богу воды!
(18) да не говорите, можно было налить воды, как у нас один пользователь распечатал чек с одного региона на кассу другого региона 😀 геморроя было много.
(12) ШтрихМ-овская обработка ККТ последняя (1.7) с составным определением имени компьютера , используя ИмяПользователя(), работает. Проверил
УТ 10.3, сделал немного по другому, ТОСервер-ПодключитьОборудование в запрос добавил строки
Если СокрЛП(Вид)=»ККТ с передачей данных» тогда // ККТ с передачей данных
Запрос.Текст=Запрос.Текст+»И РегТО.КассаККМ = &Касса»;
Запрос.УстановитьПараметр(«Касса», УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной(«глТекущийПользователь»), «ОсновнаяКассаККМ»));
КонецЕсли;
(19) Ага, такая же фигня была, печатают чек, не вылезает, в другой комнате ФР весело штампует чеки))) Спасибо за статью, в это плане и шёл, так как в БП 3.0 разрез пользователь идёт 🙂
(21) Вариант тоже)
Александра не перестает удивлять своими новыми профессиями. Главное перспективно