<?php // Полная загрузка сервисных книжек, создан 2026-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) На данный момент ненужна, но в принципе код открытый, дописать имхо пару пустяков.
(1) Вот так! (это я про второй коммент). Откуда посетителям знать, что им нужно?!
(3) Я выкладываю обработки, которые создаю в процессе ежедневной работы. Специально затачивать пока нет времени, да и особого желания. Если есть нужда, можно договорится, как говорят: любой каприз за ваши деньги =)
PS. Если посетитель не знает что ему нужно, то это проблема посетителя, а не моя. Как то так.
Договариваться тут не про что — вещь довольно убогая, обычная дефектовка, коих пишешь десятками В ПРОЦЕССЕ и ценна ну разве что тем, что создает реестр накладных с отсутствующими счетами-фактурами, а вот создавать выданные счета-фактуры… ? вам не кажется это.. несколько ?.. как бы это помягче сказать..
(5) Прежде чем осуждать, поделись своим. Ты хоть скачал, посмотрел или так …за компанию, составил мнение по комментариям.
(3) первую фразу хорошо сказал
дальше — про время по нятно, про желание — лень замучала (зачем тогда вообще выкладывал). Чтобы с тобой договариваться — сначала покажи себя и свои сила ( а то вдруг у тебя желания не будет). За деньги и дурак сможет.
«PS. Если посетитель не знает что ему нужно, то это проблема посетителя, а не моя. Как то так.» — а вот это ты в корне не прав. На то ты и программист автоматизатор , чтобы улавливать на лету желание клиента.
(6) Коллега ! Вы считаете что, то чем вы «поделились» дает вам право на такой тон ?.. бесплатно.. совершенно..
Как бы это сказать помягче..
Лично я бы такими поделками «делиться» просто б постеснялся..
И еще — можно я оставлю за собой право высказывать свое отношение ?
(7) Чем Вам мой тон не понравился ?
В чем я не прав ?
Он выложил «свой труд» бесплатно.
Может на данном этапе для него это высший пилотаж.
У тебя все сразу получалось ?
Я автора тоже осудил за его комментарии.
У пользователя должен быть выбор.
А автор сдесь делает себе свое имя.
Хе-хе, вы даже не понимаете, что рекомендовать другому, что делать прежде, а что не прежде.. это как бы сказать помягче..
ЗЫ
А вот автору, на мой взгляд, «делать имя» стоило бы нормальными работами, а не профанацией, то бишь реестрами.. Но советовать не буду, надеюсь и сам он разберется, в чем пожелаю ему удачи..
(9) Ничего страшного. Мы все тут учимся.
Это как бы сказать помягче… деликатности.
(9) Да, конечно.. Только деликатность это нечто иное.. Скорей всего Вы имели в виду элементарную вежливость при общении..
(9) нагрубить я никому не хотел.
Если Вы восприняли мое замечание, как оскорбление — извините.
Разрушать всегда легче, чем создавать.
(12) Ну потрясающе.. Вы бы просто извинились и «делу» конец.. Вместо этого начинаете толковать о моем восприятии.. Мож лучше не надо ? А ?
Бл.., думал хоть на Инфостарте публика поадекватней .. Да где там :((
Как же вы с клиентами работаете ? Вы считаете себя большим авторитетом в 1С ? От рейтинга в зобу дыханье спирает ?
Ну ладно, хорош.. Можете не отвечать, все понятно..
(13) О Вашем восприятии я не толковал.
Это мысль была обращена ко всем.
Что Вы так близко все к себе воспринимаете ?
В (6) я высказал ОБЩУЮ МЫСЛЬ — ничего личного.
В последнее время просто здесь — не успел человек выложить что-то
его облаили…и ждут следующего.
Это как раз и относится к «Разрушать всегда легче, чем создавать.»
Ну уж точно не к ВАМ.
(13),(14) Именно так.
Мы тут все учимся деликатности.
(6) Наверное надо уточнить. Для меня на текущий момент: клиент — это моя бухгалтерия. Что они мне заказывают, то я и делаю. Пока проблем с угадыванием желаний не было =) А сюда я обработки выкладываю, для лично фана так сказать =). Поэтому если кому-то кажется что данные обработки есть «фи» и не стоят внимания, чтож просто не обращайте на это тогда внимания. Конструктивную критику принимаю, а вот комментарии типа «вам не кажется это.. несколько ?»… Нет, не кажется.
Последнее предложение это PS. =)))
(16) «Поэтому если кому-то кажется что данные обработки есть «фи» и не стоят внимания, чтож просто не обращайте на это тогда внимания.»
Ну и скажи тогда.. А зачем ты это выставляешь ? Раз полез на публику, то и к реакции готовься самой разнообразной, в том числе объективной и не самой лицеприятной.. И потом, твою бухгалтерию это удовлетворяет.. Ну и ладушки.. Но удовлетворяют ли твою бухгалтерию нумерация счетов-фактур, полученных таким образом ? Я даже не сомневаюсь, я уверен, что не удовлетворяет.. Наверное, в премануале стоило бы сказать об этом..
(18) Зачем я это делаю уже написал выше, мою бухгалтерию все целиком и полностью удовлетворяет, и это я считаю главным показателем в работе программиста, если клиент доволен — остальное вторично. А насчет объективности критики сильно сомневаюсь. Имхо, есть конструктив, когда тебе говорят, вот тут работает не так, вот тут не оптимально, а есть просто базлание и сотрясание воздуха, типа «кто виноват?» и «что делать?».
гы-гы, тя наверное, орденом надо наградить.. за то, что ты это убожество сюда выставил.. И при чем тут твоя бухгалтерия, ну никак не пойму, ты выставил на всеобщую оценку — получил эту оценку, плоха ли, хороша ли, но это оценка.. Других оценок я не вижу, видимо ты тоже.. Выставлю я и мне поставят оценку..
А насчет обьективности критики зря сомневаешься — тут даже критиковать нечего.. ты мне абсолютно неизвестен, т.е. ничего личного, просто назвал твою поделку тем, чем она является, функционально в том числе.. Профанация он и есть профанация..
ЗЫ.. про «базлание» отдельно.. это просто детское, не стоит переходить на оскорбления..
Орденом не надо, а убожество у то, что тебя в штанах. Не вижу смысла в продолжении полемики.
ну народ.. Вы отвлеклись от темы уже..
похоже на косячок-с)
докСчет.СтавкаНДС =ТекДок.Товар.ставкаНДС.получить(датаДок); // Получаем ставку НДС
(4)
Ваша обработка не учитывает, что для документов типа Реализация (комиссия) сч/фактура не выписывается!