<?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='\
хотелось бы поиметь комментарии по обработке:
0. какая версия выложена?
1. как переносит реквизиты неопределенного вида?
2. насколько успешно работает по переносу операций и проводок, в т.ч. и с субконто неопределенного вида;
3. как работает по переносу реквизитов-строк неограниченной длины;
…+ есть еще вопросы-замечания.. будем обсуждать после ответов на эти..
Юзаю именно эту версию (2.6). Помогла не раз, без особых багов (не без ошибок конечно) !!! За это Павлу Шевченко ОГРОМНОЕ СПАСИБО !!!
Если срочно нужно перенести данные из одной конфигурации в другую — идеальная программа. А устраиваться на работу тестировщиком для Сhe Burashka я не намерен.
Провереная годами !!! +
(3) Тестировщиком не для Che Burashka, это ж ТВОЯ обработка, а не его!
Он же тебя не просит свои протестировать!
За свою не можешь ответить?
(5) вряд ли Он автор …
Отличная вещь, давно юзаю!
Обработка не моя, просто выложил полную версию очень нужного инструмента.
А если у rw.spb и Ёпрст есть ч получше тогда выкладывайте а не критикуйте …
Не знаю, кто автор, но за то что выложили именно эту обработку я бы поставил +100,
Против той версии которая была раньше…
Добавлено к (9) Автор данной разработки © Шевченко Павел
это полная демо-версия (настроек море, но сохранения их для последующей загрузки нет) , переносит корректно
не, я, конечно, могу продемонстрировать кривизну данной обработки в некоторых моментах… но оно мне надо — чужие обработки тестировать зазря…?
Версия не полная и не последняя. Это 2.6, есть 2.7. Там обработок больше. 😉
Для переноса на скорую руку — оч удобная вещь.
Все-таки УниверсаЛ или УниверсаМ ? 🙂
(8) Если выкладываете не свой код, то указывайте об этом в заголовке ВСЕГДА.
2.7 наhttp://infostart.ru/projects/3459/
С Che burashka, вполне согласен, кривизна в любой обработке есть, в этой обработке основной минус, что она не делает синхронизации по внутренним кодам элементов справочника или того же документа, а также через чур нудная настройка, но переделывать ее не буду, проще свою разработать, если одинаковые конфигурации
тогда более — менее нормально, но если разный план счетов: счета садятся корректно,
а субконто на некоторых счетах садятся не правильно(нарушен порядок), после переноса стоит перевыбрать счет, аналитика субконто очищается.А если Аналитика разная, тогда они вообще пустые. В настройках, я не нашел где установить это соответствие.
Лучьше пользоваться и юзать версию 2.7, там хотябы сохранение настройки есть и настройка изменена в корне.Попробую сделать переброс между разными конфами,
потом напишу, какие ошибки встретил…
+gud
версия 2.7 Перенос документов и справочников по ссылкам общим объемом 70000док.
с учетом транзакции длился около 18 часов, после переноса при беглом просмотре обнаружилось следующее: %10 перенеслись пустые, остальные 90% вроде правильно заполнены, однако статус документов (только записано) в настройках проведение, пометки и прочая ерунда, галки стояли.
У кого много времени, а также нет возможности разрабатывать что-то свое, может пользоваться этой обработкой смело, может результат быть у Вас и другим…
При переносе обработка работала на Server 8ядер, 16гектар оператив.
Гм, есть же РокетЛаунчер?
Лучьше пользоваться версией 2.7.
При минимальной доработке можно переносить движения документов.
Несколько предприятий переносил из одной базы в другую в среднем 2-3 года работы бухов. Правда были косяки с повторным проведением перенесенных документов (задваивались проводки), странно только что только у пары видов документов (ввод ОС и еще что то было, сейчас уже не помню 3-4 года назад было)
Полезная вещь, пользую 2.6 более 4 лет. В основном использовал для переноса документов и справочников между торговыми базами схожих конфигураций. 2 года назад надо было пересчитывать остатки задним числом (менялась схема закупки с купленного на принятого на реализацию). При этом рабочая база не останавливалась а в копии была проделана эта хрень, а при помощи этой чудесной обработки переносились документы из рабочей в переделанную. В момент Х, когда базы были засинхронизированы по документам, рабочая база была заменена на переделанную.
Спасибо автору.
Обработка корректно сделала то что нужно было (перенос операций).
По переносу, ИМХО, это лучшее чем пользовался.
ОГРОМНОЕ СПАСИБО !!!
А как ей пользоваться? Мне надо выгрузить только сотрудников из УСН в ЗиК!
не коректно переносит рекв. типа «Вид расчетов» — 2-е одинаковые базы 7.7 (скуль и дбф): перенос из скуль в дбф
сами выди расчетов сопоставленны коректно
т.е. может ввобще не перенести или перенести частично (в справочнике такие рекв. частично не переносить, в доке вообще не переносит).
Практически все перенеслось корректно, хорошо
Одна из лучших обработок
списбо автору, забираю
подскажите как правильно задать настройки, чтоб перенести поступление от определенного поставщика?
Очень удобно!
Спасибо большое!!
Пригодилось, автору респект
Единственная обработка которая адекватно перекидывает инфу из одной базы в другую.
Попробую обработку, отпишусь о результатах у себя. Как видно по постам более ранним, у всех всё по-разному.. Это уже 4ая обработка в моем поиске истины 🙂 Как знать..
Спасибо за обработку, но мне интересно если я из Бухгалтерии УСН 7.7, в Бухгалтерии УСН 7.7 переносить документы , интересно поможет, или только из разных?
Какая же она полная?! А где сохранение настроек?