<?php // Полная загрузка сервисных книжек, создан 2025-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='\
По поводу штрихкодов, где у вас проблемы с формированием этикетки. Это даже не проблема, вопрос настройки. На самих весах (скорее нет, так в Штрихе делается) или в редакторе этикеток указывается ФОРМАТ этикетки. Из редактора один раз выгружается этикетка нужного формата, но я точно не помню, потому что настраивал эти весы давно. Формат Типа «ППКККККВВВВВС»
ПП — Префикс
ККККК — код PLU
ВВВВВ — Вес
С — контрольный символ
Весы работали ещё с розницей 2.0, вы просто не до конца разобрались в вопросе.
(1) Не исключено что не до конца разобрался. Времени на разборы было очень мало. Что есть.
(1)Насчет формата штрихкода — спорно. В менеджере я пробовал ставить разные форматы — результат нулевой. Он все равно добавляет ноль.
И не должно быть у весового товара штрихкода)) Что это за бред вообще?)
(4)Алексей Куликов. Ты кто?
Вопрос не по теме. По теме вы не разобрались с процессом работы с этими весами, и это признали. Чем ваша статья полезна? Ошибок больше чем полезного. Одни только штрихкоды на весовом товаре чего стоят))
Я не преподносил статью как панацею и не говорил что это лучшая статья на всем сайте. Вовсе нет. Все мы люди и нам свойственно ошибаться.
Но, лучше уж писать и что-то пытаться делать, чем сидеть только и критиковать. Вы ведь, собственно, только этим и занимаетесь? На сайте с 12 года, рейтинг 12 и всего 4 статьи. Не в обиду будет сказано, но Вы не тот человек, чья критика мне важна. Поэтому, не буду Вам мешать, критикуйте дальше, больше все равно ничего не умеете.
Я работой занимаюсь, а не рейтингом. Ошибки разные бывают (описка, бывают более простые решения), но у Вас ошибка фатальная, вы не понимаете как работает механизм работы с весовым товаром. Статья полезна только до момента где вы описываете работу с 1С. У специалиста вызывает только смех) Одно дело если бы вы СПРАШИВАЛИ у форумчан как настроить правильно. Но вы же не спрашивали, вы УЧИЛИ нас, форумчан, что вот так правильно, а 1С это какашка, потому что не правильно работает). Разницу понимаете?
(8)Судя по вашему профилю — тяму только на комментарии чужих работ и хватает. Продолжайте. Очень интересно.
(8)Я бы сказал, чем конкретно Вы занимаетесь, но могут забанить.
С вами лично никакого удовольствия общаться. Одно радует-комментарии не скрыты и ваш профессионализм видно как на ладони.
(11)Вы знаете, это взаимно. Еще раз повторю — Вы не тот человек, чья критика мне важна и не Вам говорить о моем профессионализме или НЕ профессионализме.
На каждом форуме есть категория людей, которые показывают свой якобы «профессионализм» и полностью убеждены, что их мнение кому-то важно. Думайте так дальше.
Спасибо большое автору
Как настраивали перенос наименования на другую строку?
Спасибо за статью!
Здравствуйте обработку доделывали под 1с 8.3? Хотел бы приобрести
(16) Добрый день. Зависит от конфигурации , для которой будете приобретать. В этой статье обработка для конфигурации 1С:Розница, в этой статьеhttps://infostart.ru/public/537924/ — для торговли. Тестировалось на версиях платформы 8.3.*
очень хорошая статья.
Привет не могу понять как без компа а с весов внести в них наименование товара и вообще возможно ли это?
Весы весами
(4) Как это не должно быть штрихкода у весового товара? Тут либо вы отрицаете само существование весового товара, либо вообще не разбираетесь в отрасли.
Если есть весовой товар (а он есть), то его нужно передавать в магазин. Его нужно продавать покупателю. Вы когда приходите в «ашан» и покупаете любые фрукты или овощи на них штрихкод клеите, чтобы на кассе не стоять как баран и не ждать пока кассир все провесит.
Так что должен быть штрихкод весового товара. А вот дальше возникает логика формирования штрихкода весового товара, например, для EAN13. И тут тоже возможны очень разные варианты. Если не вдаваться глубоко в теорию, то:
12 цифр — сам думаешь чем наполнить
1 цифра — контрольная
12 цифр можно заполнить например так:
7 цифр — артикул (штрихкод из 1с, все что угодно)
5 цифр — вес в граммах
И вариантов наполнения этих 12 цифр очень много