<?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='\
Добрый день!
А опишите поконкретнее, как работает?
Будет ли работать на 2.2.4?
(1) ну судя по описанию и картинке написано по управляемое приложение, следовательно по Розницу 2.2.4 работать должно без проблем
(1) Добрый день!
1. Работает следующим образом:
-поставщик присылает на почту эксель форму накладной (либо счета, прайса и т.п.)
-оператор редактирует колонки эксель формы, чтобы они соответствовали соответствовали колонкам табличной части обработки (занимает не более 5 минут)
-далее оператор указывает эксель файл для загрузки и нажимает кнопку «заполнить». Происходит заполнение табличной части обработки.
-одновременно с заполнением происходит проверка на наличие возможных ошибок дальнейшей загрузки (например: не найден «вид номенклатуры», не найдена «единица измерения»)
-чтобы исправить ошибки необходимо подправить исходный эксель файл и перезаполнить табличную часть обработки
-после исправления ошибок оператор нажимает на кнопку «загрузить номенклатуру» при этом номенклатура с новыми штрихкодами будет загружена в базу (сопутствующие реквизиты будут взяты из «вида номенклатуры»), а номенклатура штрихкод которой уже имеется в базе загружена не будет, но обновиться наименование.
-при необходимости оператор в ручном режиме дозаполняет необходимые реквизиты созданной номенклатуры в ручном режиме
-в обработке дополнительно присутствует кнопка «создать поступление», которая подставит в новое поступление товаров указанную номенклатуру, цены и количество. После этого достаточно указать в открывшемся поступлении поставщика и реквизиты накладной.
Примечание: во главу угла данной обработки ставились два фактора:
а).уникальность штрихкода в справочнике номенклатуры, чтобы минимизировать количество пересортов в учете (в том числе чтобы избежать путаницы при проведении инвентаризации и на рабочем месте кассира при продаже).
б).ускорение заведение номенклатуры и штрихкодов в базу. Ранее накладные по 50 новых товарных позиций обрабатывались 2-4 часа и допускались ошибки при внесении. Сейчас аналогичные накладные обрабатываются 5-15 минут.
2. На версии 2.2.4 не тестировалось, но думаю, что взлететь должно. Если не взлетит, то готов поправить бесплатно на Вашей базе.
P.S. Если есть какие-то пожелания по обработке, то я готов к обсуждению и адаптации под Ваши задачи.
почему нет загрузки (.xls) только xlsx, поля преопределены ??? тупняк !!!!
1) Загрузка *.xls добавлена
2) Поля предопределены целенаправленно:
-пользователи зачастую знают и понимаю Эксель лучше, чем 1с,
-поэтому пользователю зачастую проще «подогнать» Эксель под нужды 1с, чем настраивать 1с,
-целевая аудитория для данной обработки именно те пользователи, которые хотят минимизировать свои действия в 1с,
3) «тупняк !!!!» — это не конструктив или это самокритика?!
Существует ограничение на 3000 строк?
p.s.:
Office 2010
http://v8.1c.ru/retail/)
Розница, редакция 2.2 (2.2.7.39) (
1С:Предприятие 8.3 (8.3.10.2667)
(6) Николай, добрый день!
Это ограничение на одну загрузку, то есть можно сделать две загрузки и тем самым получить 6000 строк.
Но если есть необходимость загружать за раз более 3000 строк, то могу снять ограничение.
иерархия не переносится?
Не переносится. Если необходимо, то можно добавить.
Здравствуйте.
Скажите, учитывает ли обработка характеристики цвет и размер?
Если нет, сможете ли добавить?
(10) Добрый день!
Представленная обработка загрузку характеристик не поддерживает.
В ближайших планах доработка обработки не планируется ввиду моей загруженности.
Добавить загрузку с учетом характеристик могу, но только в порядке «дозаказа» (как сказал ранее: ввиду моей загруженности).
Возможно на Инфостарте есть подходящие Вам обработки.
Добрый день.
Можете подсказать откуда обработка берет значение в поле «Вид номенклатуры»?
Если я правильно понимаю ошибку обработка должна выдавать только в том случае, если у меня в Экселе в данном столбце указано не верное значение Вид номенклатуры. Я перепробовала уже несколько вариантов видов номенклатуры из справочника, но обработка все равно выдает ошибку именно в этом столбце.
Заранее благодарю.
(12) Добрый день.
Предлагаю следующий вариант всем у кого возникли сложности в работе в обработкой: 1. обменяться контактными данными (в личку). 2. я подключусь удаленно к Вашей базе и вместе с Вами сделаю загрузку. 3. по результатам общения с Вами доработаю обработку и перевыложу на инфостарт
За обработку конечно спасибо. Пригодилась. Но как раз с «Видом номенклатуры» там такой сумбур, как будто автор специально хотел всех запутать.
Добрый день.
Возникли сложности с обработкой на релизе 2.2.12.30 : Проблема с Видом номенклатуры — выдает ошибку на этом столбце и не загружает новую номенклатуру.
Добрый день!
Могу исправить по удаленке.
Наберите мне 8-926-026-60-60