Экономика: показатели финансовой устойчивости предприятия




Принцип обмена данными из 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='\

24 Comments

  1. gutentag

    !

    Reply
  2. Арчибальд

    А у автора в заначке, похоже, еще много всякого :))

    Reply
  3. Arwis

    (2) с 2000 года я, в основном, занимаюсь, частными конфигурациями, не типовыми. Так что, «в заначке» 🙂 много но не для типовых

    Reply
  4. Поручик

    неплох бы на 8-ку портировать.

    Reply
  5. kivduts

    неплохо

    Reply
  6. marsohod

    Ставлю + хотя и выдала:

    НачОСС = (НачСИ-НачВА)/НачОА;

    {Эккоэффинансовойустойчивости.ert(103)}: Деление на 0

    Наверное, делали по книге В.В.Бочарова «Финансовый анализ» 😉

    Следует только добавить, что этот отчет имеет смысл использовать лишь после того как полностью сошелся бухгалтерский баланс в 1С. Ведь эта методика основана на его данных.

    В моей личной практике было только одно предприятие, в котором сошелся баланс в 1С — это фирма-франчайзи где я работал. Ни у кого из клиентов этого добиться не удалось, несмотря на все мои старания и усилия бухгалтерии. Баланс не идет уже по начальным остаткам… Воруют-с…

    Reply
  7. marsohod

    Наверное, делали по книге В.В.Бочарова «Финансовый анализ» 😉

    Следует только добавить, что этот отчет имеет смысл использовать лишь после того как полностью сошелся бухгалтерский баланс в 1С. Ведь эта методика основана на его данных.

    В моей личной практике было только одно предприятие, в котором сошелся баланс в 1С — это фирма-франчайзи где я работал. Ни у кого из клиентов этого добиться не удалось, несмотря на все мои старания и усилия бухгалтерии. Баланс не идет уже по начальным остаткам… Воруют-с…

    Ставлю + хотя и выдала:

    НачОСС = (НачСИ-НачВА)/НачОА;

    {Эккоэффинансовойустойчивости.ert(103)}: Деление на 0

    Reply
  8. Арчибальд

    (8) «Несходимость» баланса по начальным остаткам у клиента — это что-то из сферы общей патологии. Ладно еще по конечным — «кривые руки» никто не отменял. У нормального бухгалтера с одноэсиной на нормальном сопровождении баланс сходится всегда.

    Reply
  9. Arwis

    (7-8) Да, банальный недосмотр. Но я как-то не думал, что у предприятия могут отсутствовать оборотные активы. 🙂

    На счет В.В.Бочарова не знаю. Делал по какой-то методичке, лет 8 назад.

    Извиняюсь, пропустил важную деталь — отчёт актуален при закрытом периоде и «подбитом» балансе.

    (9) Согласен, что баланс сходится всегда (кроме тех случаев, года он не сходится. Но это зависит от программеров)

    Reply
  10. WKBAPKA
  11. WKBAPKA

    2(Поручик): нефиг делать в 8-ку портировать

    http://infostart.ru/projects/4094/

    Reply
  12. WKBAPKA

    2(7): моя любимая тема. сча порвем боян.

    Во первых, делать финансовый анализ хозяйственной деятельности на базе данных бухгалтерского учета в условиях Украины и России не благодарное дело. Результаты такого анализа могут быть интересны разве что аудиторам, и то не понятк с какой целью. Для потенциальных инвесторов такой анализ не показывает реальной картины предприятия. Для руководителя и собственников зачастую это вообще филькина грамота.

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

    У предприятия не могут отсутствовать оборотные активы, это тоже самое, что у человека отсутствует кровь. Вспоминаем, что входит в оборотные активы: денежные средства и их эквиваленты, товары и запасы на складах, дебиторская задолженность. Если у предприятия всего этого нет, а есть только необоротные активы, то фактически такое предприятие банкрот, да и не понятно, чем это предприятие занимается. А если такие и есть компании, тогда нет смысла под них делать финансовый анализ.

    Теперь по существу:

    Наличие собственных оборотных средств, что под этим понимается? Ведь оборотные активы формируются как за счет собственного капитала так и заемного. Как автор посчитал источник формирования собственных оборотных средств. От суммы собственного капитала отнял долгосрочные обязательства + текущие обязательства и необоротные активы? Величина оборотного капитала может превышать величину сосбственного капитала. Или под этим понимается основной капитал, формируемый за счет собственного и заемного (долгосрочного)? Не понятно. Т.к. если автор подразумевает таки собственный капитал, тогда формула у него не правильная.Т.к. отнимать от собственного капитала величину необоротных активов нельзя, т.к. обычно, необоротные активый пополняются за счет долгосрочного заемного капитала.

    Общая величина основных источников, если внимательно посмотреть на формулы, дык это общая величина по пассивам предприятия.

    Теперь перейдем к коэффицинтам финансовой устойчивости. Коэфициент обеспечения собственными средствами, это что? Коэффициент текущей ликвидности или абсолютной? Выделяются ли в этом коэффициенте абслолютно ликвидные средства? Это что, сравнение сумарных оборотных средств и текущих обязательств? Коэффициент обеспечения материальных запасов собственными средствами, это что, рабочий капитал?

    автору незачот и минус. по такому финансовому анализу ничего нельзя сказать, директору показывать не советую, засмеет.

    Reply
  13. WKBAPKA

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

    Reply
  14. WKBAPKA

    для того и есть разработки типа моего финансы и анализ, что бы не придумывать велосипед. А для нормального финансового анализа нужно делать поправки в учете, организовывать то, что называется управленческим учетом. А это решают другие системы, например, эта:

    http://www.kubik-lite.com

    Reply
  15. WKBAPKA
  16. Arwis

    (11-16) !!!! +++ — ??!? !!!!!!!!!? — !!!!?!!!?!!!!! + ??!?????!??? !? —

    ?

    🙂

    Reply
  17. KEVE

    (14) ставит плюсы тот народ, который сам не»может сморганить». А появившиеся программы ускоряют работу данного народа, ведь даже при наличаи «книжек» вручную это дело трудоемкое, а времени всегда не хватает.

    Reply
  18. WKBAPKA

    ничего против вашего мнения не имею, но данная разработка не представляет никакой ценности.

    Reply
  19. Arwis

    (19) По этому она и бесплатна.

    Reply
  20. WKBAPKA

    Arwis я написал это все не для того что бы показаться умнее вас, просто действительно, такой финансовый анализ не дает никаких полезных результатов.

    Reply
  21. marsohod

    (10) на «(9) Согласен, что баланс сходится всегда (кроме тех случаев, года он не сходится. Но это зависит от программеров)»

    От программеров это не зависит. Знаю два способа доказательства (притом опробованных на практике). Но здесь их публиковать не буду по коммерческим соображениям 😀

    Reply
  22. Arwis

    (22) Если _автоматический_ баланс не сходится, то из-за того , что в формировании результатов _не_были_учтены_все_счета/субсчета_.

    (Те кто составлял свой план счетов и писал свои формы баланса, знают это. В типовых формах есть ошибки 🙁 )

    Вторая причина — несходимость дебета с кредитом — устранена путём автоматизации двойной записи в 1С и, поэтому не может быть причиной несходимости баланса.

    Reply
  23. gallant

    здорово

    Reply
  24. DimaP

    Очень интересно )

    За 2009 — стабильно, если добавить 2 месяца 2010- кризис.

    Может пригодится )

    Reply

Leave a Comment

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