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




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2026-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 не будет опубликован. Обязательные поля помечены *