Обновление ЗУП 3.1.2 (установка актуальных значений регистров и справочников на 2024 год)




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

16 Comments

  1. Agema

    А есть так для ЗУП 2.5 и ЗБУ 1.0, которые снимают с производства, но хотелось бы сверить расчеты с 3-кой ?

    Reply
  2. milov.aleksey

    (1) Agema, если в каталоге разработок не нашли, получается нет. Но могу сделать за 1тыс.руб. под конкретные релизы. Есть прошлогодняя ЗУП2.5.113.1. Это же типовые регистры, структура должна быть прежняя. ЗБУ 1.0 у меня нет. Только если дадите cf. С варезников скачивать, платя 20 — 600 рублей не хочу.

    Reply
  3. milov.aleksey

    (1) Переделал заполнение для ЗУП2.5.126.1 Если это надо для одной базы, то проще добавить записи вручную! Это в ЗУП3.1 регистры служебных данных закрыты для интерактивного редактирования даже для полных прав. Возможно только программное добавление.

    Reply
  4. user_2010

    интересно мне: кто еще на 3.1.2 сидит — какие планы в дальнейшем?

    Уже объявили, что новая форма 6-НДФЛ… переходить на что и когда?

    Reply
  5. milov.aleksey

    (4) Надежда, мы переходим сейчас на 3.1.4.167, т.к. похоже на 2-ку и 3-ку забили и будет ли поддержка регламентной отчетности, в т.ч. 6-НДФЛ неизвестно. Вопрос к разработчикам ЗУПов 3.1.Х Но в релизах писали, что поддержка прекратиться в 2017.

    Reply
  6. milov.aleksey

    (1) Сделал для ЗУП 2.5.126.1, опубликовал похожую обработку, но на обычной форме и с учетом разной структуры и названий регистров ЗУП3.1 и ЗУП2.5 https://infostart.ru/public/733906/ Прошу любить и жаловать.

    Reply
  7. user_2010

    скачала обработку. Посмотрела код и вижу не те размеры пособий…

    по ссылке указаны другие размеры пособий

    http://posobie-expert.ru/posobiya-v-2018-godu/

    хотя и с вашими размерами — тоже видела ссылки…

    Reply
  8. user_2010

    (5) понятно! Спасибо!

    так много изменений с 3.1.2 на 3.1.4… да еще она и нестабильная — многие откатывались…. не хочется проблем…

    Reply
  9. milov.aleksey

    (7) Надежда, я не юрист и не консультант по законодательству ТК РФ. Суммы брал из типового релиза ЗУП 3.1.4.167. Ваш источник достоверный? Нет чёткой сводной таблицы…гуманитарии, одним словом.

    Reply
  10. milov.aleksey

    (8) не хотите проблем? Тогда делайте копию, обновляейте её и тестируйте всем силами. Каждый по своим документам(создать, заполнить, расчитать, записать, провести, отменить), печатным формам отчетам. В ЗУП 3.1.4.120, 161 были ошибки в начислении и проведении НДФЛ, а потом в 164 исправление(требует перепровести последние документы). В последнем релизе 167 обновлена выгрузка в ИФНС. Будем тестировать в пн-вт. По результату отвечу.

    Reply
  11. user_2010

    (10) спасибо! обязательно поделитесь результатами…

    Reply
  12. Agema

    (6) спасибо! но оказывается сегодня выпустили обновление

    Версия 2.5.127

    В соответствии с Федеральным законом от 06.04.2015 № 68-ФЗ проиндексированы размеры пособий на детей с 1 февраля 2018 года.

    В соответствии с приказом ФНС России от 22 октября 2016 года № ММВ-7-11/633@ в справочник доходов по НДФЛ добавлены коды 2014, 2301, 2611, 3021.

    В соответствии с письмом ФНС от 28.12.2017 № ГД-4-11/26795@ в Расчете по страховым взносам за 2017 год данные по основному тарифу не разделяются по системам налогообложения, т.е. при использовании тарифа «Организации, применяющие УСН, кроме указанных в подпункте 5 пункта 1 статьи 427 НК РФ» и раздельного учета по деятельности, облагаемой ЕНВД, все сведения показываются в едином Разделе 1 с кодом «01».

    В форме Расчета по страховым взносам реализована проверки данных и контрольных соотношений показателей, введенных письмами ФНС России от 13.12.2017 № ГД-4-11/25417@, от 21.12.2017 № ГД-4-11/26010@ и от 29.12.2017 № ГД-4-11/27043@.

    В связи с сообщением ФНС о начале приема по ТКС заявлений о подтверждении права на осуществление уменьшения исчисленной суммы налога на доходы физических лиц на сумму уплаченных налогоплательщиком фиксированных авансовых платежей в документе «Заявление о подтверждении права на зачет авансовых платежей по НДФЛ» включены функции формирования и отправки файлов в ФНС.

    В соответствии с приказом ФНС от 18.01.2017 № ММВ-7-6/16@ (в редакции приказа ФНС России от 27.12.2017 № ММВ-7-6/1096@) обновлен формат обмена требованиями и уведомлениями по ТКС.
    Reply
  13. user_2010

    (9) Отбой! Ваши размеры пособий верные!

    Reply
  14. Oks_a

    Обработка для 3.1.3.274 подойдет?

    Reply
  15. milov.aleksey

    (14) Да, подойдёт, хотя для 3.1.3 есть другая https://infostart.ru/public/730490/

    Reply
  16. Светлый ум

    +1 Взял на вооружение, в марте 5 баз переведу и причешу вашим механизмом.

    Reply

Leave a Comment

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