<?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 день, надо со второй в первую перекинуть… Буду пробовать днем,http://www.infostart.ru/projects/?id=181 еще есть — с первого раза не пошла — будем пробовать…
> Обработка распространяется бесплатно. Вы можете ее беспрепятственно использовать в коммерческих целях.
Наглое вранье 😉 — запаролена!
> через текстовый файл c:/1.txt.
а вот нет у меня диска С:…
хоть бы можно было папки указывать в выгрузке/загрузке ;-(
Блин! Ну что мешало сделать выгрузку документов, а потом загрузку не в конец/начало дня, а добавить типа «с оригинальным» временем?
Да, и хорошо было бы не просто выдавать результат загрузки, а «скрестит» проверку и загрузку — т.е. в протоколе
Загружен документ А
— не прописана номенклатура (отсутствует)…
какой сердитый чебурашка …
> Обработка распространяется бесплатно. Вы можете ее беспрепятственно использовать в коммерческих целях.
> Наглое вранье 😉 — запаролена!
Нет, не вранье! Я же не написал, что можете менять исходный код! А ИСПОЛЬЗОВАТЬ — скоко угодно.
ВСЕ ЧЕБУРАШКИНЫ ПОЖЕЛАНИЯ УЧТЕНЫ! КАЧАЙТЕ…
Спсб, но смотреть буду уже как след.раз припрет…
Еще хорошо бы перенос справочников забабахать…
Нами эта обработка используется для связи удаленных точек, продающих топливо, с офисом
+1
А обработка может приход и расход из ТИС в Типовю перенести(корректно)?
Может. Файл прототипов делаешь и вперед. У меня на паре фирм переносят.
не понял что за файл прототипов?
ОпЫсание читай. А если кратко — он позволяет совместить несовместимое!
Блин, подстава… а где перенос справочников??????????
Не конечно можно, взять документ, запихнуть в него всю мою номенклатуру и перетащить один этот документ… -он по ссылкам потянет все нужные справочники?
Автор, а не могли бы Вы для примера/ознакомления выложить файл прототипа или его кусок(на примере одного документа). Желательно для переноса документов между РАЗЛИЧНЫМИ конфигурациями, например ТиС-Бух, УСН-Бух.
Заранее спасибо
Добрый день в папке не было файла прототипов вечером попробую ну так в принципе довольно клевая штука
Пример файла прототипов в студию! Не для среднего ума его формат…
Молодец, хорошо сделано. Для полноты счастья осталось доработать отбор по типу документов.
При наличии д-та в «приемнике» добавляется еще один
Ерунда.Тащит не учитывая время.
(20), (23) Хм… Давно наверное не обновлял я этот отчетик. Сейчас и прототипы (пример) есть, и по текущему времени можно сохранять. Обновляю…
Мои лыжи не едут?
Показать полностью
и еще…
Если Спр.НайтиПоРеквизиту(«КодПриПереносе»,Номер,1)=0 Тогда
{C:1CINFOSTARTPERENOSЗАГРУЗКА ДОКУМЕНТОВ.ERT(382)}: Неверное имя реквизита!
это я из бухгалтерии в торговлю пытаюсь перенос сделать.
Блин-блин-блин… Кажись выложил спец версию, кое-для кого избранного адаптированную. Сейчас исправлюсь…
Клево!!!
Большое спасибо!Если б такая же обработка была для 8ки,жить стало бы легче.
(29) ВООООТ!!! А то все: КД, КД… 🙂
А случаем ни кто не поделится файлом прототип для переноса документов из Торговля в Бухию
Спасибо! Очень помогают такие обработки!
Оброботка спосла уйму времени. Пришлось переносить документы за всю рабочую неделю, вручную заняло б пару дней минимум, а тут справился за пару часов.
Интуитивно понятный интерфейс, никаких проблем с использованием не возникло, освоение заняло максимум 5 минт.
Огромное спасибо!
и мне помогло, спасибо 🙂
Поделитесь файлом прототипа для переноса
все почти корректно перенеслось. спасибо
Надо попробовать из Бух в Бух перенос сделать…
Простенько. Кого-то вполне может устроить.
Перенеслось из Торговля в торговля….
Оброботка спосла уйму времени. Пришлось переносить документы за всю рабочую неделю, вручную заняло б пару дней минимум, а тут справился за пару часов.
Интуитивно понятный интерфейс, никаких проблем с использованием не возникло, освоение заняло максимум 5 минт.
Огромное спасибо!соглашусь, спасибо
Мне понравилась-работает быстро, 39 тыщ объектов выгружает 25 сек, загружает 45-60 сек. Не проводит доки, ну это ерунда-стандартной провела и все, самое главное быстро и качественно. Но минус есть- создает доки с номерами от 1 и вперед и если документ уже был, то он дублируется.Хотя как вариант рассмотрела-загружаю из магазина и смотрю, что конкретно они меняли в накладных(любят у нас не так отгрузить, как выписано), хотя все по телефону оговариваем,а тут-наглядно, мои доки проведены, а их создались непроведенные , а накладных там максимум пару штук в день, 2 раза в неделю.