Проверка соотношений показателей регламентированных отчетов (8.2)




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

12 Comments

  1. sbv2005

    Отчет «Проверка соотношения показателей отчетов.erf» проверяет соотношения показателей регламентированных отчетов, указанных в виде формул. Результат выдается в виде отчета с возможностью расшифровки до места самого показателя.

    Перейти к публикации

    Reply
  2. evgefremov

    в связи с возникновением каких ситуаций рекомендуется применять данный отчет?

    Reply
  3. sbv2005

    Допустим, если бухгалтера знают, какие формулы взаимосвязи показателей между отчетами применяются при камеральных (аудиторских) проверках, то можно заранее проверить себя. Эти формулы можно найти на сайтах, посвященных рассмотрению вопросов аудиторской проверки.

    Reply
  4. Константин С.

    Штука интересная, но…

    что может отпугнуть бухгалтера пользоваться данно разработкой:

    1. Многие пользуют типовый конфигурации и снимать с поддержки не собираются.

    2. малое количестов шаблонов.

    3. Сложность в создании шаблонов, добавить интерактивность

    4. Было бы верхом совершенства если это формировалось из данных БУ, не из заполненных отчетов.

    Reply
  5. sbv2005

    (3) Вы пишете » … если это формировалось из данных БУ …».А из чего, по Вашему, формируются регламентированные отчеты? Из сводки погоды на неделю, что ли? Да, конструктора построения формулы пока нет, но есть описание, как составить формулу самому. Был бы спрос на отчет, то дописал бы и конструктор.

    Reply
  6. Константин С.

    4. » … если это формировалось из данных БУ …» — это значит именно из данных БУ, не из сохраненных бух.отчетов.

    Reply
  7. sbv2005

    (5) В этом универсальность отчета: можно сохранить несколько вариантов регламентированного отчета, затем проверять соотношения при различных вариантах учета.

    Reply
  8. sbv2005

    Одно из самых важных для бухгалтерии — проверка соблюдения ПБУ 18/2 в бух. и налоговой учете. Для этого существует определенная взаимосвязь показателей отчетности. Бухгалтера должны знать эти соотношения. С помощью отчета очень просто выяснить, выполняются ли требования ПБУ 18/2 или нет. Если нет, то необходимо выявлят проблемы в учете (смотреть суммы БУ, НУ, ПР, ВР в документах, ПНА, ПНО, ОНА, ОНО и др.) И лучше это сделать до того, как это найдет налоговая или аудиторская проверка.

    Reply
  9. sbv2005

    (5) Судя по тому, что вами минус не снят, расцениваю его как не знание вами предметной области бухгалтерии, налоговой отчетности и в частности ПБУ 18/02. Советую почитать!

    Reply
  10. mcb60

    (2) Задача очень интересная, не уверен, правда, что все бухи сразу проникнутся перспективами… Я так понимаю, у Вас есть бухгалтер, которому это помогло на практике?

    Reply
  11. sbv2005

    (9) Эта тема писалась по заданию бухгалтеров. Например, ПБУ 18/02 регламентирует установление связи между налогом на прибыль в налоговой декларации и налогом на прибыль, исчисленным для целей БУ, т.е. устанавливается связь показателей отчета «Декларация по налогу на прибыль» и показателями отчета «Отчет о прибылях и убытках».

    Reply
  12. AB3012

    Одно из самых важных для бухгалтерии — проверка соблюдения ПБУ 18/2 в бух. и налоговой учете. Для этого существует определенная взаимосвязь показателей отчетности. Бухгалтера должны знать эти соотношения. С помощью отчета очень просто выяснить, выполняются ли требования ПБУ 18/2 или нет. Если нет, то необходимо выявлят проблемы в учете (смотреть суммы БУ, НУ, ПР, ВР в документах, ПНА, ПНО, ОНА, ОНО и др.) И лучше это сделать до того, как это найдет налоговая или аудиторская проверка.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *