<?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='\
Спасибо, очень вовремя попалась. Самой выдирать было сугубо лень )
Хорошая обработка
Не хватает только загрузки единицы измерения
Отличная обработка, простая и функциональная, Александру персональный привет.
При попытке загрузки в документ «Перемещение»(цены и суммы отсутствуют) выдает ошибку: Поле объекта не обнаружено (ЦенаВключаетНДС)
(4) К сожалению, данная обработка работает только в тех местах, где есть кнопка «Загрузить из внешнего файла». В описании обработки было сказано: почти в любой документ. В связи с вашей ошибкой дописал в описании, что только там где есть кнопка «Загрузить из внешнего файла».
(4) Могу посоветовать загружать в Поступление товаров, а затем на основании этого документа уже создать перемещение товаров
Спасибо, но тут есть проблема. Перемещение не вводится, если поступление не проведено. Чтобы его провести нужно завести цены и разные другие документы по поставщику. Т.к. это промежуточный документ, то затратно по времени получается. Но всё равно спасибо.
Спасибо!!!
(7) Напишите почту вышлю обработку, где исправлено загрузка для документа «Перемещение товаров»
(9) garga@mail.ru
(9) Большое спасибо за обработку!!!
(9)Здравствуйте, Александр.
Подскажите, пожалуйста, ту часть кода где вы реализовали поиск дублей перед загрузкой.
Я пишу загрузку из XML файла, не могу понять как связать Цикл создания НовогоЭлемента и предварительную проверку на наличие данного Элемента в СправочникеНоменклатура. Как бы догадываюсь, что, например, НайтиПоНаименованию() или НайтиПоРеквизиту(), но на деле выходит ерунда.
Спасибо.
(12) Поиск используется типовой (смотрите данную обработку в УТ 11.3), который ищет по заполненным реквизитам (например: по наименованию и артикулу). Единственное, что я добавил, если находит больше 1 элемента номенклатуры, то сообщаю пользователю об этом, а там уже пользователь решает, что делать. Для поиска по нескольким реквизитам используйте запросы.
С документом Установка цен номенклатуры работает?
(14) не работает, документ установки цен можно создать на основании поступления товаров
Спасибо!
После обновления до 11.4.9.70 перестала работать (((
такая крутая обработка была.
Может кто знает где копать??
Текст ошибки
{ОбщийМодуль.ОбработкаТабличнойЧастиСервер.Модуль(327)}: Метод объекта не обнаружен (Свойство)
Если СтруктураПараметровДействия.Свойство(«ПоДатеОтгрузки») И
(17) Исправлено, добавлена новая версия
(18)В перемещении товаров расширение или обработка работают?
Док. перемещение:
1. В расширении точно не работает, так как там нет пункта меню «Загрузить из внешнего файла».
2. В обработке работало, до версии 11.4.5 включительно.
Есть вариант загрузить товары в поступление, а на основании создать перемещение.
(20)Скачал обработку но там к сожалению не работает на версии 11.4.8.92