<?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='\
Интересная разработка, попробую на досуге!
плюс за идею.
Мощно. Идея лежала на поверхности, но её надо было воплотить.
Единственно, интерфейс бы дорихтовать — «Группа отбор» это так и задумано, или не поменян заголовок?
Да ляп,спасибо — поправлю.
+1 за идею и реализацию… а то в «кишках» копаться иногда ой как неохота)
Спасибо, интересно. Обработка только для управляемых форм?
На скринах не увидел (портянку с кодом не изучал) формирует ли она сам процессор компоновки. Формирует? 🙂 Определение внешних источников данных?
(6) sanches,
Да, для управляемых — но добавить обычную не проблема — если кому тонужно
(7) 0vrcr,
Нет, она формирует программно только схему компоновки
Дальше я же не знаю что захочет сделать с ней программист
В режиме отбора надо самостоятельно вставить кусок кода куда нужно — т.е. получить схему, очистить например группировки,
потом скопировать и отредактировать код, далее отправить по назначению.
Спасибо, сильная вещь.
Хорошая идея!
Поддерживаю, нужная вещица! 🙂
Плюс!
Автор, можно реализовать своего рода «конвертёр» отчетов. Чтобы обработка создала файл отчета на основе готового на СКД (ну или просто на основе СКД) и туда прописала этот код. Это так, идея такая в голову пришла)
Попробую протестить на досуге.
За идею плюс (+)!
(13) SeiOkami,
да, интересно, надо обмозговать как это сделать получше…
Все таки отчет не только схема
«Плюс».
Не поленился.
офигеть +, одно дело мысль, другое дело -реализовать, просто преклоняюсь…
А для обычных форм можете выложить?
спасибо автору за интересную разработку, очень помогает при разработке отчетов
На 8.2.13 не работает.
(20)
8.2.17
на предыудищих релизах может не работать, если в платформе были изменения в компоновке
Респект автору! Очень полезная вещь, хоть увидеть все кишки скд-шки можно.
(15)
Плюс однозначно, а если еще реализует «конвертёр» (13)SeiOkami тогда 5 плюсов.
Начала изучать СКД. Долго получилась с программной установкой отбора! Думаю с помощью вашей разработки станет более понятнее механизм СКД! Спасибо!
+ !!! Мне эта обработка точно пригодиться !!! 😉
Супер!!! + однозначно
Присоединяюсь к просьбе.
Крута! Спасибо, пригодилась!
выложите для обычных форм
Спасибо за идею
Интересная идея. Будет время попробую поискать с практической точки зрения, вроде и задачка похожая есть.
(9)
Т.е. «иммитирует» программное создание Отбора, Настроек, Добавление полей, Параметры, Запрос и все?
Т.е. основного кода принципа создания и «контроля» за СКД — не формирует?
(13) SeiOkami,
Какого «готового» СКД? Здесь нет создания самого отчета, его обработки и вывода. Только — схема.
(3) Yashazz,
Если мощно — то надо написать, что не сам СКД делает программно, а схему настроек.
(22) integragirl,
нет, не можно. Это не тот конвертер.
(24) revril,
более понятным не станет.
Применение обработки — поменять/добавить параметры и подобное (при том, что еще нужно знать, в какое место этот код добавлять, и где). Но не «сделать отчет на СКД».
(8)
(20) wowik,
(21)
— хоть стой, хоть падай. Привет от 1с.
(25) Al-X,
судя по аватаре — нет, не пригодится.
Уже ничего не поможет.
(29) mi4asib,
на самом деле, kiruha, доделайте уж страждущим. Пусть радуются 🙂
Так она же для разработчиков — запустил режим управляемого приложения — переконвертировал и все.
Минимум усилий
Мощная штуковина =)) автору большое спасибо! )))
если будут обновления под нее — вообще шоколад, а то галки по скд искать всесто привычного кода — это сатанизм =))
Не работает, в клиент серверном варианте.
Файл(отчет), нужно передавать на сервер через временное хранилище.
(39)
Ок, спасибо — поправлю как только с работой разгребусь
ТОже плюсану!!!Много работы проделано
Полезная штука
(0) Обычные формы, плизззз! Заранее плюс и спасибо!
За работу жирный плюс, думаю некоторые вещи можно допилить =)
Вопрос автору, разработка данной обработки будет продолжаться?
Классная штука.
Попробовал — очень полезно, не надо вспоминать что да как делается.
Еще бы код вставить который формирует программно отчет.
Да обычных форм не хватает, а код который формирует программно отчет можно и самому написать и в себе в шаблонах сохранить. Автор — молодец.
Автор ваша работа вещь знатная слов нет. Только есть к вам небольшая прозьба все ето дело виложить для обычных форм. Буду очень и очень признательным. Зарание спасибо
Заметил, что при использовании нескольких групп полей в исходном отчете получается не несколько групп на одном уровне, а группы вложенные одна в другую. Хотя вряд ли кто будет так программно выводить. Как правило достаточно получить результирующую табличку. Отличная разработка. Неплохо бы добавить НЕ управляемую форму.
Хорошая обработка, но … хотел добавить обычную форму, открываю управляемую и вижу, что ВыполнитьПреобразованиеСервер() для преобразование вызывает вот такой вот хлам:
Функция bf8ca7868f0b46ca8e0aff9842ca2f2e
(a4bc2cc3040f4a127185588664e56,b3c8d32b68439b8ceb9de3cc700a94,af5874c967904edb82d0ebdf07778a4a,e7f008e4c48e6a042534817346cbc,da9c9c8b78411f9975155bdaac975c,aac765476383f42f6f21678844,d5e02ed4aa386614f3035c50060,bda8d53b5c464b38ade2958a60674b0e,ea312c14e25a862559cbcd8af79,b892134c74215a0dbae7dd491ebd8,df79010b;
…
… и так далее.
Просьба заменить на адекватный текст, нам тут шифроваться не от кого !
Ковертирует только основной макет, а если у меня составной отчет из 8 схем — то не видит.
dyak84, Если управляемую обработку (отчет) поместить в дерево конфигурации — то её можно будет открыть в обычном режиме (псевдоуправляемый).
Вместо обычных форм можно использовать толстый клиент, или сделать обычную форму самому примерно за час.
Скачал, хотел посмотреть, как генерятся программно пользовательские поля.
ПользовательскоеПолеВыражениеКомпоновкиДанных
К сожалению, заголовки выбрало, а формулы — нет
По описанию вещь полезная, жаль посмотреть нет денег
Новые публикации невозможно сделать «без смартмани» — это к админам сайта
Также сейчас нет времени на поддержку — на днях выложу с открытым кодом , чтобы править могли все кто пожелает
(56) а можно по просить «на днях» поскорей, хоть сырой вариант?
выглядит круто, не пробовал
ест уже вариант для загрузки без обсфукации, или пока ещё ждём ?
Нужная вещь, то что искал! Только вот ошибочки бы поправить или код открыть,)
Хотел посмотреть, что там …
но получаю ошибку
Каталог не обнаружен ‘C:UsersИвановDocuments\_БухКОРПОтчетыОтчетОДвиженииТМЦ_БП Корп.erf’
{ВнешнийОтчет.КонверторСхемыСКД.Форма.ФормаОтчета.Форма(128)}: ОбъектОтчет=ВнешниеОтчеты.Создать(ПутьКФайлуКомпоновки);
{ВнешнийОтчет.КонверторСхемыСКД.Форма.ФормаОтчета.Форма(150)}: ЗаполнитьМакеты();
по причине:
Корп.erf’
Ошибка подключения внешних метаданных
по причине:
Каталог не обнаружен ‘C:UsersИвановDocuments\_БухКОРПОтчетыОтчетОДвиженииТМЦ_БП
Я так тоже хочу стартмани зарабатывать , «чтобы править могли все кто пожелает» … )))
(61) скорее всего открываете с каталога, который недоступен на сервере. На серверных базах лучше всегда открывать инструменты с общедоступного каталога.
(62)
Это уже устаревшая разработка — уже не поддерживается.
Скачал у вас также обработку за 1см
(63) Спасибо. Вы оказались правы. В БД на моем компьютере все открылось без проблем. Автору респект!