<?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='\
Анализ закупок для ББУ8 и БГУ8 в разрезе КОСГУ, контрагентов и номенклатуры.
Перейти к публикации
Немного поигравшись с переименованием имен счетов ЕБСПУ был приятно порадован. отчет понравился, осталось потестить.
(1) Не понял насчет наименований? Я вроде их правильно написал — и для БГУ и для ББУ.
«осталось потестить» — Вы что мне плюсик без тестирования поставили? Зачем?
Отчет хороший, спасибо! Только бы ещё добавить группировку по группам номенклатуры, с бюджетников требуют такие данные.
Интересно, кто качает для 8.1?.. Неужели есть еще кто на ББУ8 работает?
Отчет понравился. Мы используем конфигурацию Воинская часть вер.1 (написанная на основе бухгалтерии бюджетного учреждения). Поэтому при открытии отчет выдавал ошибки о не обнаруженных элементах ЕБСПУ. Пришлось править наименования.
s,
{Справочник.ВнешниеОбработки.Форма.ФормаЭлемента(180)}: Ошибка при вызове метода контекста (Создать): Ошибка подключения внешних метаданных: Ошибка загрузки документа.
Внешний отчет не может быть прочитан текущей версией программы.
Вот что выдает в БГУ 🙁
(7) Вы наверно пытаетесь запустить для версии 8.1, а БГУ — это 8.2
😀 8.2 конечно
Замечательный отчет! Спасибо!!!
Спасибо за отчет!
Отчёт то что надо, главное с энтузиазмом поиграться в настройках
плюс
большое спасибо!!! отчет суперский мои бухгалтера в восторге
Спасибо за отчет.Бухгалтера как раз спрашивали.Вот бы ещё добавить группировку по группам номенклатуры-было-бы замечательно.
Отчет работает и это главное
Отчет очень хороший. Пригодится не только для бухгалтеров, но и для МТО. Надо протестировать на своей базе. Спасибо
Спасибо за отчет. Очень полезная штука! Бухгалтерам очень понравился этот отчет. Еще раз спасибо!
ОШИБКА!
Когда в отчёте убираешь галочку с «Номенклатура» то выдаёт ошибку:
{ВнешнийОтчет.АнализЗакупок.МодульОбъекта(406)}: Ошибка при вызове метода контекста (ПолучитьОбласть)
Область=Макет.ПолучитьОбласть(ИмяСекции);
по причине:
Область не найдена: Уровень4
PS: Бухгалтерия государственного учреждения, редакция 1.0 (1.0.7.2)
1С:Предприятие 8.2 (8.2.14.540)
(19) А смысл в таком отчете без номенклатуры? Ну в принципе конечно надо бы без ошибок делать… На днях исправлю — заодно и группировку по группе номенклатур добавлю
неплохо было бы в отчет добавить колонки с данными начального и конечного сальдо.
+(21) это как предложение для доработки
Спасибо за отчет очень пригодился
Не работает в БГУ 8.2 в 1.7.2
(24) Какая ошибка появляется? С какими настройками?
надо потестировать, с первого взгляда понравилось)
Отчет очень нужный. И не только для бухгалтерии. У нас закупками занимается и отдел информатизации и МТО. И ведут контроль за расходованием статей каждый месяц, каждый квартал. Спасибо. Нужно будет попробывать на своей базе.
спаибо,скачала и ушла тестить))
можно вопрос? уплата налогов… когда оплачиваем поставщику ,например по 223 или др. статье, то есть увязка счета и косгу. т.е счет 302,23 это 223 статья и т.д. когда же оплачиваем налоги, то конечно корреспондирующий счет 303, на котором расходные косгу не участвуют. как-нибудь можно придумать, что если это налоги, тогда брать из Дт характеристика движения по дебету, ну или как-то по -другому, я не знаю. просто оплата всех налогов встает не на свои места.вы конечно может скажете, что это анализ закупок,а уплата налогов это не закупки, но ведь начисления налогов сюда попадают, тогда может можно поколдовать и с оплатой?
Вообщем то пригодится но если бы сделал отчет по исполнению договров т.е. допустим договор заключен на 500000 руб а оплатили по нему 300000 и остаток то для нас такой очень нужен
Спасибо. Классный отчет.