Налоговая ведомость с учетом изменений 2011 года для ЗиК 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='\

59 Comments

  1. NikaK

    Почему-то во всех таких отчетах идет одна и та-же ошибка — Оплата по договору подряда не должна облагаться ТФОМС и ФОМС. Переделайте отчет — цены ему не будет.

    Reply ↓
  2. dimasdg

    И еще по договорам подряда вроде облагается ФСС_НС….

    Reply ↓
  3. prog-eg

    Сообщите пожалуйста исправлена ли ошибка по оплате по договору подряда?

    Reply ↓
  4. jack19

    Почему в отчете за январь 2011 года в графе «Суммы, превышающие предельную величину базы для начисления страховых взносов стоят ненулеые суммы, которые к тому же не расшифровываются?

    Reply ↓
  5. irk68

    Нет текста «Сумма к возврату ФСС» в случае превышения Расходов за счет ФСС над Суммой взносов, есть текст «Сумма к уплате»

    Reply ↓
  6. Abzkrs

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

    Reply ↓
  7. MANEK

    Выложила с исправленной строкой «Сумма к возврату ФСС».

    Кто спрашивал про формирование для бюджетников по источникам, то это не реализовано, закрыла отбор.

    Reply ↓
  8. gucci76

    По кнопке «Прайм-1С» вылетает сообщение «….. Данный отчет распространяется ПЛАТНО Разработчик: Некрасова М.А.»

    MANEK = Некрасова М.А.?????

    Reply ↓
  9. dzagoeva_aza

    Все достойно,спасибо,проверила на сложной базе

    Reply ↓
  10. MANEK

    Ведомость страховых взносов за июль не работает. Выкладываю работающую версию.

    Изменена всего одна строка 533

    вместо глДополнитьСтроку(Месяц,2) надо Месяц

    было:

    ДоходыВычетыНалогиСотрудников.НайтиЗначение(глПолучитьУникальныйКодСотрудника(Сотрудник)+глДополнитьСтроку(Месяц,2),СтрокаИтоговойТаблицы,1);

    стало:

    ДоходыВычетыНалогиСотрудников.НайтиЗначение(глПолучитьУникальныйКодСотрудника(Сотрудник)+Месяц,СтрокаИтоговойТаблицы,1);

    Кнопку «Прайм-1С» убрала, отчет мой (Некрасова М.А.=MANEK), скорее не разрабатываю, а вымучиваю.

    Reply ↓
  11. Altez

    Не скачивается файл.

    Reply ↓
  12. lamer19
    MANEK пишет:

    Ведомость страховых взносов за июль не работает. Выкладываю работающую версию.

    Изменена всего одна строка 533

    вместо глДополнитьСтроку(Месяц,2) надо Месяц

    было:

    ДоходыВычетыНалогиСотрудников.НайтиЗначение(глПолучитьУникальныйКодСотрудника(Сотрудник)+глДополнитьСтроку(Месяц,2),СтрокаИтоговойТаблицы,1);

    стало:

    ДоходыВычетыНалогиСотрудников.НайтиЗначение(глПолучитьУникальныйКодСотрудника(Сотрудник)+Месяц,СтрокаИтоговойТаблицы,1);

    Кнопку «Прайм-1С» убрала, отчет мой (Некрасова М.А.=MANEK), скорее не разрабатываю, а вымучиваю.

    Все равно не работает ругается на строку 541 в режиме по всем сотрудникам

    Reply ↓
  13. MANEK

    Ведомость страховых взносов за октябрь опять не работает. Опять выкладываю работающую версию. Отчет ужасный, не судите строго. Этот кусок вообще не используется, но опять вылетает. Достаточно в строке 315 вместо РазделятьФСС_НС = 1; написать РазделятьФСС_НС = 0;

    Reply ↓
  14. morpod

    Спасибо, опять работает! 😀

    Reply ↓
  15. ysb_ter

    Существует ли возможность сделать отчёт нарастающим с начала года ?

    Reply ↓
  16. 2011b11

    Спасибо большое за разработку!!!+++

    Reply ↓
  17. evg300183

    И у меня ошибка — Оплата по договору подряда не должна облагаться ТФОМС и ФОМС. Переделайте отчет — цены ему не будет.

    Reply ↓
  18. galaulakova75@mail.ru

    Спасибо большое за разработку!

    Reply ↓
  19. -=LoBoS=-

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

    Reply ↓
  20. slanrus

    Спасибо очень помогло

    Reply ↓
  21. Лена_Лена

    Большое спасибо, удобно пользоваться.

    Reply ↓
  22. vit_new

    (17) Где вы нашли, что «Оплата по договору подряда не должна облагаться ТФОМС и ФОМС.»

    Суммы,не подлежащие обложению страховыми взносами для плательщиков,производящих выплаты физическим лицам(Ст 9. ФЗ-212):

    «в части страховых взносов, подлежащих уплате в ФCC РФ, — любые вознаграждения, выплачиваемые физическим лицам по договорам гражданско-правового характера, в том числе по договору авторского заказа, договору об отчуждении исключительного права на произведения науки, литературы, искусства, издательскому лицензионному договору, лицензионному договору о предоставлении права использования произведения науки, литературы, искусства.»

    По-русски,организация заключив договор гражданско-правового характера с физическим лицом, не обязана — предоставлять оплачиваемый отпуск и оплачивать больничный.

    И не обязана с суммы вознаграждения уплачивать взносы на обязательное страхование от несчастных случаев и профзаболеваний и исчислять страховые взносы в части уплаты в ФСС. Остальные взносы с выплат по такому договору начисляются: взносы на ОПС, в части ФБ,ТФОМС, ФФОМС и удерживается НДФЛ.

    У меня вопрос по программе. Почему оплата льготных дней родителей не попадает в базу — Расходы за счет ФСС.

    Reply ↓
  23. tanya_charm

    очень полезный отчет для меня. огромное спасибо!

    Reply ↓
  24. leafoe

    Собрал коллекцию из этих отчетов, тут их штук 5 можно найти с незначительными различиями…

    Reply ↓
  25. slanrus

    Очень помогает Ваш отчет. Спасибо

    Reply ↓
  26. irina_ph

    Скажите пожалуйста а как по инвалидам ваш отчет работает — накто не проверял?

    Reply ↓
  27. irina_ph

    Скажите пожалуйста а как по инвалидам ваш отчет работает — накто не проверял?

    Reply ↓
  28. vit_new

    (28)По инвалидам отчет работает правильно. У меня нет расхождений по суммам облагаемым и начисленным. Есть правда расхождение по сумме расходов за счет ФСС. У меня в эту сумму входят суммы оплаты льготных дней родителей по уходу за детьми-инвалидов, но это уже мелочь.

    Reply ↓
  29. irina_ph

    Спасибо попрбую воспользоваться

    Reply ↓
  30. cadet352

    хороший отчет но материалка все равно работает не верно 🙁

    Reply ↓
  31. b-dm

    У меня на 310 релизе вылезает ошибка:

    в строке 540

    СотрудникИнвалид = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Месяц, «ТарифИнвалид»);

    {C:DOCUMENTS AND SETTINGSTAXSV11.ERT(540)}: Номер за пределами значения!

    Это у меня одного так, у остальных нормально формируется ?

    Это при том что инвалидов нет в организации.

    Reply ↓
  32. Seregalink

    Такая же фигня, ошибка аналогичная для начала поставил Попытка Исключение взамен строки 540:

    Попытка

    СотрудникИнвалид = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Месяц, «ТарифИнвалид»);

    Исключение

    КонецПопытки;

    Пока полет нормальный, вроде работает!

    Reply ↓
  33. b-dm

    (33) — спасибо, сейчас попробую.

    Интересно всё же, почему обработка: http://infostart.ru/public/68649/

    формируется в разы быстрее ?

    Reply ↓
  34. jus

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

    Reply ↓
  35. jus

    (33) Seregalink,

    а я попробовала так прописать, у меня не работает

    Reply ↓
  36. jus

    (32) b-dm,

    нет у меня тоже такая ошибка только не понятно почему именно с октября началось, что в этом месяце такого особенного?

    Reply ↓
  37. rdm
    Seregalink пишет:

    Такая же фигня, ошибка аналогичная для начала поставил Попытка Исключение взамен строки 540:

    Попытка

    СотрудникИнвалид = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Месяц, «ТарифИнвалид»);

    Исключение

    КонецПопытки;

    Пока полет нормальный, вроде работает!

    Спасибо! Помогло!

    Reply ↓
  38. vit_new

    (36)По анализу программного модуля выложена немного измененная эта же программа:

    http://infostart.ru/public/96207/

    Reply ↓
  39. b-dm

    (39) — а в чем её отличие, расскажите ?

    Reply ↓
  40. baronzelan4
    Такая же фигня, ошибка аналогичная для начала поставил Попытка Исключение взамен строки 540:

    Попытка

    СотрудникИнвалид = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы-1+Месяц, «ТарифИнвалид»);

    Исключение

    КонецПопытки;

    Спасибо тоже заработало.

    Reply ↓
  41. Lava596

    Каждый раз какие-то изменения в законодательстве, только найдешь решение — как меняется закон и нужно опять что-то придумывать, а так обработка хорошая

    Reply ↓
  42. ysb_ter

    После обновления до 318 релиза стало выдавать ошибку:

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

    …TaxSV11.ert Поле агрегатного объекта не обнаружено (НеВзиматьВзносыФОМС)»

    На аналогичнаой ошибке после последних обновлений

    стало останавливаться и формирование РСВ-1

    (из стандартной регламентированной отчётности)

    в конфигурациях Бухгалтерия / УСН / ПБОЮЛ

    Reply ↓
  43. MANEK

    Отчет «Ведомость страховых взносов» под 318 релизом вылетает по ошибке:

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

    {I:MN_ZIK313TAXSV11.ERT(562)}: Поле агрегатного объекта не обнаружено (НеВзиматьВзносыФОМС)

    Можно это Если закоментарить до КонецЕсли:

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

    // ВзиматьВзносыФОМС = ?(Сч=1,»»,Лев(ВзиматьВзносыФОМС,Сч-1))+»0″+?(Сч=12,»»,Прав(ВзиматьВзносыФОМС,12-Сч));

    //КонецЕсли;

    Но в 2012 году этот отчет правильно формироваться не будет, а доработать пока не смогу. Может кто сможет?

    Можно скачать переделанный отчет — за 2012 он формироваться не позволит и исправлен от вылета.

    Reply ↓
  44. Zdec1

    (44) а почему в 2012 году он будет не правильно формироваться?

    Reply ↓
  45. COFE

    Бухгалтер в панике. Просит срочно исправить отчет. Заранее огромное спасибо!!!

    Reply ↓
  46. COFE

    Интересно почему компания 1с ( а именно програмисты) не могу сразу сдалать все по нормальному, постоянно при каждом обновлении возникают различного рода ошибки, которые дорогая компания почемуто не спешит исправлять 🙁

    Reply ↓
  47. COFE

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

    За обработку спасибо, +1 обязательно поставлю!

    Reply ↓
  48. MANEK

    Посмотрите:

    http://infostart.ru/public/89650/

    Очень неплохой отчет.

    Пока не умеет анализировать налог с сумм превышения.

    И, наверное, не возьмет сложных иностранцев (принятые более чем на полгода временно пребывающие должны облагаться только страховыми ПФР).

    Для остальных отлично.

    Reply ↓
  49. evgen71

    Предлагаю попробовать заменить

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

    …….

    КонецЕсли;

    на

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

    …….

    КонецЕсли;

    У меня вроде сработало

    Reply ↓
  50. Agema

    Даже в 320-м релизе не исправлено, реквизит «НеВзиматьВзносыФОМС» удален. Есть описание — как восстановить, если актуально еще.

    Reply ↓
  51. vannav78

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

    За обработку спасибо, +1 обязательно поставлю!

    Reply ↓
  52. b-dm

    (51) Предлагаю всё же заменить на

    НеВзиматьВзносыПФРиФСС…хотя тоже не лучший вариант 🙂 но просто в случае с Сотрудник.НеВзиматьЕСНвФОМС.Получить

    иностранцы не делаются как надо 🙂

    Reply ↓
  53. Agema

    (54) b-dm, а много их? все равно они работают в «тени»… Но видно готовится жесткое законодательство по гастарбайтерам, поэтому и 1с подтягивается.

    Reply ↓
  54. Трям

    как хорошо, когда зайдешь на инфостарт и найдешь все что так необходимо! 🙂 спасибо автору

    Reply ↓
  55. ARTEM123456

    Спасибо большое за разработку!

    Спасибо! Помогло!

    Reply ↓
  56. rdm

    (51) evgen71,

    спасибо, работает.

    Reply ↓
  57. dimonsky

    Обработка отличная. Спасибо большое!

    Reply ↓
  58. denn15

    Наконец то заработало, спасибо огромное.

    Reply ↓
  59. Loader_1C

    Проверим, как раз искал такую.

    Reply ↓

Leave a Comment

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