Отчет по ликвидным средствам для 1С Предприятие 7.7 (Торговля, Комплексная)




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

11 Comments

  1. Доня

    Это не Бухгалтерия 1С !

    Не увидела, а жаль.

    Reply
  2. MrFlanker

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

    Просто нужно собрать все ликвидные средства (еще называют Бизнес капитал).

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

    Reply
  3. 11k65m

    Так я думаю по бух.балансу можно сделать более точный анализ и сделать выводы. Хотел узнать анализируются ли наша задолженность поставщику, ну и счет 91 «Прочите расходы и доходы», где много чего может быть?. А за анализ молодец.

    Reply
  4. Зеленоград

    Посмотрите семёрочную конфу «Финансовое планирование» (да, ей 10 лет. Но в этой разработке Инталева сочетаются и правильная методика учёта, и готовые инструменты анализа, и даже ориентиры основных экономических показателей предприятия).

    Reply
  5. MrFlanker

    Управленцам часто совершенно плевать на бухгалтерский баланс,… интересует именно управленческий баланс, и чем лучше он оценивает стоимость активов тем лучше.

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

    Тем более что мир уже много раз доказывал что даже именитые методики расчета, оценки именитых оценщиков летят в пух и прах от суровой реальности жизни…. оценивать баланс, этот как погоду предсказывать.

    Этот отчет лишь небольшая попытка абстрагироваться от счетов бух. учета и просто посчитать баранов.

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

    Плюсом этого отчета является то что он выдает ежедневную, ежемесячную оценку деятельности.

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

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

    В свою время находили косяки вызванные ошибками с валютными операциями, случайными РКО Прочее (без указания контрагента, деньги ушли из кассы и все и никто не должен).

    Reply
  6. 11k65m

    Если ты управленец, тебе не должно быть все равно какие у тебя активы собственные или заемные, тогда предётся и еще % высчитывать, или товар на складе лежит, а ты должен поставщику н-ю сумму, смысл такого анализа, еще нужно высчитывать просроченные долги, т.к. клиент пользуется нашими деньгами, а если средства заемные, то % мы платить будет, изыскивать резервы.

    С этим совсем не согласен (В управлении торговлей 7.х, есть куча уязвимостей создать документы так что деньги пропадут, и ни в каком отчете по затратам это не отобразиться. ) т.к. ведомость по кассе хоть как покажет ПКО или РКО, (про регистры не забывай.) В ник движение по любому отобразиться.

    Reply
  7. MrFlanker

    (6) 11k65m,

    Все делом в том что я и есть управленец, вот уже лет 15, годовой оборот порядка 3 млн USD, штат 25 человек.

    Кое какое представление о торговле имею, поэтому мне не нужно рассказывать.

    тогда предётся и еще % высчитывать, или товар на складе лежит, а ты должен поставщику н-ю сумму, смысл такого анализа,

    Как раз таки это и не нужно!!! Для отслеживания динамики чихать на взаиморасчеты… я считаю в целом ликвидные средства (то что можно продать, использовать, то что имеет ценность, просто с меньшей детализацией… упрощенно так сказать, долги например можно вообще с коэфициентом 0,95 считать, если процент невозврата 5%).

    т.к. ведомость по кассе хоть как покажет ПКО или РКО, (про регистры не забывай.)

    Извини, но ты мыслишь как технический специалист. Скажи мне как управленец узнает значение регистров… и вообще зачем ему такое слово знать????

    Я говорю про реальную ситуацию когда например сделан документ РКО Прочее…. (один из десятков тысяч, деньги из кассы ушли, (регистр «деньги»), а взамен ничего не пришло (регистр «товар» или регистр «долги»).

    В отчет по расходам не попало. Все может в дело ушли, может кассир ошибся, а может просто кража.

    Или ошибка какая-нибудь…. например партия не та списалась… (ну хотя бы в отчетах по продажам можно засечь,.. если конечно специально каждый документ проверять ибо в целом можно и не увидеть)

    Или например валюту купили по хренокурсу… или забили с ошибкой.

    И в 7-ке и 8-ке можно создать документы.. уменьшающие ликвидность, и они не попадут в отчет Затраты.

    Например в 8-ке можно поступление услуг сделать и не выбрать статью затрат…. все контроль потерян.

    Reply
  8. MrFlanker

    Еще раз проиллюстрирую идею на примере:

    Если каждый день подбивать баланс ликвидных товаров, то по его динамике можно получить данные о прибыли или убытков. Формула баланса каждый управленец составляет сам — на то он и управленец. Никто не запрещает конечно пользоваться услугами бух. учета, аналитиков, проводить аудит и делать оценки.

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

    Если Предприниматель Чхкримазан Мигаевич Замухрдиянов купил стройматерилов на сумму 1000 доларов, то он в любой момент времени ожидает увидеть:

    — либо товары на складе

    — либо деньги на рублевом расчетном счете

    — либо деньги на валютном расчетном счете

    — либо деньги в кассе

    — либо долг прораба Иванова на сумму

    — либо новый велосипед в гараже

    — либо ощущение головной боли, после хорошей пьянки

    ======================

    Либо все это вместе но на сумму не меньше 34000 руб

    Reply
  9. MrFlanker

    Эта публикация посвящена лишь тому что бух. баланс не единственный и не самый удобный

    Вообще на сколько я понимаю он сделан для того чтобы вас было проще обдирать государству.

    Также интересна для размышления идея включения нематериальных активов в управленческий баланс под разными коэффициентами:

    Пример формулы управленца:

    =============================

    Товар на складе — 0,98 (2% порчи, недостачи)

    Деньги в кассах — 1,00 (это самое приятное)

    Деньги в банках — 0,97 (3% обналичка, проблемы снятия)

    Долги — 0,95 (5% невозврат догов)

    Наши долги — минус 0,95 (кого-то то же можно кинуть :-))

    Хорошие Менеджеры 100 000 руб за шт (потерял 3 увидел управленческий убыток 300 000 руб)

    Супер-клиенты 100 000 руб за шт

    ……критерии могут быть произвольные…..

    Техническая задача состоит в том чтобы дать точную оценку управленцу по его критериям.

    Reply
  10. 11k65m

    В 7-ке нельзя создать документ чтобы он не попал в отчет Затраты, он все равно сделает движение (100%). Мериться п…..ми я не собираюсь, но так так я тоже работаю в фирме в десятки раз превышающим Ваш оборот и пишу отчеты, то понимания где, что, откуда и зачем берется. Дальнейшая дискуссия бесполезна. Удачи в работе.

    Reply
  11. MrFlanker

    (10) 11k65m,

    Мерится с вами пиписьками никто и не собирался. Ваша техническая квалификация меня тоже не коим образом не беспокоит. За пожелания спасибо, если это не сарказм.

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

    Единственное с чем я могу не согласиться (тут все таки по вашей части):

    — В 7-ке вообще нету отчета Затраты (и регистра такого нету)

    — А в 8-ке можно сделать документы так, и они не попадут в этот отчет (и движений по регистру конечно не будет)

    p.s. Ну по крайней мере из того что я знаю.

    Reply

Leave a Comment

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