<?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='\
Как внешний отчет его использовать нельзя. Это ограничение использования управляемых форм в конфигурациях, работающих в режиме «Обычное приложение», к которым относится УТ 10.3.
Скачал для конфигурации УТ 10.3
Мне отчет не понравился:
— работает только в режиме тонкого клиента (УФ)
— немного глючный тормозной, даты только из фиксированных периодов
Но несправедливо будет не сказать:
Отчет позволил получить нужные/компромиссные данные, таваровед доволен (без напильника в виде Excel не обошлось,… но это в принципе дела пары минут)
Резюме: спасибо автору.
Не за что.
Управление торговлей 10.3:
Требует вставки в конфигурацию. Это ограничение использования управляемых форм в режиме обычного приложения, в котором работает конфигурация Управление торговлей 10.3.
Периоды — сгруппированные в соответствии с выбранной периодичностью даты установок цен номенклатуры. Как следствие, очень быстро обрабатываются даже очень большие объемы данных.
Если не затруднит, хотелось бы узнать про глюки, надо поправить.
1) можно не использовать управляемые формы 🙂
2) глюк один я заметил, если период не выбрать… ошибочка вылазит
3) Группировка по характеристикам должна быть опцией…. (многим она не нужна… а строк много выводится пустых)
Ну обычно требуется сравнить цены на две точные даты (что же мне ставить период 1 день) и получать жуткие тормоза и 100500 колонок.
По идее сделать можно чтоб быстро работало на заданные даты… но согласен что сложнее, нужно голову поломать.
Ну значит глюков нет)
1. На вкус и цвет все фломастеры разные.
2. Без периодичности отчет теряет смысл, можно в принципе ругнуться, но 1С и сама неплохо ругается.
3. Это же СКД. Меняйте группировки как Вам нравится, создавайте сколько нужно вариантов отчета.
4. А кто мешает выбрать произвольный интервал, от Даты1 до Даты2. Даже если выбрать интервал — «День», отчет покажет только те дни, когда изменялись цены. Т.о. Вы получаете поденную динамику между двумя нужными Вам датами. Если нужно процентное соотношение между конкретными датами, можно взять период побольше.
Хотя с периодами Вы правы, сделаю, чтобы, если не задан период, бралась начальная и конечная дата.
Добрый день. Не получается подключить обработку. Метод объекта не обнаружен (Сведения ОВнешнейОбработке) Версия УТ 11.1.9.70. Подключаю через Администрирование/Дополнительные отчеты и обработки
Добрый день. Ошибка загрузки документа.
http://v8.1c.ru/8.1/data-composition-system/settings }useInGroup Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema }anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {
1С:Предприятие 8.2 (8.2.19.83)
«Управление торговлей», редакция 10.3 (10.3.8.9)
(8) gkstrade, Здравствуйте.
Ваша конфигурация переписана. К сожалению, не могу Вам ничего посоветовать, так как не вижу, с чем имею дело, но номер конфигурации (6-летней давности), подсказывает мне, что она переписана вхлам.
(7) Dialservis, Здравствуйте.
Я не рассчитывал на включение отчета в состав конфигурации, мне приятно, что Вы решили использовать его постоянно. В ближайшее время выложу версию с возможностью постоянного использования в составе конфигурации.
(7) Dialservis, Выложил версию с Информацией для использования во внешних отчетах.
(11) Horandy, спасибо. Все работает.Мне очень пригодится.
(9) Horandy, Управление торговлей», редакция 10.3 (10.3.21.1)
Ошибка загрузки документа.
http://v8.1c.ru/8.1/data-composition-system/settings }useInGroup Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema }anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {
(1) Две формы в одном отчете (основная и дополнительная) позволяют использовать оба варианта при одной схеме СКД. При открытии платформа сама выберет нужную форму.
(14) Поручик, согласен.
Лениво было форму рисовать. Надо, чтобы красиво было, отборы, порядок в разворачиваемую панель вывести.
Я вообще сейчас по-максимуму отказываюсь от обычных форм. Жаль времени на интерфейс.
(13) empafe, Это не значит, что конфигурация типовая. Сравните регистры цен номенклатуры с конфигурацией поставщика.
Управление торговлей, редакция 11.1 (11.1.10.145)
Ошибка создания набора данных «НаборДанных1»
по причине:
Ошибка при исполнении запроса набора данных
по причине:
{(19, 3)}: Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)»
<<?>>РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&П, ) КАК ЦеныНоменклатурыСрезПоследних
Ошибка!
Ошибка загрузки документа.
http://v8.1c.ru/8.1/data-composition-system/settings }useInGroup Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema }anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {
«Управление торговлей», редакция 10.3 (10.3.34.2)
Очень полезный отчёт. Но в таком виде не удобно пользоваться : 1. Надо добавить отбор по итогу (т.е. показывать только те позиции у которых изменение цены более заданного). 2. У одного товара приход раз в год, другой приходит каждый день. Не удобно в одном отчёте смотреть все. Сделайте расшифровку по периодам.
3. Внести ресурсы : максимальное отклонение от среднего и среднее значение за весь период.
Подскажите, с УТ 11.4 можно использовать?
Доброго дня! Подскажите будет ли работать модуль на версии для Беларуси
http://prntscr.com/od2nk9 это аналогичная версия УТ 11.4 как для России как я понимаю