Расчетная ведомость с налогами, свод начислений с налогами (с 2010г.)




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

88 Comments

  1. legioner

    Спасибо!

    Reply
  2. бухгалтер

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

    Reply
  3. СергейКа

    По скрину видно что 7.7. Сложно было указать для какой платформы/конфигурации?

    Reply
  4. klimat_oksana

    и опять нет баз…

    Reply
  5. and1605

    (4) Какие базы имеются ввиду?

    Reply
  6. klimat_oksana

    (5) базы с которых начисляются все налоги «по людям»

    Reply
  7. and1605

    (6) Видимо разговор о расчетной ведомости…да пока нет…буду дорабатывать..

    Reply
  8. klimat_oksana

    (7) буду благодарна и не я одна… 🙂

    Reply
  9. krin4ik

    Спасибо огромное, в такой расчетной ведомости до 2010 г. были ещё суммы НС и ПЗ, а сейчас нет 😥 …..

    Reply
  10. and1605

    (9) Проверял на ЗиКе … все суммы на месте и НС тоже … у Вас какая конфа?

    Reply
  11. and1605

    (9) Проверю еще раз… не вопрос… 🙂

    Reply
  12. and1605

    (9) Проверю еще раз… не вопрос… 🙂

    Reply
  13. and1605

    В публикацию добавлены отчеты для комплексной 7.7.. Со временем объединю ЗиК и Комплекс в один отчет..

    Reply
  14. JLaikova

    РАсчетная ведемость просто плюс и огромный, еще базу б для расчета стрховых добавить и цены не будет отчету)

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

    За работу плюс, однозначно)

    Reply
  15. and1605

    (14) Базу добавлю чуть позже.. хотелось бы знать какие расчеты вылезли в минус в своде..за оценку спасибо..!!

    Reply
  16. krin4ik

    (10) Конф. Зарплата+Кадры, ред. 2.3. Нет сумм НС и ПЗ в расчетной ведомости, а в Регистре учета начисления налогов есть.

    Reply
  17. JLaikova

    (15) с минусом ОТпуск дополнительный(полностью облается), Компенсация автотранспорта(полностью облагается), Компенсация авотранспорта свыше норм(полностью облагается), Материальная помощь к отпуску (частично облагается).. Если доработаете, буду рада новой версии отчета)))

    Reply
  18. and1605

    (16) Согласен…. доработаю

    Reply
  19. and1605

    (17) Спасибо …проверю..

    Reply
  20. AlexLed

    Отчет отличный. Но для работы в организациях на спец.режимах, в строках 976 и 978 надо вставить след —

    иначеЕсли ((Запрос1.Расчет=ВидРасчета.ПФРНакопительнаяЧастьс2010) или (Запрос1.Расчет=ВидРасчета.ПФРНакопительнаяЧастьЕНВД)) Тогда

    Reply
  21. Злата

    Какой ты молодец Спасибо

    Reply
  22. and1605

    (17) Странно.. сегодня проверил на ЗиКе дополнительный отпуск ..он на месте.. может что-то с настройками?

    Reply
  23. and1605

    (20) Возможно..но мне кажется будет правильнее вывести ЕНВД отдельной строкой…я подумаю..спасибо!!

    Reply
  24. klad1970@mail.ru

    В комплексной при формировании ведомости вылетает ошибка:

    Если ПустоеЗначение(Константа.Фирма.ЮрЛицо)=0 Тогда

    {C:\_DISTR\_1С\_ДОРАБОТКИЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИКОМПЛС20­10.ERT(614)}: Поле агрегатного объекта не обнаружено (Фирма)

    Чего не хватает?

    Reply
  25. and1605

    (24) Скачайте новую версию..

    Reply
  26. and1605

    Публикация изменена.. В расчетную ведомость добавлена база для расчета страховых взносов и колонка ФСС НС..

    Reply
  27. and1605

    (8) (9) Пожелания учтены..

    Reply
  28. klimat_oksana

    СТАРАЯ ВЕРСИЯ РАБОТАЛА, НО БЫЛА НЕПОЛНОЙ, А НОВАЯ ВЕРСИЯ ВОТ ЧТО ВЫДАЕТ:

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: ФизЛицо = ЖурналРасчетов.Зарплата.Объект. <<?>> ФизЛицо;

    Запрос[4] : Неверно заданный путь ‘ФизЛицо’

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: Группировка ФизЛицо <<?>> без групп;

    Запрос[26] : Переменная ‘ФизЛицо’ не опеределена

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: Условие((Результат<>0)или(ДниВЖурнале<>0) <<?>> );

    Запрос[28] : Ошибка в условии

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: Условие(Сотрудник в СписокФизЛиц <<?>> );

    Запрос[29] : Ошибка в условии

    Reply
  29. gala2009

    Молодец, что облагаемую базу добавил, надо только ее ограничить до 415000 по тем людям, у кого больше 415000, у нас таких в январе трое, взносы ведь по ним правильные выходят, 20% ПФ =83000, а база вышла 664657.55

    Reply
  30. JLaikova

    (22) да вроде все нормально с настройками стоит — Облагаетсяв полном размере, до 2009 не облагался..

    Скачала новую версию Расчетная ведомость, только база налогооблагаемая считает неверно, у меня берет в состав базы мат помощь к отпуску в полном объеме, хотя должна входить за минусом 4000 (((

    Reply
  31. and1605

    (24) Ошибку исправил..

    Reply
  32. and1605

    (28) Дело в том что Вы пытаетесь запустить в ЗиКе отчет для комплексной … скачайте другой отчет..

    Reply
  33. klimat_oksana

    (32) спасибо за ответ.

    Reply
  34. krin4ik

    (27) Спасибо огромное.

    Reply
  35. lebelena

    В комплексной работает, +1.

    А вот в Зарплате те же ошибки —

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: ФизЛицо = ЖурналРасчетов.Зарплата.Объект. <<?>> ФизЛицо;

    Запрос[4] : Неверно заданный путь ‘ФизЛицо’

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: Группировка ФизЛицо <<?>> без групп;

    Запрос[26] : Переменная ‘ФизЛицо’ не опеределена

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: Условие((Результат<>0)или(ДниВЖурнале<>0) <<?>> );

    Запрос[28] : Ошибка в условии

    Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда

    {C:DOCUMENTS AND SETTINGSOKSANAМОИ ДОКУМЕНТЫSOFT ДЛЯ 1С2ЗИКРАСЧЕТНВЕДОМОСТЬСНАЛОГАМИС2010КОМПЛ.ERT(527)}: Условие(Сотрудник в СписокФизЛиц <<?>> );

    Запрос[29] : Ошибка в условии

    Reply
  36. and1605

    (35) Для зарплаты другой отчет скачайте и пользуйтесь

    Reply
  37. wd2000

    В «СводЗаПериодсНалогамис2010.ert» — налоговые базы ЕСН.

    Reply
  38. valent

    Бухам очень понравилось. А можно добавить колонку с базой для рассчета ФСС_НС?

    Reply
  39. Olga_Ts

    Очень симпатичный, а, главное, актуальный отчет ❗ Смотрела на ЗПЛ

    Немного не правильно формируется база ФСС_НС:

    —————————-

    //разделим ФЗП и ПР

    //Если (глВходитВБазу(Расчет,ВидРасчета.ПФР) = 1)и(Запрос.ЕНВД = 0) Тогда

    Если (Расчет.ВходитВГруппу(ГруппаРасчетов.ОблагаетсяСтраховымиВзносами)=1) и (Запрос.ЕНВД = 0) Тогда

    —————————

    Но это работает действительно с 2010 года. Немножко почистить форму, модуль — и вполне тиражный полезный отчет. Бухгалтера 100 раз Вам спасибо скажут 🙂

    Reply
  40. and1605

    (37) Думал об этом…доработаю..

    Reply
  41. and1605

    (38) Постараюсь сделать..

    Reply
  42. and1605

    (39) Абсолютно верно..просто не успел поправить…

    Reply
  43. rr-irina

    (36) не подскажите где можно скачать?

    Reply
  44. and1605

    (43) в этой же публикации..она содержит 4 файла — 2 для ЗиК 7.7 и 2 для комплекс 7.7

    Reply
  45. and1605

    ПУБЛИКАЦИЯ ИЗМЕНЕНА!!!!!

    В расчетную ведомость добавлен предел базы страховых выплат и база для расчета ФСС_НС

    Reply
  46. and1605

    (29) внесены изменения по пределу базы страховых взносов

    Reply
  47. JLaikova

    (45-46) ФСС_НС вижу все хор, 415 не могу проверить пока! Что ж с мат помощью делать и пределом в 4 тыс(((

    Reply
  48. Koнст
    Reply
  49. and1605

    (48) Хорошо …спасибо за участие!! …сегодня посмотрю….

    Reply
  50. JLaikova

    (48) спасибо огромное!!!

    Reply
  51. kis

    Компенсация отпуска при увольнении облагается страховыми взносами…

    По своду получаеися, что нет.(зарплата 7)

    Reply
  52. Koнст

    (51) Справочники — Расчет зарплаты — Виды расчетов — Страховые взносы — Накопительная пенсия — База

    Добавить Компенсация отпуска при увольнении в Состав облагаемой базы

    Reply
  53. wd2000

    (40) Надо исправить:

    глВходитВБазу(Расчет,ВидРасчета.ПФР) = 1 на

    глВходитВБазу(Расчет,ВидРасчета.ПФРНакопительнаяЧастьс2010) = 1

    Reply
  54. YliyaM

    при попытке использования в ЗиК выдает ошибки ФизЛицо= ЖурналРасчетов.Зарплата.Объект. <<?>> ФизЛицо;

    Запрос[4] : Неверно заданный путь ‘ФизЛицо’

    Группировка ФизЛицо <<?>> без групп;

    Запрос[26] : Переменная ‘ФизЛицо’ не опеределена

    Условие((Результат<>0)или(ДниВЖурнале<>0) <<?>> );

    Запрос[28] : Ошибка в условии

    А в описании идет информация о том, что обработка подходит для ЗиК

    Reply
  55. YliyaM

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

    Reply
  56. and1605

    (55) постараюсь сделать

    Reply
  57. Svetlana_E

    Еще хорошо бы разделить базы для ФСС и остальных налогов — Договора подряда не облагаются ФСС.

    Reply
  58. Viola_new

    почему-то «Расчетная… » выдает ошибку

    Сформировать(<<?>>)

    Недостаточно фактических параметров

    а свод работает, спасибо!

    Reply
  59. and1605

    (58) странно..а какая у Вас конфигурация….ЗиК??

    Reply
  60. Viola_new

    1С 7.7 для SQL 7.70.024

    Конфиг. ЗиК ред. 2.3 релиз 293

    Reply
  61. wd2000

    В свод ФЗП попадает матпомощь менее 4000 руб.

    Reply
  62. and1605

    (61) да знаю…поправлю..сейчас немного не до того…работы дофига…

    Reply
  63. wd2000

    Еще бы по инвалидам исправить налоговую базу.

    И тогда будет ОК!

    Reply
  64. IP43

    (61) очень актуально

    Reply
  65. Koнст

    (48) В феврале вылезла ошибка, нужно заменить в моих изменениях в запросе:

    |Условие(Сотрудник в ДляМатПом);

    на

    |Условие(ОсновнойЭлемент в ДляМатПом);

    и заодно поменять условие

    Если НачалоПериода<>НачГода(НачалоПериода) Тогда

    на

    Если (НачалоПериода<>НачГода(НачалоПериода))И(ДляМатПом.РазмерСписка()>0) Тогда

    Reply
  66. Craig

    Хороший отчет РасчетнВедомостьсНалогамис2010.ert плюсую, только как его родитель у него есть один не хороший минус. Вылезают в отчет все сотрудники, что есть не ГУд для предприятий с большой текучкой. У меня на п/п было в 2009 году рабочих 248 человек, а в 2010 всего 24 осталось работать… Можешь представить, на сколько много лишних строчек вывел отчет.

    Reply
  67. artbear

    (0) Автор, планируешь ли доработку отчетов на работу с несколькими периодами?

    Отчеты хороши, не хватает только данной фичи.

    Reply
  68. and1605

    (67) Поподробней про несколько периодов, плиз!!!

    Reply
  69. artbear

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

    У тебя сейчас это невозможно, только один месяц 🙁

    Reply
  70. and1605

    (69) А вот и неправда Ваша…есть переключатель «за период», «с начала квартала», «с начала года»… 😉

    Reply
  71. artbear

    (70) А произвольный период где?

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

    Reply
  72. Kurt

    В Комплексной в «Свод начислений» тащит ФСС_НС (травматизм) всех организаций имеющихся в базе. 😐

    Reply
  73. and1605

    (72) а юрлицо пробовали выбирать?

    Reply
  74. Kurt

    (73) Обижаете 😐 А как же. Конечно выбирали. Остальные-то цифры по организации он (отчет) нормально выводит.

    Причем тащит ФСС_НС не одной строкой. Строчек столько — сколько организаций в базе имеющих ФСС_НС. В этой доп.проводке есть привязка к организации, т.е. остальных нужно фильтровать. Сейчас получается он тащит всё, что нашёл.

    Для базы с одной организацией приемлимо…

    Reply
  75. and1605

    (74) Честно… не хотел обидеть …проверю…

    Reply
  76. Ягуана

    Подскажите, пожалуйста,а как эти формы подтянуть в 7.7 Зик.

    Я «чайник», но очень хочеться иметь эти отчеты.

    😐

    Reply
  77. and1605

    (76) Вам нужно скачать 2 файла которые не для комплексной…

    скопировать их в каталог ExtForms базы данных..

    затем открыть «Сервис» «Дополнительные возможности»..

    нажать кнопку «Изменить»..»Внести в список»..

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

    Reply
  78. and1605

    (76) если совсем не получится тел.89267342810..

    помогу ..чем могу.. 🙂

    Reply
  79. and1605

    (71) Согласен.. сделаю..на днях.. 🙂

    Reply
  80. avenira_

    Спасибо! Хороший отчет! Ещё бы итоги по подразделениям… клиенты просят..

    Reply
  81. and1605

    (80) постараюсь добавить..

    Reply
  82. SotNick

    Спасибо большое, отчет замечательный!

    Reply
  83. safia-med

    Спасибо! отчет замечательный!

    кроме одного НО:

    Замечено: если среди сотрудников есть инвалиды, то по ним неправильно выводит ФСС_НС

    судя по коду берется «Тариф» из константы «Ставка взносы в ФСС на страхование от несчастных случаев»

    вот бы это исправить?

    для инвалидов всех групп должно быть 60% от установленного тарифа.

    в нашем случае:

    по предприятию 0,2%

    инвалиды 0,2*60% = 0,12%

    или подскажите как самой запилить

    Reply
  84. safia-med

    изменения 2014 года будут учтены?

    Reply
  85. safia-med

    после последнего обновления не считает ПФР

    Reply
  86. safia-med

    КАК БЫТЬ?

    Reply
  87. and1605

    (86) safia-med, посмотрю сегодня… я думал он уже потерял актуальность..))

    Reply
  88. safia-med

    (87)

    пользуемся до сих пор, инвалида — вручную, ПФР — тоже)) — выгрузкой в exel и там уже заполняю взносы

    Reply

Leave a Comment

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