<?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с: в режиме предприятия, затем файл-открыть…
открываете обработку и пользуетесь…
Вообще классная вещь.
Спасибо. Обработка работает как часики. спасибо ещё раз!!!!!!!!
Подскажите, пожалуйста, где можно скачать форму М29 для 1С: Бухгалтерия 7.7.
хммм…хороший вопрос =)
если здесь нету, то можно самостоятельно написать…
Че-то не открывается форма…
Вот такая байда пишется: яяя
(2) queit, реально для 8.0?
А у меня не открывает : не подходит версия .Кто поможет ?
Подскажите, пожалуйста. Для БХ8.2 скачать Форма М29_82? Как ей пользоваться ? Она просто не открывается . Может, я что-нибудь не так делаю ?
(12) какая у вас конфигурация?
Бухгалтерия предприятия 2.0.45.5
Вы скорее всего скачали обработку для Бух. 3.0. Она на управляемых формах.
Скачайте Форма М29 для 8.1, только её один раз нужно будет в конфигураторе открыть.
queit, спасибо, все получилось. Ставлю плюс, очень полезная обработка.
спасибо ))) если есть какие-то пожелания, то готов реализовать совершенно бесплатно 🙂
Скачала, у меня конфигурация КОРП. Обработка не запускается (((
Какая у вас версия КОРП? Какую обработку вы скачали?
По идее должно работать, но я не тестировал на КОРП (у меня отсутствует версия КОРП).
Добрый день!У нас версия КОРП 2.0.46.8. Скачали
Форма М29 для 8.2 (на управляемых формах) 17.01.2013
Форма М29 для 8.1 06.04.2012
Не работает ни одна(
(20) По поводу корп ничего не могу сказать. Если протестировали, значит, не работает в корп )))
Очень и очень жаль.
Уже сам сделал, а тут нашел ваш вариант. Скачал для управляемых форм, посмотрел, всё нормально работает и даже в БП КОРП, вот только не регистрируется в штатной обработке БП 3.0 «Дополнительные отчеты и обработки». Если кому надо будет могу свой вариант выложить с регистрацией.
Да, это было бы очень хорошо.
(24) queit, а на УТ 10.3 работать будет?
(25) MyPuK_OLD, скорее всего нет. Заточена под БП.
Спасибо! на УПП 8.2 идёт, макет можно допилить под себя…
Спасибо! Очень выручили.
Отлично 😉
не могу скачать