<?php // Полная загрузка сервисных книжек, создан 2025-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) я не нашел в «топе поиска» такого нумератора, почемуто все пытаются «вытащить» префикс в шапку, и по периоду мне год, по повторяющемуся номеру дают отказ, ошибку и т.д.
2) считаю что номер должен вставать не от отредактированого префикса, а «по умолчанию», тк в дальнейшем, при создании в этом периоде новых доков, нумерация собъется на стандартный префикс
Ну и чем групповая обработка справочников и документов не нравиться?
Тем что там нет восстановления нумерации…
(4) зато есть в Универсальном подборе и обработке объектов ИТС
(5) Да есть, но там перенумерация идет 1) независимо от помеченных на удаение/не проведенных 2) при использовании отборов выпадает «Повтор номера:…» … здесь проще…
(6) это как отбор настроишь. Перенумерацию тупо можно 2 раза запустить
(4) Есть там. Удаляешь номер и он автоматом присваивает следующий
Спасибо, это первая обработка в 8.2 жаль только,что период год и нельзя выбрать желаемый период
(9) если желаемы период то будут косяки с повторяющимеся номерами
(7) , (6) , да кстате можно 2 раза и поигратся с отбором, не подумал как-то… а тут одну кнопку нажать….
Но чтобы не было задваивающихся номеров при указании периода указывать с какого номера начинать нумерацию. Эта идея была у инфостаровцев по 7-ке
Эх. Когда-нибудь мне это надоест и я-таки не постыжусь выложить свой механизм нумерации…
пользуйтесь типовыми обработками! и удобнее и функциональнее.
это — крайне неудобный бред. Целый год!
ради пяти документов в конце года будешь перенумеровывать весь год?
и объясните мне, на кой лад учитывать помеченные документы? возьмите за привычку удалять весь красный мусор периодически.
это дисциплинирует сотрудников.
(0) В перенумерации стоит отталкиваться не от периода «год», «месяц» … а от периодичности номера документа который перенумеровываешь, иначе толку с твоей перенумерации никакого 😉
Спасибище огромное!!!!! Как здорово что есть такие умнички, которые так здорово помогают нам, бедным бухгалтерочкам, в нашей работе!!!!!!
Отлично! А то для 8.2 так до сих пор никто и не удосужился что-либо удобоваримое сделать.
А тут — шик, блеск, красота! Раз — и РКО готовы, два — и ПКО, три — и все Авансовые по порядочку…
пользуйтесь типовыми обработками! и удобнее и функциональнее.
это — крайне неудобный бред. Целый год!
ради пяти документов в конце года будешь перенумеровывать весь год?
А мне, к примеру, не очень сложно подождать на 10 секунд больше. Тем более, учитывая что типовая обработка для покупателей упрощенки не доступна.
В целом хорошо, но тот факт что период только год не очень удобно, лучше было бы с вариантом выбора периода или хотя бы начальной даты для перенумерации.
Перенумератор рулит 🙂
спасибо за обраюотку)))очень помогла))
Обработка полностью рабочая. Спс.Рекомендую
Версия 8.2 не желает работать. Пишет — «Слишком много документов»
Спасибо, в 8.2 у меня работает без проблем.
Обработка работает на 8.2 префиксы понимает.
Спасибо. самая используемая обработка.
спасибо, помогает
присоединюсь к вопрошающим про перенумерацию за определенный период, можно же проверить с начала года, и при косяках выдать сообщение
Спасибо, пользуюсь — очень нравиться.
В общем, эта обработка позволяет обрабатывать справочники и документы. Плюс есть довольно хорошая система отбора нужных объектов. Чем-то эта обработка похожа на стандартную «Групповую обработку справочников и документов». В чем-то она даже её превосходит, в чем-то — наоборот уступает.
Вот, в частности можно перенумеровать элементы какого-либо справочника или документы определенного вида (в том числе с установкой префиксов и т.д.). Можно пометить на удаление, а можно непосредственно удалять объекты. Ну и такая полезная штука есть, как Произвольный алгоритм. Т.е. можно написать небольшой код обработки на встроенном языке 1С (прямо в режиме 1С Предприятие).
Перенумеровываю ПКО в 8.2 Бухгалтерии, релиз последний типовой.
Пока документов было меньше 10000 — работала нормально обработка.
Сейчас больше 10000 — зависает в конце первого цикла.
Прерываю выполнение, смотрю, что в базе: документы ПКО начинаются с номеров я_+00001, доходят до 1000 и появляется пробел я_+1 001 и .т.д до я_+9 999 (с пробелом перед последними 3-мя цифрами), далее идут родные номера по порядку 00000010578 и т.д.
Т.е. обработка зацикливается, ей номера не хватает, т.к. есть пробел в строке.
Можете исправить?
Вот для простенькой задачи экстренно «перенумеровать 20 документов с начала 2015» справилась на ура. Пишут что миллион перенумераторов, но этот попался первым. Стояла задача даже поменять префиксы документов с начала года и +к этому сбой нумерации. Конечно, префиксы поменялись при работе перенумератора от срабатывания подписки на событие ПриУстановкеНовогоНомера(<СтандартнаяОбработка>, <Префикс>)
Пытался быстро подправить — бесполезно. Как-то сильно перегружен.
Сейчас вот вопрос — нужно ли под управляемую форму «такой».