<?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='\
а для чего может понадобиться сей инструмент да еще и платный?
особенно когда навалом халявных решений на эту тему ?
а для семерки???!!!
Инструмент бесплатный для личного пользования. На мой взгляд данная обработка удобнее в работе, чем аналогичные.
Выполнен значительный объем работ, качественно (проверил на БП)
В пересчете по курсу 1200руб./час выйдет неплохая сумма для заказчика, так что 1000 руб. — это бесплатно в сравнении с реальной стоимостью заказа обработки такого плана. К тому же дополнительно идет 50/50 = Автор/ИС
>Обработка позволяет подсчитать количество объектов в информационной базе: отдельно количество документов по видам, отдельно количество элементов справочников по видам, количество записей в регистрах сведений и накопления.
Афтор, а в чем коммерческая выгода от этой обработки. За что платить?
Как я понял 1000 — это выражение благодарности, никакого вымагательства или впаривания )
Где выгода в использовании обработки:
1. Зная объем ИБ Вы можете оценить время, необходимое на выполнение некоторых операций с ИБ (выгрузка, удаление помеч. объектов, обновление). Зная время уже можно планировать свой рабочий день.
2. Зная темп роста ИБ можно спрогнозировать время, когда объем базы превысит некоторое критическое значение. Зная эту величину можно обосновать закупку нового оборудования или модернизацию старого. Финансисты очень любят объективные оценки.
Люди, будьте внимательнее! Не обвиняйте автора без причины!
Обработка бесплатна!
1000 руб — это ВОЗМОЖНОСТЬ отблагодарить автора, не более.
to gilv: Если ты не видишь смысла в какой-то вещи, это не значит, что его нет.
Пример для тебя по данной обработке: при выполнении масштабного внедрения НЕОБХОДИМО предоставлять заказчику информацию о росте ИБ, причинах и тп.
Обработка поможет в таком случае
(2) видел и для семерки, только не помню где. даже график там рисовался какой-то.
Базопузомер. Для семерки. Написан в 2001-2002 годах. Идею развивать не стал.
Графики действительно рисовал…
Базопузомер имел большой успех когда переходили на новые стандарты учета. Он позволял оценить время перелопачивания базы.
(8) >> при выполнении масштабного внедрения НЕОБХОДИМО предоставлять заказчику информацию о росте ИБ
gilv привык и, главное, умеет считать эти параметры другими средствами 🙂
(10) Хорошая вещь была. Популярная. Спасибо.
(11) Кстати, первая реакция не неё была «а нафиг кому оно надо?»
А вообще я сперва на небезизвестном кубанском форуме изложил идею и предложил энтузиастам разработать такую штуку.
Но в то время 1С-ники были крайне ленивы. И занимались больше вопросами доказательства теоремы БЖС.
Потому написал сам.
Кстати, термин «Базопузомер» был подхвачен Microsoft и появился «Базопузомер для Аксапты». Что вызвало бурю негодований сообщества 1С. Предлагали даже подать на Билла Гейтса в суд… Поисковики всё это выдают.
(12) >> Но в то время 1С-ники были крайне ленивы.
Они и сейчас таковы. Просят «Дайте идею разработать!» Даёшь идею, они носом крутят.
(13) Я знаю. У меня идей много. Но сам не тяну уже. Стар стал. Даже суперстар.
Одна идея вообще позволит по моим оценкам заработать денег с целью выкупа яхты у Абрамовича. Но так никого и не смог увлечь… Сам начал — но не потянул. А яхта оказывается и не особо 1С-ников интересует. Напрягаться они не любят…
ICQ#: 112603406
(14) У меня своя идея по зарабатыванию кучи денег есть 🙂
10,14 … а для Базопузомер’а одну вещь дописать можете?
Меня интересует вкладка бухучет => При выводе печать (о документах) нужно еще добавить таблицу
Бухгалтерского учета:
Код Наименование Количество Процент
… и тогда вообще вся информация будет…
Один вопрос: что есть «незакрытые» записи в вашей терминологии?
Незакрытые это такие записи, у которых сумма по всем измерениям <> 0. Например есть приход, а нет расхода. Или есть приход и расход на одну и ту же сумму, но реквизиты в измерениях различаются.
Идея конечно гуд! Помнится и версия 7.7, но так и хочется добавить:
1. Результаты хотелось бы экспортировать в Excel, так как отсет не хранит сведения с предыдущего отчета, касательно справочников.
2. Различные графики украсили бы этот отчет ещё на 100%, и что особо любят видеть директора так это графики и темпы роста базы — а следовательно работы с базой сотрудников — а следовательно время затраченное сотруднкиами и т.п.
3. Статистику по времени записи документов, какое время самое пиковое в дне, неделе, месяце. Соответственно от типов документов и будет видна работа пользователей.
4. Справочники тоже имеют ТЧ и их хотелось бы тоже видеть.
5. Количество созданных элементов справочником можно получить из Журнала регистрации, благо сейчас есть много способов туда залести.
Конечно, всё это уже тонкости, но на то и универсальность что бы уметь всё, как собственно и прославиться как наш «Тот» 8)
Надо бы добавить статистику по регистру бухгалтерии.
По рекомендации zzz86 добавил статистику по регистрам бухгалтерии и расчетным регистрам.
Какой облом!!! 🙁 Увидел — загорелся, думал вот это вещь!!! (Работаю с большими базами, для меня данная тема актуальна)
За идею конечно — однозначно «+», а за реализацию «-«.
Во первых обработка совершенно не бесплатна — в демо версии стоит ограничение на 100 000 объектов. Сначала попробывал на своей рабочей базе — не пошло. Потом решил попробывать в маленькой базе, которую перенес только остатки со старой. В последней базе (УТ) было с пару десятков документов оприходования, общее количество строк — 32 313, 9 документов Переоценки товаров в рознице (в общем числе 27 658 строк) и 2 документа Установки цен номенклатуры (14 218 строк). Обработка ДЕВЯТЬ РАЗ выплюнула сообщение, что превышен лимит в 100 000 объектов, после чего в конце вообще изрыгнула ошибку (см. на скрине).
Никаких отчетов, нет каких-либо расчетов, связанных с объемом файлов базы…
Превышен порог в 100 000 объектов.
ОК
{ВнешняяОбработка.ОценкаОбъемаИБ(109)}: Преобразование значения к типу Число не может быть выполнено
Re:аниматор и lexxxus благодарю за обнаруженные ошибки. Данные ошибки были исправлены.