<?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) Стандартный механизм восстановления счетов.
Он действует для всех счетов Плана счетов, в нем фильтры не указаны.
Если счет был открыт ранее 2019 года, и возможно в нем что-либо меняли, новых счетов с тем же кодом — нет,
обработка этот счет то же «восстановит»?
Можно ли ею огульно пользоваться?
(3)
Любым инструментом нужно пользоваться осмысленно.
По кнопке «Очистка некорректных рабочих счетов» будут очищены только те рабочие счета, которые не корректны по мнению типовой конфигурации и мешают использовать типовую функциональность.
Эти настройки в любом случае кривые, и они вам аукнутся если не сейчас, то потом, когда и для этих счетов изменится период действия (привет минфину!).
(3)
Если посмотреть что делается при восстановлении настроек в типовой конфигурации, то увидим следующее:
1 — устанавливаются реквизиты ЗапретитьИспользоватьВПроводках, КОСГУДт, КОСГУКт, ДатаОкончания;
2 — заполняется регистр сведений КОСГУСчетов допустимыми КОСГУ;
3 — заполняется регистр сведений ВидыКБКСчетов допустимыми видами КБК для данного счета.
Эти настройки будут заполнены типовыми настройками.
Вряд ли типовые настройки могут как-то повредить или что-то сломать.
По крайней мере я не могу придумать такой ситуации.
Есть же типовая с сайта обновлений. поменяйте 2017 на 2018.
(8)Да кто против.
(8) А где можно ее посмотреть?
(8)
Поменял, не находит проблемных.
У меня стандартная не находит проблемных, после обновы 56.7 получились двойники, все новые счета без КЭК и если делать отбор по дате, то новых не видно, соответственно в платежках тоже я их не вижу, при этом восстановление настроек по умолчанию не проходит. Ваша обработка отличается от стандартной? Помогло кому-то? как эти стартмани получить? может так денежку куда-то кинуть? admrabota@mail.ru
(14) Ситуация один в один :(((( В старых — дата окончания 31.12.2018 не появилась. В новых — ничего не заполнено. Выбрать ничего нельзя. Стандартная(заменила 2017 на 2018) никаких проблемных не находит. Я даже вручную удалила все рабочие счета вообще. Но восстановление настроек по умолчанию все равно вылетает с ошибкой где-то на 40%. Поможет ли эта обработка?
(14)
А вам помогло?
(15)
Должна. Мне в аналогичной ситуации помогла.
(16)
Спасибо за файлик, утром проверю, отпишусь.
(16)
Огромное спасибо, помогло, восстановление прошло, КЭКи есть.
(19) Отлично =)
(17) Огромное спасибо!!!!! Помогла!!!!! Жаль, что скачала только сегодня, а не вчера — одну базу руками ночью правила :((((
(29) огромное спасибо! Выручили, а то с одной базой мучился, никак не мог понять. И с портала 1С обработка не помогла найти неправильный рабочий счет и вручную поиск не помог, а Ваша обработка сразу его показала. Умудрились ввести рабочий счет с закрытым в 2017 году счетом 302.91 и КПС с 2019-го года.
(31)Магия=)
(33)
Спасибо, помогло!
(34)Пожалуйста =)
Спасибо большое!!! Всё работает))))
Спасибо огромное, обработка очень помогла!
Помогите с обработкой, пол дня уже сижу с планом счетов ничего не получается.
(46)Чем помочь?
(47)Сколько стоит обработка: Восстановление настроек плана счетов и очистка некорректных рабочих счетов в БГУ 1.0
(48) 1 sm
Часть баз у подопечных ПС не обновился) После обработки всё прекрасно прошло)
День добрый!
Аналогичная проблема со счетами.
Как можно получить обработку?
(22) День добрый!
Аналогичная проблема со счетами.
Как можно получить обработку?
(44) День добрый!
Аналогичная проблема со счетами.
Как можно получить обработку?
(31) День добрый!
Аналогичная проблема со счетами.
Как можно получить обработку?
(19) День добрый!
Аналогичная проблема со счетами.
Как можно получить обработку?