Обновления 2012 . Для пользователя, бухгалтера (пакет отчетов и обработок)




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

27 Comments

  1. Доня

    Собрать готовые отчеты в один флакон — тоже нужная работа!

    Reply
  2. Agema

    Извините, а для бюджетки 6.1 подойдет?

    Reply
  3. kompas-dm

    (2) Управление отчетами — да, а сами отчеты нужно пробовать. Все-таки Бюджет, там совсем другие субконто…

    Reply
  4. Berrimor

    Посмотрите http://infostart.ru/public/14474/ и не изобретайте велосипед с квадратными колесами

    Reply
  5. kompas-dm

    (4)

    На ИС обработок по управлению внешними отчетами несколько. Хорошие, профессиональные. Этот вариант позволяет редактировать отчеты, обработки , добавлять новые и т.д. не притрагиваясь к 1С на компьютере пользователя.

    .

    У azernot другая заточка.

    Reply
  6. CheBurator

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

    Reply
  7. kompas-dm

    (6) «Нас уже 103060». Простых пользователей — 98 %. Для запуска серьезных работ нужен специалист, время и контакт с клиентом.

    Работу регламентированных отчетов знают все. Просто и надежно.

    С уважением отношусь к механизму azernot’а . Его обработка без доработок, с сохранением авторства использована мною в трех проектах.

    Ориентировался на бухгалтеров, пользователей, находящихся без поддержки 1С-ника . Фишка не в управлении отчетами, а в составе пакета…

    Reply
  8. artbear

    (7) Пока минусую из-за цитаты «Фишка не в управлении отчетами, а в составе пакета…»

    Где состав пакета? где хотя бы краткое описание каждого отчета?

    Поправишь, минус уберу.

    Reply
  9. kompas-dm

    (8)

    В составе пакета представлены ряд обработок и отчетов для ежедневной работы ( стандартные, собственные и очень интересный, профессиональный отчет от http://infostart.ru/public/14467/).

    См СкринШоты, рис 3,4,5.

    Да и размер скачивания 321 кб

    Reply
  10. artbear

    (9) Спасибо. Минус убрал.

    Reply
  11. sema-5263

    Отчеты понравились.Очень.Только вот, самый нужный для меня..Налоги. Есть пару вопросов. Ну тот же Пенсионный. Вначислении идет разбивка сумми по фондам (32,2%,4%,2%), а вот с «Оплочено» у меня идет одной суммой,попадая ПФ с з/п с банковской выписки.Хотя…платежек было 3(32,2%,4%,2%),и в банковской выписке проходит тоже три суммы, а не одна общая, как показано в отчете. В итоге, остатки к начислению в отчете,не совпадают сфактическими по бух учету. Может кто-то объяснит в чем проблема???

    Reply
  12. dobraleks

    отчеты понравились, вроде иду, но пока проверяю еще..

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

    Если ((сч.Забалансовый = 0) И ((сч.видсубконто(2) = ВидыСубконто.НеоборотныеАктивы) или (сч.видсубконто(3) = ВидыСубконто.НеоборотныеАктивы)))

    //Если (сч.Забалансовый = 0)и ((строка(сч.видсубконто(2)) = ВидыСубконто.НеоборотныеАктивы) или (строка(сч.видсубконто(3)) = «Необоротные активы») )

    Reply
  13. kompas-dm

    (13) a237, Пожалуйста

    Reply
  14. Фред

    В публикации упомянута Украина…

    Вопрос- данный продукт будет работать в российских конфигурациях?

    Reply
  15. kompas-dm

    (15) Управление внешними отчетами — да, сами же отчеты затачивайте под себя. В России другой план счетов и субконто.

    Reply
  16. Фред

    (16) Спасибо!

    То есть это навигатор по отчетам? Комплектовать самостоятельно или есть набор по умолчанию?

    Reply
  17. kompas-dm

    (17) По умолчанию — в пакете много отчетов и обработок. Прочитайте описание настройки и ВПЕРЕД самостоятельно. Навигатор — для любой конфигурации 7.7.

    Reply
  18. Фред

    (18)

    Загрузил…Попробовал.

    Сам инструмент нормально загрузился, работает.

    Первые три папки с отчетами (Налоги,денежные счета и ТМЦ), судя по

    всему, не от моей семерки.

    При загрузке ругаются. Остальное (ОСВ и Технологические обработки)

    работает.

    По моему мнению, сложноват процесс добавления новых отчетов.

    Хотелось бы указанием пути прямо из меню.

    + за проведенную работу.

    Спасибо.

    Reply
  19. rus128

    «В публикации упомянута Украина… »

    А я наоборот нигде (в шапке и кратком описании) не увидел этих упоминаний — только в разделе обновлений от 9 августа 2011 года (по новому налоговому кодексу).

    Reply
  20. AlexTorin

    Благодарю за проделанную работу! Очень нужно и своевременно!

    Reply
  21. Mika-Marinka

    Реально пригодилась) Очень круто) Большое спасибо

    Reply
  22. z5515
    Reply
  23. kompas-dm
    Reply
  24. miramak

    Очень нравится пакет обработок, но, две работают у меня почему-то не правильно.

    В обработке «Основные средства 2012г» пишет:

    Ти.Загрузить(т_);

    {D:БО СБФДБТ1SBUKREXTFORMSОСНОВНЫЕСРЕДСТВА2012.ERT(593)}: Значение не представляет агрегатный объект (Загрузить)

    Что это такое не знаю?

    И в обработке » Расчет_налогов»:

    не правильно считает налоги к уплате,в расчет попадает итоговая сумма (выделенная цветом) по сч.651 (в частности). Можно ли это исправить?

    Reply
  25. kompas-dm

    (25) Проверю «Расчет налогов» и отпишу. А «Загрузить» — у Вас нет компоненты 1СPP.

    Положите ее в каталог ИБ.

    Reply
  26. miramak

    Спасибо за быстрый ответ и 1СРР, буду ждать Ваших результатов

    Reply
  27. miramak

    Посмотрела обработку «Основные средства 2012г»- на опции «бухгалтерский учет» в наличие ОС показывает не корректно период. Выбираю квартал, показывает данные на последний день квартала, а это искажение данных (т.к. остатков на начало периода не было). И в шапке не помещается название предприятия.

    Reply

Leave a Comment

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