<?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='\
Обеспечу ситуацию, когда а) не удастся подключиться б) не удастся получить ответ от подключенной базы…
…опишите хотя бы возможные проблемы при подключении…
Вопрос к похвалившим: вы в каком классе учитесь?
а вы попробуйте сначала на практике, а потом и ошибки увидете, 🙂 а то вам расскажи да покажи. Это пример для начинающих у которых нет даже книги или возможности узнать как подключить другую базу. Это первый шаг для начинающих. А вы ребят что то сильно взлетели ставши программистами. Вспомните себя когда у вас то же под рукой никаких подсказок, а работу сделать надо. Эх профессионалы, спуститесь на уровень новичка и поймете суть данной обработки 🙂
(3)>Вспомните себя когда у вас то же под рукой никаких подсказок
Вспоминаю. 2000-й год, купил комп, поставил 7-ку. Смотрел как баран на новые ворота на точки после переменных и тихо хренел. Книжек не было. Через пару недель уже был принят в члены проклаба.
+(4) и это была разработка, ктр. сейчас лежит на инфостарте
http://infostart.ru/profile/1329/projects/786/
ты рекламму делаешь свой наработке 🙂
Ты меня ни с кем не спутал? Глянь все мои разработки, там где-нибудь стоит «не забывайте плюсовать рейтинг» и т.п.? И вообще хоть какой-нибудь рекламный слоган найди…
+(7) ссылка была просто для иллюстрации, что там код не из 3-х строчек 🙂
(5) Ха ))) Я сейчас как-раз ковыряю КЛАДР… Объясни, почему первая обработка была именно вьювер? И до этого момента ты имел опыт программирования? Хотя помню когда сам начинал изучать Дельфи,тоже первая программа была с БД, вроде телефонного справочника ) Блин, надо к дельфям возвращаться, а то забыл уже совсем…(
а количество строк в коде не показатель программы ))
(9) До этого я знал 1С 2.0, 1С 6.0 (ничего общего с семеркой), Foxpro и Basic (обычный, не VB). Что такое объектно-ориентированной программирование я и близко понятия не имел. Да и программистом до этого не был, программил просто для облегчения своих служебных обязанностей никак с программированием не связанных.
А почему вьювер… скорее всего, что там код никак с 1С-кими метаданными не связан
кркткость сестра таланта 🙂
(11)>кркткость сестра таланта 🙂
Всё гениальное — просто, но не всё простое — гениально
так же как и гениально, не все просто ))
Эй специ что вы так все кричите, чел. kwl правильно сделал, от вас та такого дождешься так выложите демки запросите день и в результате хоть бы что нибудь написали? Мне лично сегодня очень помогло сразу разобрался и сделал как правильно!
Спасибо kwl +1
2 DDD2005
http://infostart.ru/profile/987/projects/1120/
Универсальный OLE-перенос объектов между БД с идентичными конфигурациями.
Доступ — зарегистрированные (надеюсь, регистрироваться религия позволяет?)
Не только подключение, но и полный код как и что сделать с конфе через ОЛЕ
(15) Вот это как раз не надо ля-ля. Демки-ху@мки…
Зайди в профайл Абадонны и осмотрись. Там хоть одна демка выложена? А под каждый ламерский вопросс выкладывать код — только нахлебников плодить. Да, все начинали с нуля, но кто включал мозги — пошел дальше, а кто только готовенькое брал так на нуле и нулем остался. Вот и вся диалектика.
Учится можно по разному: старательно переписывать чужое или действительно УЧИТСЯ на чужих разработках. Взять хотя бы тот же НовейшийОтчет здесь на форуме или разработки Рощина Антона, wolfsoft, (если Абадонны не в нюх) — вот действительно пример добротного программирования, на котором и поучится не грех.
(15) Если ты ДО этого не разобрался, имяе полный пакет документации — меняй профессию. Не скажу за Волгоград, а в Дубовке на рыбзаводе точно раздельщики рыбы требуются
Ребят, давайте жить дружно. Я помог молодому синтакис найти, и применить его, а уж как он его использовать будет, его проблемы. Поймите наши программы, они хороши бесспорно, но молодому не нужно вытаскивать из наших соображения в коде, то что ему надо. Че вы на парня навалились. Мне то же 13 лет назад говорили мол меняй профессию. Вам нет чтобы помочь молодым, понять нужна им эта трудная специальность или нет, а вы на корню забиваете людей. Да еще на молодых отыгрываетесь, Я написал, ко мне и обращайтесь.
(19) Да без проблем. Только, как ты можешь заметить, на товарища наехали не за наличие/отсутствие опыта, а прежде всего за выбранный тон в коммете. Хочет поупражнятся в острословии — прямой путь на мисту (там быстро получит по ушам). Надо усвоить, прежде предявления претензий, золотое правило — никто никому НЕ ОБЯЗАН помогать — и если человек это делает, то только по доброте душевной и при том жертвуя своим временем.
(19)>Да еще на молодых отыгрываетесь
Я отыгрываюсь не на молодых, а на наглых. NatahaB попросила по-человечьи — так я ваще обработку для нее написал и ей выслал.
Ой молодец, женщинам помогать надо, но будь проще раз профессионал, а парень тон не выбирал, потому как наезды сразу молодых пошли
>будь проще раз профессионал,
извини, но мне простым быть не нравится 😉
Ну ничем помочь не могу, потому и наблюдай, с каким тоном с тобой разговаривют. Как ты с людьми, так и они с тобой 🙂
А вот теперь, умники, любители кратких и гениальных решений, и просто скромные программеры — колитесь, как сделать тоже, но подключиться только через OLE к конфигуратору? Помню, как-то наткнулся в инете на это, но сейчас что-то не найду.
(25) Молодец Олежа — действительно хватит трындеть, пора бы и делом занятся.
Пиши в ком. строке слово Config — и всех дел 😉
И, стало быть, можно к каким-то его функциям обращаться по OLE — к тем же текстам модулей объектов, например?
Написано внешний отчёт , а в архиве текст.
Тогда надо писать текст внешнего отчёта.