<?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='\
Было бы не плохо добавить возможность загружать изображения с камеры ТСД или телефона. Например в настройках галочка, а сценарий:
1) Считать штрих код
2) Проверить есть ли изображение
Загрузить изображение?
Да — включаем камеру
Нет — пропускаем
(1) Хорошая идея.Это можно сделать да, прога это поддерживает, в демке есть пример.
Добрый день! А поиск в Simple WMS по наименованию есть при пересчете товаров?
Еще вопрос несколько человек в пересчете товаров могут работать?
(3) Здравствуйте! Simple wms — это конструктор где можно сделать все что угодно, эта публикация это пример на этом конструкторе. Конкретно тут нет поиска, но чтобы его сделать надо на экране поиска товара расположить поле строки и прописать в обработчике что поиск будет по наименованию. 5 минут работы.
(4) со стороны симпл ВМС да. При вводе количества захватывается объект и пишется строка. Возможна блокировка если одновременно это сделают конечно. Но такая уж у 1С архитектура этого документа.
Здравствуйте.
Где можно посмотреть требования к мобильному устройству? Не хочет устанавливаться на ТСД Honeywell…
(7) здравствуйте! А в чем это выражается? Какой там андроид?
(8). Какой пока не знаю. В маркете пишет не подходит для данного устройства. И всё.
(9) На хоневеллах отлично работает. Минимальный уровень API — 14, это андроид 4.0 (IceCreamSandwich)
(10). Модель EDA50-011. Android 7.1.1
(11) Странно. Попробуйте apk скачать и его поставить.
(12) Скаченный апк получилось установить.
Наконец-то запустил. Только предопределенная настройка не хочет работать: выдаёт ошибку при выборе ордера (не найдено поле … контрагент, если не ошибаюсь). Придётся лесть в конфигуратор…
Нет более подробного описания? В каких режимах (при каких настройках) УТ работает поставляемая настройка?
(13) УТ 11.4, ордерный склад. Приходные и расходные ордера со статусами. Пришлите ошибку я подскажу что поменять для вашей настройки
(14). Создаю приходный ордер (п. 1). Пишет выберите номер прихода. Выбираю любой пишет {(20)}: Поле объекта не обнаружено (Партнер).
(15) А у Вас в регистре ТоварыКПоступлению по этому распоряжению ДокументПоступления какого типа документ?
(16) Примерно разобрался: придётся сильно попотеть, чтобы прикрутить ваше приложение. Надо будет подготовить и адаптировать нашу базу.
Можете ответить на вопрос:
1. почему ваше приложение работает с аппаратными сканерами любых ТСД? А приложения на 1С либо требуют доп. модулей или работают только с камерой.
2. Как решается вопрос с потерей связи в вашем приложении? Потеряются ли сканированные товары ордера?
(17) 1. через перехват клавиш (те котрые умеют эмулировать нажатия клавиш при считывании штрихкода (например хонейвелл) либо, если не умеют то через отправку строки с энтером (CR,LF). Если не располагать на таком экране поле ввода то отрабатывает незаметно в фоне. Если расположить поле ввода (например когда надо либо ш/к либо артикул на одном экране), то тогда можно чрез него.
2. При потере связи запрос не отправится. если у вас запись в ордер идет после каждого ввода количества то строчка на которой связь потерялась не сохраниться.Остальные сохранятся.
Добрый день! А поиск номенклатуры по голосу присутствует? Как было описано в Публикация № 976636.
(19) Добрый день! Нет, также как нет озвучки, но это же конструктор — можете добавить