Налоговая ведомость для конфигурации 1С:Зарплата и Кадры 7.7




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

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 не будет опубликован. Обязательные поля помечены *