<?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='\
Хм с трудом представляю для чего …. ну может быть кому и пригодиться))))
(1) Sasha255n,
Клиенты хотели, чтобы в предупреждениях ключевые слова отображались цветом (ошибка — красные, НЕошибка — синие).
И таких предупреждений куча.
Копировать и корректировать для каждого — я ещё в уме, чтобы этого не делать!
Вот и родилось решение
тю, в 8.2 не работает )
(3) Кто сказал, что ФорматированнаяСтрока для 8.2?
(4) Поручик, Платформа: 1С: Предприятие 8.3
(3) WKBAPKA, Платформа: 1С: Предприятие 8.3
(6) А мне-то вы зачем говорите. Я и так давно знаю.
(7) Поручик, Я думал, что это вопрос мне )))
на 8.3. тоже не взлетело
Ошибка инициализации модуля: Форма.Форма.Форма
по причине:
{Форма.Форма.Форма(27,20)}: Переменная не определена (СтроковыеФункцииКлиентСервер)
МассивБлоков = <<?>>СтроковыеФункцииКлиентСервер.РазложитьСтр
(10)
Рубрики : Практика программирования
Тип: Статья
Платформа: 1С: Предприятие 8.3
Конфигурация: Не имеет значения
Операционная система: Windows
Страна: Россия
использую Демонстрационная конфигурация «Управляемое приложение» для 8.3.
И в этой конфигурации я такого СТАНДАРТНОГО модуля почему то не нашел!
И вообще, если каждую разработку что бы ее оценить, нужно проверять по коду, то к чему этот цирк? или пишите, в каких конфигурациях ее можно использовать и что она не работает автономно, а только в составе некоторых типовых конфигураций!
(11) WKBAPKA, Цирк — это ваши «прицепочки». только вы один задались вопросом что такое «СтроковыеФункцииКлиентСервер».
Создавая публикацию было указано, что она «не претендует на уникальность» и «делалась для себя».
Если вам лень (а скорее вы просто не знаете типовых процедур!) — ГУГЛ вам в помощь.
Конфигурация: Не имеет значения — ясно-понятно, что она ни к одной конфигурации не имеет отношения. Допиливайте для себя — если интересно.
Есть ещё у вас вопросы?
(11) WKBAPKA,
Демонстрационная конфигурация — показывает некоторые приемы, а не ВСЕ ВОЗМОЖНОСТИ
Для этого есть БИБЛИОТЕКА СТАНДАРТНЫХ ПОДСИСТЕМ
WKBAPKA, Если вы не знакомы с стандартными процедурами 1С — ваша беда..)))
СтроковыеФункцииКлиентСервер — это общий модуль.
есть свой способ разложить строку в массив — пользуйтесь им (перепишите в в коде этот пункт) ))
напоминаю с чего все началось…
а все остальное это явно перебор.
Форматированная строка.
Пример работы параметрами с форматированной строкой.
Функция не претендует на универсальность, но вдруг кому пригодится.
Есть мысли как улучшить (для себя реализую!)
Для простых строк вполне может подойти
где тут «для себя», «не претендует на уникальность»?
и покажите мне, где я задал вопрос
Внимательно перечитайте пост №9.
А вообще да, вы гуру 1С, а я тут так себе иногда подрабатываю, там ИТС установить комуто… студент одним словом!
(14) WKBAPKA,
Ну вот вы сами себя на место и поставили
мда … когда у человека нечем оправдаться, а доказать правоту сильно хочется, он переходит на личности…
(16) WKBAPKA,
Уважаемый.. а где тут «на личности»?
И перед чем я должен оправдываться? перед вашей несообразительностью (простиТЕ!)
Не нравится — до свиданья.. зачем вы тут?
обычно я очень толерантный к людям… но вы молодой человек однозначно ХАМЛО… сначала вы усомнились в моих знаниях в 1С — похоже вы так долго программируете, а возможно обладаете Х-фактором в этой области, что все остальные тут ничтожны перед вашим умищем… уж кто то, а вы уж точно знаете все стандартные функции 1С… ну это и не мудрено, ведь это дано только избранным… естественно, таким божественным как вы… сам Нуралиев приходит ночью в ваши сны и посылает импульсы знаний в ваше умище… не то что наши жалкие умишки…
потом вы тупо начали меня троллить… я нигде ничего плохого не написал по поводу вашей публикации, даже, о боже, как я мог, поставил плюс… когда просто написал, что не работает, вместо того что бы просто написать, что имеет смысл проверять на типовых конфигураций, вы меня просто обосрали… не знаю как у вас там в великой и могучей, а у нас тут у мелких хохлов из типовых конфигураций на платформе 1С:Предприятие 8.3. только есть Демонстрационная конфигурация. А проводить эксперименты с конвертациями типовых конфигураций в 8.3, что бы посмотреть в работе творение не признанного ГЕНИЯ , который не удосужился нужную функцию скопировать в свою обработку в модуль объекта, и тупо хамит, как то не особенно хотелось… то ли он не ГЕНИЙ вовсе, то ли творение так себе!
(12)
да ну? вы пишите как читаете?
Для этого есть БИБЛИОТЕКА СТАНДАРТНЫХ ПОДСИСТЕМ
аффтар!!!!! пеши чащее!
(18) WKBAPKA, остыньТЕ, коллега 🙂
оно не здесь и не сейчас 🙂
тс в начале топика самого поручега локотком зацепил — и ничего 🙂
в целом тс заслуживает
все задатки для карьеры во фране
(22) tango,
да я особо и не нервничал 🙂 я против ТС ничего не имею. но ТС должен делать различия между «прицепочками» и замечаниями… а не сразу в штыки… ведь его никто не просил публиковать свою разработку. Раз он это сделал, значит он надеется на одобрение со стороны сообщества в виде +. Но почему то не понимает, что далеко не каждый будет перебивать конфигурации на новой платформе, что бы посмотреть на чудо творения. Вместо того что бы написать в каких конфигурациях или на худой конец взять эту злосчастную функцию выдернуть из типовой и запилить в модуль объекта так что бы обработка имела самодостаточность, он начал тут брызгать слюной на лево и на право.
Честное слово, логики не понимаю…
я кстати такую штуку еще на 8.1. хотел запилить. Но убогенько смотрелось в табличном документе 🙁
(24) WKBAPKA,
хреново хотели, батенька
(25) в приличном обществе за результаты теста если не платят, то благодарят
под сенью флагмана нехотя принимают (старики помнят, когда политикой флагмана был запрет на публичную инфу о косяках)
ваш подход еще более невменяем
(27) tango, вам я ни чем не обязан и сюда не приглашал даже…
ахахах… я потрясен
(31) WKBAPKA, что вам ещё остается…
(30) вас кто-то пригласил на ИС?
**
зря спросил, конечно. у вас ведь и интернет уже крякнутый
(34) ты не понимаешь. это очень важно — ты, твои публикации, мысли обо всем и отношение ко мне