<?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 раз пишу ..первую написал и потерял полгода назад.
(4) это они над тобой «издеваются»… типа ухахатывются… но ты не обращай внимания… удачи во всем…
воо-о-оот…
:)) … На Здоровье!
(1-3) Да ладно вам! 😉 Вчера мне, бац!, и понадобился вдруг перенумератор.
Хотел уж было писать, да таки нашел в базе (наследство от прежних).
(6) Вот нормальный, неконфликтный человек
(8) завидуеш наверно? :))))
блин, я уже испугался.. неужели опять диск ИТС никто не смотрел (ну не весь, а хотя бы универсальные отчеты и обработки)…ффууу а потом отлегло — этож для 8-ки.. — тогда простительно…
(10) Ты думаешь на ИТС нет перенумератора для восьмерки?
Видимо не один я испытаваю изжогу при виде диска ИТС 🙂 … Это шутка
Даешь больше перенумераторов хороших и разных! )
дык, а чем типовая не устраивает?
Жесть )))))))))
(9) А почему бы и нет? Ребята пошутили, человек не залупился, а с пониманием отнесся к иронии (замечу беззлобной) — все нормуль. Перефразирую (13) — побольше форумчан адекватных и с чувством юмора!
Ставлю плюс!
А Душелов интересный — мне за перенумератор сравочников МИНУС, а за документов перенумератор — ПЛЮСы раздаёт 🙂
РЕСПЕКТ!
(17) Я в 6 комменте твоей разработки объяснил причину.
Эту разработку я не плюсовал и не минусовал.
🙂
ок
не обижайся
а этот интересный примерчик
согласен 🙂
Большой жирный плюс…
Спасибо.
А на ИТС по 8-ке такой обработки нет.
(21) 1CItsEXEEXTREPSUNIREPS81UniversalSelectionУниверсальны еПодборИОбработкаОбъектов.epf
Закладка «Обработки» — «Перенумерация объектов»
(22) по (21) «аффтар жжот!»!!!
Хороша. Но надо сразу по всем документам.
(21) 1CItsEXEEXTREPSUNIREPS81UniversalSelectionУниверсальны еПодборИОбработкаОбъектов.epf
Каждый объект надо выбирать. А если префикс организации изменить нужно?
Укликаться можно.
Лучше эту дописать. Она простая и будет делать, то что ей скажешь. А не на 1с надеяться.
Спасибо большое:)
класс. а я раньше столько мучался. огромное сибо
Скажите, а нет такой же, только для перенумерации справочников? Меня интересует именно такая возможность: «…Начальный номер = 0 и Префикс заполнен значением — произойдет подстановка префикса с сохранением нумерации (замена первых символов, символами префикса)»
Огромное спасибо!!!
Млин, номера то поменялись в доках, а нумератор то прежний остался. КАК исправить?
Добрый день! Подскажите, можно использовать перенумератор на платформе 1С:Предприятие 8.2 (8.2.10.77) ???
Ооооооооооотличная обработка!! Очень помогла!! Спасибо! НО! Можно было еще сделать возможность изменять номер, не меняя существующий префикс, по скольку возможна ситуация, когда префикс строится из кода узла РИБ и префикса организации.
Хочу выразить огромную благодарность тому, кто написал эту обработку!!!
Спасибо приогромное!!!
Наталья
Благодарствую))) разработчику
Ух! )) Спасибо!
Очень полезная штука. Спасибо огромное
Молодец аффтар помогла твоя обработка, спасибо!!!
УниверсальныеПодборИОбработкаОбъектов.epf поиском в интернете нашел
А мне нужно заменить переименовать докум енты с префиксом из 3-х символов к номерам с префиксом из 2-х символов, поможет?
Спасибо очень экономит время
Эта обработка работает на конфигурации Управление небольшой фирмой?