Закрытие отрицательных остатков




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2025-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='\

40 Comments

  1. dvv01

    Интересно получается — минусы из воздуха…

    явно двойная бухгалтерия.

    ИМНО, если есть минус, то где-то есть плюс (например, пересорт), минус закрыли липовым поступлением, оплатили?, и за излишек кому-то переплатили?, плюс угроза штрафа при любой встречной проверке — больше тянет на отрицательную оценку в духе вредных обработок.

    Reply
  2. WiseSnake

    (1) Согласен!

    (0) Объясните чем бухи довольны? Тем что они не выполняют своих прямых обязанностей? А их косяки прячет ваша поделка? Это не решает проблемы!

    Возможно у Вас есть объяснение КАК товар получается из воздуха?

    Reply
  3. Tatitutu

    (1,2) это уже трагедия учета и его организации.

    А это для проверяющих.

    Док.Комментарий = «Сформирован автоматически волшебной обработкой! » + Строка(ТекущаяДата()) + » (» + Строка(ТекущееВремя()) + «)»;

    Reply
  4. poppy

    (2) Возможно у Вас есть объяснение КАК товар получается из воздуха?

    Вот одно из объяснений: http://infostart.ru/blogs/612/

    Reply
  5. anton.fly7

    ну что вы как маленькие!

    вы, все возмущающиеся по поводу прихода товара из воздуха, ОБЭПниками подрабатываете по совместительству!?

    нужен товар из воздуха, я сделал! кому не надо такой обработки — смысл писать глупые вопросы?

    Reply
  6. Bux2

    Зря напали.

    -Двойная бухгалтерия — да.

    -Пересорт — не факт, скорее нет.

    -Угроза штрафа — да, но «задача бухгалтера — сгенерить бухгалтерские документы так, чтобы учет выглядел правдоподобно.» poppy. И поставщик будет правдоподобный.

    -Бухи не выполняют своих прямых обязанностей — не факт, скорее нет. Как было бы просто отражать в учете реальные хозяйственные операции. И проводить реализацию товаров, реально приобретенных.

    -Как товар получается из воздуха — не тот вопрос. Правильный вопрос — кому это надо. Обычно, руководителю или учредителю. Не буху и не программисту, это точно.

    Reply
  7. KEVE

    Согласна с Bux2 бухам точно товар из воздуха не нужен ни в переносном ни в прямом смысле. У них своих замарочек навалом. А благодаря таким как anton.fly 7 и их программам ускоряется работа для бухов и устраняются ошибки при ручной корректировке остатков. Респект Вам Антон

    Reply
  8. nad83

    Поддерживаю, предыдущие 2 коммента, кто не бух, тот не поймет. То, что минусы не косяк буха — 100%. Особенности учета скорее. Полезная обработка, экономит время. Спасибо Антону.

    Reply
  9. kivduts

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

    Респект Антону.

    Reply
  10. anton.fly7

    на заре моей работы с 1с, поступало предложение написать 2с Бухгалтерию 🙂 вводишь изначально сколько готов платить налогов и оборот и прога выдеет весь комплект документов )))

    Reply
  11. ublba

    Есть доп. обработка, которая моло Того, что делает приходные документа, так еще готовит и с/ф + может разбить партию по 100 тыс рублев, для налового закупа

    Reply
  12. dvv01

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

    — поступило 10 шт от одного поставщика, 10 шт от другого, продали 21 шт — и чей

    же косяк?

    При проведении по партиям 1С честно ругнется, а теперь вопросы к автору:

    1. Какую прибыль получили? сколько надо платить налогов?

    2. сколько заплатим поставщикам за реализованный товар? и как устранить возникший перекос в платежах?

    если учет двойной, то для чего было городить все? — есть масса обработок типа «обнуления регистров накопления» — сделали и забыли — минусов нет, а что

    делать с фиктивными поступлениями 9ак их закрыть/оплатить — убрали минус с остатков, так эта разница просто вылезла в другом месте теперь надо аналогично убирать перекос во взаимозачетах (… а как лечить живот вы уже знаете (с)) 🙂

    пока что лично мне дико не хватает что-то между ведомостью по товарам на складах и избирательным восстановлением партий для отдельной номенклатуры, ну или корректным перерасчетом партий при неоперативном перепроведении отдельного документа, а дальше все равно ручками — потому как не Хоттабычи продавать больше чем в поступлении

    А пока приходится ручками…

    Reply
  13. poppy

    (12) Какой-то странный подитог. Явно не про обсуждаемую обработку.

    Вопросы заданы хоть и не в тему, но попробую высказать свое мнение.

    > продали 21 шт — и чей же косяк?

    Косяк в самом вопросе. Прежде чем проводить по партиям, нужно закупить 1 шт задним числом (фиктивным документом). Документ можно создать, например, этой обработкой.

    > 1. Какую прибыль получили? сколько надо платить налогов?

    Прибыль и налоги посчитает программа после проведения по партиям.

    > 2. сколько заплатим поставщикам за реализованный товар?

    В соотвествии с накладными.

    > и как устранить возникший перекос в платежах?

    Обычно облачивают через банк. Реже — бартером.

    > если учет двойной, то для чего было городить все? —

    > есть масса обработок типа «обнуления регистров накопления»

    Имхо обработки обнуления регистров к двойному учету не имеют отношения.

    > а что делать с фиктивными поступлениями 9ак их закрыть/оплатить — убрали

    > минус с остатков, так эта разница просто вылезла в другом месте теперь

    > надо аналогично убирать перекос во взаимозачета

    Перекос в каких взаиморасчетах? Фиктивные поступления делают от фиктивных поставщиков. Закрывают/оплачивают их с помощью платежного поручения и выписки банка. В чем перекос?

    > пока что лично мне дико не хватает что-то

    А вот это уже совсем другая история и другие обработки.

    Если ты хочешь знать где 1С честно ругнется, тебе сюда http://infostart.ru/projects/1150

    вОООт такое неоднозначное понимание этой обработки…

    Reply
  14. Bux2

    (12) Программа для тех

    -кто покупает столько, сколько продает

    -у кого прибыль столько, сколько надо 🙂

    -у кого все ок по взаиморасчетам.

    Эта программа только инструмент, помощник, а не основа учета.

    И, если правильно понимаю, партионный учет здесь не при чем.

    Reply
  15. anton.fly7

    (14) партионный учет в другой программе (не 1с), 1сБух для налоговой ))

    Reply
  16. dyuha

    — Фирма покупает 95% «картофеля» у «колхозника»;

    — На точке «заряженные» весы, 7 кг продают как 10;

    — Прораб на стройке подписал «воздушные» машины, товар не покупался в принципе;

    — … и еще тысяча ситуаций когда прихода нет.

    Reply
  17. WiseSnake

    От poppy не ожидал подобных выводов, но объяснимо… и объяснимо ведение фиктивного учета… только ИМХО ведение такого учета это не правильно, но скорее всего это решают не программисты, но вот программисты в определенный момент могут выхватить трындулей от вышестоящего начальства, если оно конечно есть… И я не изменю своего мнения а немного подкорректирую его: Кто то не выполняет своих прямых обязанностей!

    А решаются все описанные проблемы стандартными методами… хотя бы та же инвентаризация…

    ИМХО на предприятии с такой организацией разворовывают больше, чем налогов экономят ))))))

    P.S. Только не пинайте меня сильно ))))

    Reply
  18. dyuha

    Если руководитель идет на ведение фиктивного учета, значит ему это выгодно. Более того. В моей практике, 100% случаев — это его прямое распоряжение.

    П.С. Законодательство у нас тоже не совершенно. Так что 1:1.

    П.П.С. Обработка, как и все. Для тех кому нужна.

    Reply
  19. Lara0291

    Большая экономия времени. Спасибо!!!

    Reply
  20. galagala

    Все хорошо, но есть и «минусы»:

    1) не заполняется поле ГТД, хотя товар импортный;

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

    Вот тогда было бы совсем замечательно!!!

    Reply
  21. anton.fly7

    любый хотелки за ваше вознаграждние, галагала 🙂

    Reply
  22. света1969

    Хочу такую же на 8.1 бух!!!!!!!!!!!!!!!

    Reply
  23. anton.fly7

    света1969, хотеть мало, тут главное финансовая мотивация

    Reply
  24. anton.fly7

    кто хотел для 1с8.1 Бух?

    http://infostart.ru/public/59549/

    Reply
  25. eleonora

    Давно искала такую обработку. Спасибо вам.

    Reply
  26. whatever

    Спасибо, если бы не нашел вашу обработку, пришлось бы самому писать. 🙂

    Reply
  27. anm124

    А она работает только в бухгалтерии, а у Вас обработка для ТиС?

    Reply
  28. kilisidiV

    (28) anm124, для Тис есть обработка на проклабе, вот вам ссылка

    http://1c.proclub.ru/modules/mydownloads/singlefile.php?lid=5394&viewmode=thread&topic_id=273500&forum=6&cid=5&post_­id=307334

    Reply
  29. mitlaspb

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

    То купят товар за нал, то не оформят воврат,а потом его продадут по безналу.Бухгалтеру приходится выкуручиватся.Обработка СУПЕР.Очень экономит трудозатраты.

    Reply
  30. taste

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

    Reply
  31. anton.fly7

    Пажалуста )

    Reply
  32. ezupowam
    anton.fly7 пишет:

    на заре моей работы с 1с, поступало предложение написать 2с Бухгалтериювводишь изначально сколько готов платить налогов и оборот и прога выдеет весь комплект документов )))

    автор, написали бы уж.

    столько б бухгалтерского народу от мучений избавили! )))

    Reply
  33. AlexO

    (8) «То, что минусы не косяк буха — 100%. Особенности учета скорее. Полезная обработка, экономит время. »

    можно было просто найти минуса и указать на них буху.

    и разбираться, откуда они взялись, а не закрывать обработкой и липовыми документами…

    сами себе хуже делаете — потом все равно наступит момент, когда накопится огромное число липовых доков, которые «непонятно откуда взялись» (ну не свалишь же на программиста и обаботку — мол, они причина! причину-то так никто и не искал).

    Это не говоря уже о проверке документов обэп..

    Reply
  34. AlexO

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

    А почему невозможно — нет четких схем списания сумм, каждый раз нужно «держать нос по-ветру», поэтому только ручное оформление и каждый раз новые схемы.

    Если бы были четкие конкретные схемы, то:

    а) это давно бы автоматизировали

    б) это бы вскоре запретили законодательно.

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

    Здесь — тоже самое: «черные» суммы распределяются каждый раз по-новому, и по разным товарам-контрагентам-организациям-счетам.

    Reply
  35. AlexO

    (17) >>ИМХО на предприятии с такой организацией разворовывают больше, чем налогов экономят

    точно ))

    (16) >>- Фирма покупает 95% «картофеля» у «колхозника»;

    и что? накинули и написали, что купили по 5, а не за 3, и продавайте по 8. Или что у вас под понятием «колхозник»?

    >>- На точке «заряженные» весы, 7 кг продают как 10;

    тогда что мешает написать продавцу не 10, а 15? 20 кг? где документы, чтобы проверить ))?

    >>- Прораб на стройке подписал «воздушные» машины, товар не покупался в принципе;

    это вообще невообразимо. Что, вся стройка липовая, что-ли, что не нужны какие-то там «машины»? или потом хватились — а машин нет, но есть липовые доки?

    Что за схемы такие?

    (30) >>То купят товар за нал, то не оформят воврат,а потом его продадут по безналу.Бухгалтеру приходится выкуручиватся.

    а как его продают, если он не оформлен по возврату? и что: покупател пришел, где товар? — а он продан, причем как купленный и оприходованный по ПТУ. И где возвращенный товар?

    По-моему, это все самообман: в конце концов «накладные потери» (увод сумм, отрез неучтенных, приписки) возрастут настолько, что вся бухгалтерия станет фиктивной и бессмысленной, ибо будет учитывать «пустоту».

    Ну, а на «пустоту» попробуйте вообще что-либо содержать, даже бухгалтера…

    (21) >>я бы еще добавила возможность удаления некоторых позиций из справочника товаров — иногда возникает необходимость делать разные наценки по разным категориям товара или разный товар покупать у разных поставщиков.

    расшифруйте, пожалуйста, как это все относится к двойной бухгалтерии… иначе все это — есть в типовой ))

    Reply
  36. Alex_E

    Не пойму, что на человека наехали — поставили задачу, он сделал.

    Начинать — так уж с головы — первый наезд тогда прям на фирму 1С:

    почему есть БУ и УУ?

    почему (давно правда) на экзамене по специалисту ТиС задание было по приходу расход нарисовать?

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

    Reply
  37. Фред

    Читаю, балдею и…завидую! Есть же люди, которых описанная проблема не касается, и похоже, не знакома в принципе!

    Может они не из нашей страны? Я не знаю ни одного коллеги, который в той или иной степени не озабочен оформлением постфактум деятельности руководителя. А если бух проведет инвентаризацию и оприходует все законным образом, то больше одного налогового ( а то и отчетного ) не проработает. Хотя как вариант, вылетит при попытке подписать платежку на НДС…

    Грустно, но правда…

    А проверки…. Они тоже по принципу- была бы фирма, а в чем виновата- найдем. И весь смысл белости-пушистости теряется. Тем более проверяющие обижаются, когда трудно что-то найти….

    К обработке претензий нет. Функции выполняет. Хотя если бы полученную табличку корректировать вручную….)) Спасибо!

    Reply
  38. anton.fly7

    (38) любой каприз за достойную мотивацию 😉

    Reply
  39. taste

    (30) mitlaspb,

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

    а как его продают, если он не оформлен по возврату? и что: покупател пришел, где товар? — а он продан, причем как купленный и оприходованный по ПТУ. И где возвращенный товар?

    такая же ситуация, спасибо автору , помог

    Reply
  40. gigagr

    Читала комментарии — такие политические дебаты из-за простой технической обработки, виват не равнодушным!!!

    Reply

Leave a Comment

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