Налоговая ведомость для конфигурации 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='\

33 Comments

  1. Boroda

    Надеюсь, ФСС_НС считает корректно (а то на скринах эти взносы подозрительно обрезаны…)?

    И очень неплохо бы было в составе облагаемых баз расшифровочку сделать по части превышения предела… Вообще был бы прелестный отчётик.

    Reply
  2. Seregalink

    Да отчет древний, у него много модификаций и в 2010 и в 2011 году, и хотелось бы чтобы он все правильно показывал. Кстати ссылочку бы желательно, на основании какого отчета и какие изменения были в него внесены или это оригинальная разработка?

    Reply
  3. Seregalink

    В описании к отчету встречается ЕСН, но нигде ни звучат страховые взносы, желательно бы исправить!

    Reply
  4. ninaK

    Был недавно подобный отчет — за месяц считался нормально, но за период — 9 месяцев брала — неверные цифры вставали. Проверим теперь и этот отчет.

    Reply
  5. ninaugntu

    А материальная помощь правильно учитывается при сборе в облагаемую базу? А регрессия?

    Reply
  6. irina_ph

    А как дела обстоят с инвалидами? почему-то всегда об этом забывают…

    Reply
  7. rimma_n

    (2) Seregalink, похоже, обработка не оргинальная, просто красиво доделанная. Правильно было бы ссылку на автора указать

    Reply
  8. rimma_n

    (2) Seregalink, похоже, обработка не оригинальная, просто красиво доделанная. Правильно было бы ссылку на автора указать

    Reply
  9. oyua2011

    (2) Seregalink, (8) rimma_n,

    Данный отчет — это доработанный отчет, первоначальный автор которого мне неизвестен.

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

    Часть истории доработок можно посмотреть на моем сайте: 1cguru.ru.

    Reply
  10. Glory_IT

    Такой отчет я уже скачивала еще в феврале 2011 года. Только название и автор почему-то были другими….. (TaxSV11.ert). Но тут правда добален выбор периода. Т.е. отчет доработан. Надо бы указать …

    Reply
  11. vit_new

    При выводе печатной формы: ошибка — недостаточно памяти, программа 1С зависла. Стоит оперативка — 1 Гб. Работает достаточно медленно. Пока остановил свой выбор на программе от М.А.Некрасовой:

    http://infostart.ru/public/81904/

    Reply
  12. wd2000

    В релизе 7.70.318 — не работает.

    Если (Сотрудник.НеВзиматьВзносыФОМС.Получить(ДатаМесяца) = 1) Тогда

    {D:1C_BASE1CV77UCSPRBASIC2011EXTFORMS2011_НАЛОГОВАЯВЕДОМО­СТЬ.ERT(14457)}: Поле агрегатного объекта не обнаружено (НеВзиматьВзносыФОМС)

    Хорошо бы доработать.

    Reply
  13. oyua2011

    (12) wd2000, Сегодня файл отчета с версией 11.06 в данной публикации заменен на файл с версией 11.08.

    Версия 11.08 отчета предназначена для использования с редакцией 318 и выше конфигурации 1С:Зарплата и Кадры 7.7.

    Reply
  14. Boroda

    До боли родной и любимый отчёт TaxSh… Ну и что, что не оргиниальный, а переделанный…? Зато привычный информативный и очень удобный. Лишь бы работал правильно, а то в предыдущих вариантах переделок (и у других авторов) зачастую встречались ошибки. Буду надеяться что 11.08 в 2012 сработает удачнее, будем тестить.

    Reply
  15. irisha

    А можно его прислать на емэйл?klimova1967@bratsk-city.ru Заранее спасибо. За отчет проголосовала.

    Reply
  16. newcox2

    Минфин России приказом от 24.12.2010 № 186н внес изменения в ряд нормативных правовых актов по бухгалтерскому учету. Затраты, произведенные организацией в отчетном периоде, но относящиеся к следующим отчетным периодам, отражаются в балансе в соответствии с условиями признания активов, которые подлежат списанию в порядке, установленном для списания стоимости активов данного вида. В связи с этим, форма бухгалтерского баланса за 2011 год не содержит показателя расходов будущих периодов (приказ Минфина РФ № 66н от 02.07.2010). Организация должна самостоятельно выбрать порядок отражения расходов будущих периодов в бухгалтерской отчетности и закрепить его в учетной политике.

    Reply
  17. Boroda

    (17) Эта сообщение к чему должно относиться?

    Присоединяюсь к (1) — очень бы желательно видеть суммы превышения предела.

    А почему скрины задвоены? В этом какой-нибудь тайный смысл?

    Reply
  18. kis

    Спасибо!

    Reply
  19. NatAB

    Очень нужный отчет, спасибо за работу, только вот…Как скачать этот отчет? Купить что-то ненужное в интернет-магазине инфостарт? и на бонусы скачать?

    Reply
  20. karakozov

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

    Reply
  21. Lava596

    Каждый год что-то новое, не могут по-другому, в последние годы это особенно стало заметно.

    Нашла недавно вот такую статью:

    В 2012 года предельная база для начисления страховых взносов будет равна 512 000 руб. Такая величина утверждена постановлением Правительства РФ от 24.11.11 № 974. Однако, в отличие от предыдущих лет, с выплат, превышающих предельную базу, придется перечислять страховые взносы в ПФР.

    Федеральный закон от 03.12.11 № 379-ФЗ (далее — Закон № 379-ФЗ) для основной массы страхователей установил общий тариф страховых взносов на 2012 год на уровне 30%. Из них:

    — в ПФР уплачивается 22% (тариф распределяется на индивидуальную и солидарную части);

    — в ФСС — 2,9%;

    — в ФФОМС — 5,1% (платежи в территориальные ФОМС отменены).

    Взносы в таком размере платятся с суммы, не превышающей 512 000 руб. Выплаты сверх этой суммы облагаются взносами в ПФР по ставке 10%.

    К апрелю 2012 года ПФР и ФСС обещают подготовить новые формы отчетности по страховым взносам, в которых будут отражены последние изменения законодательства по взносам: введение новых льготников, установление обязанности уплачивать взносы с сумм, превышающих предельную базу и др.

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

    Более подробную информацию можно посмотреть здесь

    Reply
  22. Pin

    Плюсанула за отчет версии 12.02 с сайта 1cguru.ru. ПНЭДы + ООИ — все правильно работает.

    Reply
  23. TrinitronOTV

    (22) Lava596, спасибо за интересную и нужную информацию

    Reply
  24. Yul_kat

    Добрый день, подскажите, пожалуйста, по какому принципу происходит исключение вида расчёта из базы начислений? У меня вид расчёта ОплатаЛьготныхДнейРодителей (считается по среднему) должен облагаться налогами и в типовом расчёте страховых взносов на этот вид расчёта начисляются взносы. Сейчас Ваш отчёт в этом моменте не сходится с типовым.

    Reply
  25. oyua2011

    (25) Yul_kat,

    Добрый день!

    В данном отчете сведения о включении какого-либо вида расчета в отражение облагаемой базы НДФЛ и страховых взносов (также, как и в алгоритмах фирмы 1С) берутся из справочника видов расчетов.

    Поэтому, по идее, состав баз при расчете взносов и при их отражении в отчете должен быть одинаков.

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

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

    Буду благодарен, если Вы сочтете возможным выслать копию базы по эл. почте 1c@1cguru.ru.

    Напишите мне по этому адресу, если заданный Вами вопрос для Вас еще актуален.

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

    С уважением,

    oyua2011

    Reply
  26. kurvik

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

    Reply
  27. eli1984

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

    Reply
  28. VeRkA

    Расчет очень нужный спасибо за доработку!

    Извините, но я не увидела ответ на вопрос 22. Lava596? Начисление 10% с превышающей суммы показывает данный расчет?

    Reply
  29. morpod

    Спасибо вам большое!!! Версию 2013 еще не скачивала, у меня нет вредников (слава Богу), но прошлогодней Вашей обработкой пользуюсь регулярно.

    Reply
  30. rimma_n

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

    Reply
  31. teplova

    Спасибо за отчет! Плюс! Только у нас одного «вредника» дублирует еще и в «опасники». Но одного можно и подкорректировать руками.

    Reply
  32. NikaK

    Спасибо за отчет!!! А у нас вредников вообще не берет. Их немного и можно так выбрать.

    Reply
  33. teplova

    Еще раз большое спасибо за отчет! Предыдущая версия успешно использовалась, но как-то раз перестала работать, выводила ошибку «недостаточно данных».

    Я глянула — а оказывается уже обновление вышло! Радость-то какая! Хорошо, что есть такие умные люди, которые готовы делиться своими разработками. Обновленная версия никаких ошибок не выдает, бухгалтер моя рада и счастлива. 🙂

    Reply

Leave a Comment

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