<?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='\
Просьба вопросы задавать здесь
http://www.adaptersoft.ru/index.php?name=Forums&file=viewforum&f=1
Делал как-то давно подобное, библиотечка к 1С есть для поиска фонетически похожих фраз. Если это аналогичная вещь, то наверняка полезная, в случае если предоставляет пользователю право выбора. Хочу сказать что невозможность ведения учета ТМЦ по методике, отличной от средневзвешенных цен, в типовой бухгалтерии 7.7 — это не аксиома, а недочет 1С, поэтому некоторые решают этот вопрос ведением учета в ТиС и выгрузкой проводок в БУ, некоторые дорабатывают типовую конфигурацию, а те кому бабла на то и другое жалко а работать ИНАЧЕ позарез нужно — вводят дубликаты ТМЦ с разными ценами и отслеживают движения по ним вручную.
Вроде не 1 апреля ???
Че за хз…, а где «Алгоритм нечеткого поиска ищет по вероятности совпадения слов» 🙁
RefKillRepeat6.ert, а сохраняться собирается NewReport41Basic.zip
Стрелы попутал?
угу, либо автор промохнулся и перезалил сюда «Новейший отчет», либо на сайте глюки
Пошел по ссылке, нашел сабж, запустил на справочнике контрагентов, уже отработано 13%, сделано добротно, результаты дает, ставлю ПЛЮС
нда, сорри, попутался. Ну уже перезалил. И вообще лучше вегда качать с моего сайта, там и версии новые будут и обсуждение.
Не плохо. Мне понравился. Ставлю «плюс»
Работаем с номенклатурой, порядка 3500 элементов
монопольно на локальной машине
показала, что нужно 20 млн операций
2% за более чем 3 часа работы
Комп intel Core2 CPU
6420 @ 2.13 GHz
2/13 ГГц, 1 GB ОЗУ
Это нормально?
Коэффициент похожести 0.9
шаг поиска 3
Это она мне почти неделю круглосуточно 3,5 тыс номенклатуры будет обрабатывать?
а в другой базе более 40 тыс — это 2,5 месяца?
а оно точно надо?
ну а куда деваться? Ты справку читал? на закладке «результат» кнопка есть.
хотя может ты накосяковал чего ? 3,5 тыр. эл-в это 12 лимонов с копейками, а не 20
посмотри за одно на производительность своего сервака. анализируй счетчики загрузки оперативки, свопа, проца, очередь записи на винт. Можешь узкие места увидишь. Про производительность вообще отдельная песня. Семерка втрой проц не ест например. Если хочешь чтобы оба лопатили, то скул юзать надо ну и т.д. В общем кодом уже быстрее ничего не сделаешь, я на оптимизацию и так много времени потратил, код вылизал. Раза в два быстрее от первых версий стало. Дальше тока админ. и организационными средствами рулить надо
Работаю монопольно на локальной машине
справочник номенклатура, при нажатии на кнопку [кол.элементов] показал 3958 элементов
при нажатии на кнопку [Новый поиск] изменил цифру количества элементов на 3197
и написал «надо выполнить операций» 10 220 809
удивительно
копия базы и справочник, те же, что и 10-го числа, а цифры другие, там точно 20 лимонов было…
справку читал? там два режима — новый поиск и продолжение по старому состоянию справочника. Может причина в этом?
в программе есть реальный способ увеличить быстродействие более чем в два раза только необходимо заменить текст в обработке
//добавим в список сохр. сост. поиска
Если сзСохрСостояния.Принадлежит(гВыбСпр)=0 Тогда
сзСохрСостояния.ДобавитьЗначение(гВыбСпр);
КонецЕсли;
Для сч1=м по колЭл цикл
// добавил текст
Если сч1+22> КолЭл Тогда // здесь если дубликаты встечаются рядом на 21 позицию
н=КолЭл;
Иначе
н=сч1+22;
КонецЕсли;
Для сч2=сч1+1 по н цикл // а здесь убран бессмысленный повторный поиск
и теперь вместо нескольких суток ишет не более двух часов.