<?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С:Бухгалтерия бюджетного учреждения 8
1С:Бухгалтерия государственного учреждения 8
1С:Комплексная автоматизация 8
1С:Управление производственным предприятием 8
Афигеть, универсальность!!!!
Фиг его мам знает, мне не видно, как я голосовал 🙂
А вообще, зачет, альтернативы нет — только ставить минус
🙂
А вообще, нажимая на «звезду» имею или -4 или -3..
🙂
Автор, если че, это тест
http://forum.infostart.ru/forum17/topic96954/
Просто отличнейший отчет. Так не хотелось самому писать. Автору респект и уважение — очень выручил!
Че-то я не понял. Минут 10 провисел отчет формируясь. Срубил процесс. ЧЯДНТ? БП 3.0, настройки по умолчанию
Оказывается на файловой очень долго делает. В SQL быстро. База почти 10 ГБ.
Большое спасибо за обработку
Добрый день! отчет отличный. беда пришла откуда не ждали — работает только под полными правами доступа. голову уже сломала в чем причина — тянет отчет все из регистра бухгалтерии «Хозрасчетный». у финансиста к нему полный доступ. однако раздел с интервалами упорно не формируется — ругается что параметр «Дней с даты отгрузки» не найден. этот параметр явно не доступен для фина — где открыть доступ и на что дать права уже сломала голову. отчет формируется в урезанном виде — на картинке затерла договоры.
Добрый день!
При подключении выходит ошибка:
Невозможно подключить дополнительный отчет из файла.
Возможно, он не подходит для этой версии программы.
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
конфигурация:
http://v8.1c.ru/buhv8/)
http://www.1c.ru)
Бухгалтерия предприятия, редакция 3.0 (3.0.41.51) (
Copyright (С) ООО «1C», 2009 — 2015. Все права защищены
(
Подскажите, пожалуйста, этот отчет выгружается в Эксель?
Обнаружилась ошибка. Не все данные попадают в отчет. В случае переоценки валюты, документ может не попасть в отчет.
В запросе «ВТ_ОстальныеЗадолженности» нужно поменять условие на
«НЕ ВТ_Задолженности.РегистраторОтгрузки В
(ВЫБРАТЬ
ВТ_ПерваяЗадолженность.РегистраторОтгрузки
ИЗ
ВТ_ПерваяЗадолженность
ГДЕ
ВТ_ПерваяЗадолженность.Контрагент = ВТ_Задолженности.Контрагент)»
Можно добавить и договор, но мне хватило и так.
(10) Сделал для Вас такую возможность, чтобы можно было под урезанными правами запускать его, но нужно обязательно для урезанных прав дать права на чтение Регистр.Хозрасчетный, ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные, все документы, все справочники. Права на просмотр этих объектов можете дать выборочно.
(13) Любой отчет из 1С можно выгрузить в Эксель:
—Для БП3.0 платформа 8.3, выделяете любую цифру в отчете, далее кнопка «треугольник вниз» в самом правом верхнем углу рядом с желтым значком 1С. Далее Меню ФайлСохранить какВнизу окошко «Тип файла» выбираете «Лист Excel», вбиваете «Имя файла:» в одноименном поле. И нажимаете кнопку «Сохранить».
—Для БП2.0 платформа 8.2, выделяете любую цифру в отчете. Далее Меню ФайлСохранить какВнизу окошко «Тип файла» выбираете «Лист Excel», вбиваете «Имя файла:» в одноименном поле. И нажимаете кнопку «Сохранить»
(13) Да, любой отчет из 1С можно выгрузить в Эксель:
—Для БП3.0 платформа 8.3, выделяете любую цифру в отчете, далее кнопка «треугольник вниз» в самом правом верхнем углу рядом с желтым значком 1С. Далее Меню ФайлСохранить какВнизу окошко «Тип файла» выбираете «Лист Excel», вбиваете «Имя файла:» в одноименном поле. И нажимаете кнопку «Сохранить».
—Для БП2.0 платформа 8.2, выделяете любую цифру в отчете. Далее Меню ФайлСохранить какВнизу окошко «Тип файла» выбираете «Лист Excel», вбиваете «Имя файла:» в одноименном поле. И нажимаете кнопку «Сохранить»
(8) Отчет оптимизирован для больших баз данных, которые в 99% случаях работают на SQL. Файловый вариант базы всегда исполняет любые запросы намного медленней.
(14) Это не ошибка, т.к. переоценка валюты очень специфическая операция. Вам необходимо добавить больше хозрасчетных счетов в параметры запуска отчета для анализа данных. Запрос переписывать не нужно.
этот отчет формирует в разрезе дебиторскойкредиторской задолженности или можно сформировать дебиторская минус кредиторская?