<?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='\
Аналогичные проверки входят в пакет «Экспресс-проверка ведения учета» для Бухгалтерии 7.7:
http://infostart.ru/projects/4669/
В бесплатной версии — 30 проверок, в платной -54.
Плюс за обе работы. Раньше не попадались
интереснее проверка НДС исходящего…
(3)http://infostart.ru/projects/4669/
(3) Первый комментарий читали?
Странно, что обработка не видит внесение в книгу покупок при автоматическом ее формировании в конце месяца. ❗
(6) О каком конкретно правиле идет речь?
http://www.profiufa.ru/express/decrypt9.shtml
Если о правиле проверки «Полнота получения счетов-фактур по документам поступления», то описание алгоритма здесь:
Можете связаться с разработчиком по support@profiufa.ru.
(7) та ссылка, по которой я перешла, и правило о котором там говориться действительно действовало в 2007 году. А теперь все (надеюсь, все бухгалтера, которые берегут свое время) пользуются автоматическим формированием книг покупок и продаж. В представленной обработке автоматическое формирование книг не попадает и соответственно не учитывается и пропадает вообще смысл обработки.
Для того, чтобы правильно (автоматически!!!) формировалась книга покупок, необходимо, чтобы:
1. либо был заполнен реквизит «ДатаНомерСчетаФактуры» у приходного документа
2. либо существовал подчиненный приходному документу документ «СчетФактураПолученный». Иначе — ощибка.
В первом случае ПриходныйДокумент формирует проводку вида
Дт 19.х субконто2 = ПриходныйДокумент Кт * +Сумма
Документ «СчетФактураПолученный» не нужен.
Во втором случае ПриходныйДокумент формирует проводку вида
Дт 19.х субконто2 = ПустоеЗначение Кт * +Сумма
Подчиненный ему документ СчетФактураПолученный формирует проводки вида
Дт 19.х субконто2 = ПустоеЗначение Кт * -Сумма
Дт 19.х субконто2 = СчетФактураПолученный Кт * +Сумма
Если не заполнен реквизит «ДатаНомерСчетаФактуры» у приходного документа,
то в документ «Формирование записей книги покупок» и соответственно в книгу покупок ничего не попадает.
Если при этом существует не подчиненный приходному документу документ «СчетФактураПолученный», то запись в документе «Формирование записей книги покупок» и в книге покупок появится, но ошибка в учете тем не менее будет, проводки будут неверными, а именно
Дт 19.х субконто2 = ПустоеЗначение Кт * +Сумма
от ПриходныйДокумент
Дт 19.х субконто2 = СчетФактураПолученный Кт * +Сумма
от СчетФактураПолученный
Сторно нет.
Если Вы слабо разбираетесь в «1С: Бухгалтерии 7.7» не вводите в заблуждение других, если уж самой разобраться лень.
(8) Прошу прощения сообщение 9 это Вам ответ
(8) Опять что-то не ладно.Сообщение 9 это Вам ответ
(11) Надо (8_)
(10) Ну конечно, по вашему мнению все уважающие бухгалтера заводят СчетФактураПолученный?????? Этим давно уже ни кто не пользуется, пустая трата времени. А реквизит «ДатаНомерСчетаФактуры» у приходного документа к Вашему сведению нельзя не заполнять, иначе в печатной форме книги покупок этот реквизит будет пустой и у ИФНС будут при проверки вопросы. Похоже это Вы слабо разбираетесь в «1С: Бухгалтерии 7.7» и вообще в бухучете. все нормальные бухгалтера пытаются облегчить себе работу, а Вы предлагаете «прошлый век» ручное формирование книг 8)
(10) И вообще глупый спор, а идея обработки хорошая. Важно проверять все ли попало в книгу. Иногда сформируешь «Формирование записей книги покупок», а после кто-нибудь еще приход заведет, да еще заведет как-нибудь криво. И вот начинается поиск. На этом этапе предлагаемая обработка и пригодилась бы……….
(13) Вы читать умеете?
Где это я предлагал «ручное формирование книг»?
> реквизит «ДатаНомерСчетаФактуры» у приходного документа к Вашему сведению нельзя не заполнять
Заполненность реквизита «ДатаНомерСчетаФактуры» у приходного документа как раз и проверяется отчетом, иначе в книгу покупок ничего не попадет, вообще не попадет. Я именно это и написал.
> СчетФактураПолученный?????? Этим давно уже ни кто не пользуется, пустая трата времени
Вам знакомо такое понятие «неотфактурованная поставка»? Это когда ТМЦ нужно оприходовать, а счет-фактуры еще нет и НДС к вычету поставить нельзя. Вот в таком случае и применяется связка ПриходныйДокумент с пустым «ДатаНомерСчетаФактуры» и СчетФактураПолученный на основании ПриходныйДокумент уже тогда, когда появится счет-фактура, возможно уже в следующем налоговом периоде. Учите матчасть. Для Вашей же пользы учите.
(14) Вам бы надо было СНАЧАЛА задуматься, а уж потом заявление делать о бессмысленности, а у Вас все наоборот.
(16) Ну тогда скажите, почему обработка не работает, А???? У меня поподает в таблицу только то, что сформировано «ручками», т.е. уточнения по книгам.
(16) Услуги сторонних организаций 00000231 (07.07.2009) 1200,00 ТрансЛогист Нет записи книги покупок на накладную. Что сие значит???
(17) «уточнения по книгам» — это видимо документы «ЗаписьКнигиПокупок».
http://www.infostart.ru/public/20684/
Видимо установлен флажок «Контролировать записи книги покупок», снимите его.
Вот эта опция как раз рассчитана на тех, кто формирует отдельные документы «ЗаписьКнигиПокупок». Такое бывает, когда учет очень запущен, на счетах «ЗПК» черт знает что и автоматически сформировать книгу невозможно, сальдо «ЗПК» мешает. Тогда обработкой формируют док-ты «ЗаписьКнигиПокупок», благо сейчас контролировать оплату не надо и сделать это легко.
А вообще надо использовать
(19) Так работает и ошибок нет. А по-поводу «когда появится счет-фактура, возможно уже в следующем налоговом периоде. Учите матчасть.» мой директор мне голову снимет, если не будет счет-фактуры в том периоде в котором был приход. Цифирки-то НДСа у всех разные, по этому на свой страх и риск принимаем к вычету, даже если нет оригинала С-Ф. А о таких возможностях программы я в курсе, только на практике применит не дадут. «Неотфактурованная поставка» в моей организации существует только в теории бухучета. Да и еще на тему «следующего налогового периода» как ни крути, а уточненки подавать приходится за тот период в котором поступили материалы, а не в том, в котором получена С-Ф. С ИФНС лучше не спорить, нервы съэкономишь. 🙂