Расшифровка дебиторской и кредиторской задолженности с датой возникновения




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

19 Comments

  1. nata_87

    Отчет не работает — выдает ошибку при формировании — Поле объекта не обнаружено (БухгалтерскиеИтоги)

    Reply
  2. mulen

    Добрый день! почитайте внимательно описание отчета, для вашего релиза Бухгалтерии надо скачать еще обработку Бухгалтерские Итоги (тут же выложена) и загрузить ее в базу как описано выше. Удачи!

    Reply
  3. PokerFace

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

    Reply
  4. gga

    1С:Предприятие 8.3 (8.3.10.2580) не работает обработка, всё скачали как в описании, за полугодие работало, за 9 мес. — Поле объекта не обнаружено (БухгалтерскиеИтоги). Платформу и релиз обновляли после первого полугодия.

    Reply
  5. mulen

    Добрый день! к сожалению или к счастью, разработка не стоит на месте, и начиная с платформы версии 8.3.10.ХХХХ и выше возникает ошибка работы расширения Бухгалтерские Итоги. Сегодня устранила ее и выложила обновление. Вам необходимо заново скачать расширение БухгалтерскиеИтоги.cfe и загрузить его в программу.

    Reply
  6. mulen

    (4) Добрый день! к сожалению или к счастью, разработка не стоит на месте, и начиная с платформы версии 8.3.10.ХХХХ и выше возникает ошибка работы расширения Бухгалтерские Итоги. Сегодня устранила ее и выложила обновление. Вам необходимо заново скачать расширение БухгалтерскиеИтоги.cfe и загрузить его в программу.

    Reply
  7. user705000_zloi267

    Добрый день!Спасибо все работает,но Отчет не выдает сведений по счету 60.02.1

    Reply
  8. mulen

    Добрый день, Андрей! Отчет написан и протестирован для типового плана счетов, а наличие счета 60.02.1 говорит о том, что у вас измененный. В теории добавление субсчета к счету 60.02 не должно отрицательно сказаться на формировании отчета. Какая у вас аналитика по счету 60.02.1? должна быть такая же как и у 60.02. Как вариант попробовать внести некоторые изменения в конфигурацию отчета (имеет смысл пробовать при совпадении субконто): откройте обработку в конфигураторе, зайдите в модуль формы, находите процедуру Процедура РасшифровкаСтроки1230_1520_Формы1(ПолеРезультат,ВидРасчетов) и заменяете там счет 60.02 на счет 60.02.1 следующим образом:

    Процедура РасшифровкаСтроки1230_1520_Формы1(ПолеРезультат,ВидРасчетов)

    ————————- //———————————

    ————————- //———————————

    ПС = ПланыСчетов[«Хозрасчетный»];

    Счет60_01 = ПС.РасчетыСПоставщиками;

    //Счет60_02 = ПС.РасчетыПоАвансамВыданным;

    Счет60_02 = ПС.НайтиПоКоду(«60.02.1»);

    Reply
  9. user705000_zloi267

    (8)Добрый день!спасибо,все работает!а можно как-нибудь с вами напрямую связаться?

    Reply
  10. user705000_zloi267

    Добрый день!а как в макете задействовать строку с номером счета?

    Reply
  11. superbison

    Расшифровочку бы еще, вообще бы хорошо было

    Reply
  12. SNM2009

    Здравствуйте!

    При подключении расширения Бухгалтерские Итоги выходит ошибка:

    (Критичная) : Значение контролируемого свойства РежимСовместимостиИнтерфейса у объекта не совпадает со значением в расширяемой конфигурации

    Как можно исправить ситуацию?

    1С:Предприятие 8.3 (8.3.10.2639)

    Бухгалтерия предприятия, редакция 3.0 (3.0.52.36) (http://v8.1c.ru/buhv8/)

    Reply
  13. SNM2009

    Здравствуйте!

    При попытке установить расширение Бухгалтерские итоги выходит ошибка:

    (Критичная) : Значение контролируемого свойства РежимСовместимостиИнтерфейса у объекта не совпадает со значением в расширяемой конфигурации

    1С:Предприятие 8.3 (8.3.10.2639)

    Бухгалтерия предприятия, редакция 3.0 (3.0.52.36)

    Что можно сделать в такой ситуации?

    Reply
  14. user1038835

    Здравствуйте!

    Возникает та же ошибка. Специально покупали абонемент, чтобы скачать это расширение, а в итоге все равно не работает

    При попытке установить расширение Бухгалтерские итоги выходит ошибка:

    (Критичная) : Значение контролируемого свойства РежимСовместимостиИнтерфейса у объекта не совпадает со значением в расширяемой конфигурации

    1С:Предприятие 8.3 (8.3.10.2639)

    Бухгалтерия предприятия, редакция 3.0 (3.0.52.36)

    Что можно сделать в такой ситуации?

    Reply
  15. mulen

    Напишите ваше сообщение

    (13) Добрый день! протестировала на релизе платформы 8.3.10.2667 ошибок не выходит, функционал отрабатывает. Обновите платформу 1С до версии 8.3.10.2667 и выше и будет работать. На данный момент не работает, тк версия вашей платформы ниже версии обработки. Понизить нельзя, иначе у других не будет работать. Актуальные на текущий момент платформы 1С уже 8.12.

    Reply
  16. mulen

    Добрый день! протестировала на релизе платформы 8.3.10.2667 ошибок не выходит, функционал отрабатывает. Обновите платформу 1С до версии 8.3.10.2667 и выше и будет работать. На данный момент не работает, тк версия вашей платформы ниже версии обработки. Понизить нельзя, иначе у других не будет работать. Актуальные на текущий момент платформы 1С уже 8.12.

    Reply
  17. SNM2009

    1С:Предприятие 8.3 (8.3.13.1513)

    Бухгалтерия предприятия, редакция 3.0 (3.0.65.80)

    Ошибка та же…

    Reply
  18. boroda69

    Добрый день. Интересуюсь отчетом, но беспокоит, что он не обновлялся до платформы 8.3.13.1513. Возможно я ошибаюсь. Напишите у кого заработало. Спасибо!

    Reply
  19. boroda69

    Ошибка та же… не исправлен режим совместимости с 8.3.13

    Reply

Leave a Comment

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