<?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='\
Хорошо сделано спасибо
Только интерфейс мне показался неудобным много расписывать неохота:
Кнопка «Выполнить» справа непривычно
Результат на отдельной вкладке
Запросы, Компоновка все в разных таблицах непонятно
————-
в стандартных консолях на 8.1 еще была дерево запросов с иерархией и сохранение в файл
еще жаль что ничего принципиально нового 🙁
Евгений, спасибо за отзыв. По поводу интерфейса — учту на будущее, но скорректирую: список запросов/компоновок хранится как раз в виде дерева, только представление реализовано в виде иерархического списка. Сохранения в файл пока нет — только сохранение значений между сеансами пользователя.
Огромное спасибо!
уу.. класс. спасибо даже на тонком клиенте 8)
Конечно оно не будет как 8.1 так как архитектура 8.2 другая… Просто впадло постояно бегать из конфигуратора в систему и смотреть результат запроса, вот это плюс. А так собственно ниче особено. но автору плюс поставил так как время потратил свое!
{Форма.Форма.Форма(963,36)}: Тип не определен (СхемаКомпоновкиДанных)
СхемаКомпоновкиДанныхЛок = Новый <<?>>СхемаКомпоновкиДанных;
вот такая ошибка….
Доступность:
Сервер, толстый клиент, внешнее соединение.
Хорошая штука. хотелось бы пользоваться. поправьте пожалуйста если не трудно
upd v0.2: возможность настройки результата запросов и компоновок, возможность (авто-)сохранения / восстановления настроек консоли в файл(-ы), обновлен интерфейс.
(6) на тонком клиенте не взлетит.
отлично!!!
ток на платформе 8,2,10,77 не видна страница «результат запроса», версия консоли 0,2
(8) перед выполнением запроса, в консоли нужно определить настройки вывода результата на одноименной закладке.
Чет у меня не получилось. 😥
С Настройками компоновки все нормально, но с запросами никак нет там закладки «Настройки вывода»
(10) Я говорил про эти настройки:
Чет не пойму, создал с помощью «конструктора компоновки» отчет, настроил вывод, нажал «ок» и всеравно нужно заново настраивать внешний вид. Ну это ладно.
Закончил, нажал сохранить настройки и все пропало 🙁 Потом нажал восстановить и 1с вылетела по неизвестной ошибке.
Выложи пожалуйста файлик с примером отчета на СКД и обычного запрса
(12) Держи — RConsoleAllList.xml, здесь настройки одного запроса и одной компоновки, загрузишь их с помощью Файл-Загрузить-Загрузить значения всех списков. Насчет того, что <… создал с помощью «конструктора компоновки» …> — читай п.2.5 описания 😉
Спасибо….
Описание я не читал 😳
Что-то проблема с выводом Параметров, подставляются пустые значения и без определения типа.
Достаточно удобная штука. Сегодня попользовался на работе, завтра продолжу.
{Форма.Форма.Форма(963,36)}: Тип не определен (СхемаКомпоновкиДанных)
СхемаКомпоновкиДанныхЛок = Новый <<?>>СхемаКомпоновкиДанных;
{Форма.Форма.Форма(967,37)}: Тип не определен (СхемаКомпоновкиДанных)
СхемаКомпоновкиДанныхЛок = Новый <<?>>СхемаКомпоновкиДанных;
{Форма.Форма.Форма(1021,17)}: Тип не определен (СхемаКомпоновкиДанных)
Схема = Новый <<?>>СхемаКомпоновкиДанных;
{Форма.Форма.Форма(1045,36)}: Тип не определен (СхемаКомпоновкиДанных)
СхемаКомпоновкиДанныхЛок = Новый <<?>>СхемаКомпоновкиДанных;
{Форма.Форма.Форма(1056,139)}: Тип не определен (СхемаКомпоновкиДанных)
СКДКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(?(СхемаКомпоновкиДанныхЛок = Неопределено, Новый <<?>>СхемаКомпоновкиДанных, СхемаКомпоновкиДанныхЛок)));
Огромное спасибо! инструмент отличный, использую почти ежедневно. Очень удобно. плюсую однозначно
Спасибо!
Очень простой запрос.
——————————————————————
ВЫБРАТЬ
ДополнительныеНачисления.НомерСтроки
,ДополнительныеНачисления.План
,ДополнительныеНачисления.ВидРасчета.Расчет_Способ Расчет_Способ
,ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.ЗначениеБаза, 0) + ЕСТЬNULL(ДополнительныеНачисленияБазаДополнительныеНачисления.ЗначениеБаза, 0) КАК База
ИЗ
РегистрРасчета.ДополнительныеНачисления КАК ДополнительныеНачисления
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
&Измерения,
&Измерения,
,
Регистратор = &Ссылка
И ВидРасчета.Расчет_Категория = &Категория И Подразделение = &Подразделение) КАК ДополнительныеНачисленияБазаОсновныеНачисления
ПО ДополнительныеНачисления.НомерСтроки = ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки И ДополнительныеНачисления.Сотрудник <> ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисления.БазаДополнительныеНачисления(
&Измерения,
&Измерения,
,
Регистратор = &Ссылка
И ВидРасчета.Расчет_Категория = &Категория И Подразделение = &Подразделение) КАК ДополнительныеНачисленияБазаДополнительныеНачисления
ПО ДополнительныеНачисления.НомерСтроки = ДополнительныеНачисленияБазаДополнительныеНачисления.НомерСтроки И ДополнительныеНачисления.Сотрудник <> ДополнительныеНачисленияБазаДополнительныеНачисления.Сотрудник
ГДЕ
ДополнительныеНачисления.Регистратор = &Ссылка
И ДополнительныеНачисления.ВидРасчета.Расчет_Категория = &Категория
——————————————————————
По нему он заполняет пустые параметры, которые нельзя отредактировать.
Количество верное, но даже их названия «не цепляет».
Прикол в том что и отредактировать не даёт — ни название ни значение ни тип.
Вот мне теперь или перегестрироваться на сайте или ждать пока сутки пройдут, чтобы
скачать следующее решение.
Изучи и используй
Инструмент
У меня как у (15) и (21) не определяются имя параметра и его тип в таблице параметров. В отладке вроде бы все нормально.
Редактировать поля также не дает.
(22) Подробнее… тип поля, запрос.
По предоставленной информации ничего не могу сказать.
На любом запросе имею картину как у (21). Т.е. Кол-во строк = кол-ву параметров, но имена и значения не заполнены. По Даблклик или по «изменить» ничего не происходит
Пример запроса:
(24) Извините я чуток ошибся это не моя обработка (я просто подписан на эту тему), увидел почте уведомление и думал что по моей консоли вопрос. Так что ждем автора или можете попробовать что то подобное[8.2] Управляемая консоль отчетов (только управляемые формы)
(25) Да, я видел вашу консоль — хорошая. Но хотелось бы, чтоб и СКД была в том же пакетике, что и запросы.
Ждем автора.
При создании конструктором настроек очета и последующей загрузке, вылетает программа с ошибками XDTO. Это я не так делаю или ошибка в обработке? Зачем есть конструктор, если не загружать или как загрузить по другому? п.с. версия платформы 18.102
На 1С:Предприятие 8.2 (8.2.18.96) при попытке открыть xml ошибка:
{Форма.Форма.Форма(718)}: Метод объекта не обнаружен (Получить)
сохраненноеЗначение = СериализаторXDTO.ПрочитатьXML(ЧтениеXML).Получить();
(28) Вопрос снят. Я не то делал
При открытии в БП 3.0 (платформа 8.3.4.365) выдает ошибку:
жаль что параметры не заполняет
обработка сырая
Параметры не заполняет. Вернее заполняет пустыми строками, которые нельзя изменить. Посмотрел внутри все есть, на форму с сервера значения не попадают.
Сделал параметры, но СКД нормально не работает. Все настолько не очевидно Очень жаль, идея хорошая. Со времен БП 2.0 нет ни одной нормально работающей консоли отчетов. Прикрепил обработку с исправленными параметрами. Надеюсь автор не будет против. Кстати нормально работает консоль с ИТС: КонсольСистемыКомпоновкиДанных.erf (тоже прикрепил)
(34)
Как вариант, можно это попробовать:
http://infostart.ru/public/179939/