<?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='\
Это плюс однозначно. Именно такой обработки еще не разу небыло на ифостарте ….
Да согласна, такой обработки точно не было. С пользовательской стороны не очень удобно, требует заполнение определенной строки в первичке 1С. На Инфостаре есть более удобные, с заполнением разово и использованием многократно всех реквизитов поставщика(включая ФИО руководителя и бухгалтера) и выбором распечатывания входных документов в виде акта по услугам или товарной накладной. Но у всех один недостаток — в номере акта или ТН стоит префикс сч/ф.
Жаль, что автор ограничился лишь Товарами. Для Материалов подобные «печатки» тоже нужны.
Цена в с/ф выходит неверная, в ТОРГ-12 правильно, а в с/ф нужно подправить.
спасибо и респект
Полезно, а что не устроит можно подправить. Всё не самому корячиться.
Полезно, а что не устроит можно подправить. Всё не самому корячиться.
Согласен все ж не заново писать. Спасибо.
Да проходили это уже не помню в каком году. Правда так я и не заморочился на ВПФ. В конфе пару процедур, да 2 кнопки в приходе. А данный сабж действительно правильный в том смысле что конфа не страдает. Вот теперь знакомому вытащу, поглядим. Народ говорит какие-то ошибки с ценой в с/ф.
Вот блин думал все красиво и в черном ящике действительно будет то что написано. Проблем две: первая — скаченный файл не имеет расширения вообще. Пришлось тыкать ручками всякое, авось попаду. Попал. Но дальше ждало действительно разочарование — это не внешние печатные формы, это обработка, которую из прихода не откроешь. В ней просто выбирается документ поступления и дальше осуществляется печать. Если бы это были внешние печ.формы, то они просто бы зацепились к документу Поступления к кнопке Печать. И все. Не буду ругаться больше, может кому и это шоколад…. ИМХО
Если кто-то не в курсе (asg1975), сообщаю — у документа Поступление товаров нет кнопки Печать! Если бы была, уж наверно бы сделал внешней печатной формой. Сам все прекрасно понимаю, что не удобно.
Выкладываю обновление (с новой формой СФ), сумма всегда рассчитывается по ставке 18%. Возможно исправлю на досуге…
В связи с выходом новой формы счета-фактуры с 25 января 2012 года очень хотелось бы изменить и Вашу обработку, т.к. пользуемся постоянно…
очень нужна эта штуковина! в связи с Постановлением Правительства РФ от 26 декабря 2011 года N 1137 форма счет-фактуры изменилась!!! а значит программа устарела, если я сейчас скачаю эту программу, то боюсь после 31 марта 2012 года обновления не будет, она придет в негодность,как быть?
У кого нибудь есть такая же обработка для 1с 8.2 БП ред 2.0 ?