<?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='\
Ну первое пожелание это чтоб на форме можно было видеть какой период дат уже выбран… можно еще год в виде списка или меню на статик навесить, и добавь кнопку выбора произвольного периода. А так плюс за старание
недавно такая обработка была — более продвинутая.
там больше функционала было.
как выбрать период с 13.06.09 по 27.06.09 к примеру за один клик?
(4) хе, одновременным нажатие 2х мышек 1 кликом синхронно) разве у вас подключена всего одная мышка? 😉
(1) при нажатии на год, он сбрасывается на текущий.
текущий период особого смысла выводить не вижу. если есть конкретное практическая польза от этого, то подумаю.
произвольный период добавить не сложно, но также как и с текущим периодом тут дело в лишней кнопке на интерфейсе, поэтому если необходимость есть, то добавлю и выложу отдельным вариантом.
(4) ссылку не подскажешь на продвинутую? а по поводу выбора периода в один клик я уже отметил, этот вариант обработки сделан в первую очередь для быстрого выбора периода в отчетах. а используются обычно месяц и год. для налоговых отчетов чаще квартал. клиенты пользуются, пока никто добавлять ничего не просил.
Прикольно, моя разработка вызвала целую бурю новых вариантов 🙂
http://infostart.ru/projects/4172/
тут подсказали автора семерошной обработки, ну и нашел его же версию на восьмерку, скачать можно там:
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=111&lid=4965
основное отличие в том, что там выбранный год сохраняется в обработке. мне такое кажется неудобным. ну и выбора отдельного дня там тоже нет.
а вот подсветка не текущего года красным — хорошее добавление.
(7) нет, не твоя 🙂
(0) Хорошо бы было к проекту (http://infostart.ru/projects/4180/ ) добавить как доп. закладку
(10) ну это к тому товарищу, а я не против.
В этой разработке используется, такое же решение но повернутое на 90град. (ИМХО — это даже удобнее)
Думаю тут оно и было придумано, а остальное — плагиат 🙂
PS
Можно скачать демо-версию и убедиться.
(12) Самый первый вариант был у автора Слава Загайнов —
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=111&lid=3188
ссылка
Аж с 1999 года 🙂
Лично я с 2002 ей пользуюсь.
В (8) его же разработка, но уже для 8
(12) я дал ссылку на обработку для 8 от марта 2007, в (13) можешь глянуть для 7, обновлена последний раз в 2004.
для 7 я видел, но не знал автора, а когда нужна была для 8, то почему-то не нашел и сделал сам.
т.ч. кто у кого идею взял еще вопрос, а плагиат, кстати, на идею не распространяется 🙂
(13) собственно отличий в моей обработке мало: нет сохранения года (открывается тот, который передается параметром), на год можно нажать, чтобы сбросить на текущий, есть кнопка «день» для выбора одного дня, ну и написано как встроить в стандартные отчеты без добавления кнопок на формы (собственно формы, кроме нескольких, исправлять не нужно, там одну общую процедурку можно поменять).
Извиняюсь за свою некомпетентность, но как подключить это дело к 1с?
(15) Извиняюсь, а вы программист?
Нет, я рядовой user=))
(17) тогда лучше обратитесь к программисту
Ваша обработка вошла в составУЛФин — Бесплатная конфигурация для Управления Личными Финансами в 1С 8.1
Пока только в одном отчете: «Сводный отчет по расходам». В форму выбора периода вниз добавил активную ссылку на Вас с копирайтом.
Если Вы против использования, пожалуйста, сообщите — мы исключим ее из состава конфигурации.
(19) Абсолютно не против, даже наоборот. Используйте где хотите и как хотите.
За ссылку спс.