<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Отчет написан на платформе универсального отчета, т.е. используется построитель отчетов (не СКД).
Отчет уже более года активно используется у нескольких моих клиентов.
Преимущества: простота настройки, расшифровка любого показателя, производительность.
Недостатки: не работает в управляемом интерфейсе.
Чем отличается от подобнойhttp://infostart.ru/public/92812/ , но только бесплатной. Похоже, что кроме разукрашки ни чем.
(2) Отличается тем, что это в принципе разные отчеты — «Анализ Продаж» и «Валовая Прибыль».
Они строятся на основании разных данных… по моему разница очевидна 🙂
Сделал отчет бесплатным! Исходный код открыт! Пользуйтесь и получайте удовольствие 🙂
Не забываем писать отзывы об этом замечательном отчете ! 🙂
Скачивания идут… Не забываем «плюсовать» и писать комментарии 🙂
я скачать то скачала но у меня он не работает (( Управление торговлей, редакция 11.1 (11.1.2.15)
(7) Отчет работает в обычном интерфейсе (не управляемые формы). В УТ 11.1 работать не будет.
Уже поняла…а жалко так хотелось воспользоваться :-))
Если б еще знать, как установить этот отчет. Тоже б попробовал
(10) Все очень просто в «1С: Предприятие 8.2» меню «Файл -> Открыть» и выбрать файл отчета 🙂
Спасибо,работает в КА
1. Открывается отчет весьма и весьма долго. Что при этом пытается сделать, для меня осталось загадкой.
2. Таблица красиво оформлена и все понятно.
3. Если залезть в настройку и нажать там «отмена», то мы опять чего-то ожидаем. Причем больше пары минут.
Чего хотелось бы. Хотелось бы, чтобы автор сделал отчет по образу и подобию тех, что называются «сравнительный анализ …», т.е. чтобы можно было бы взять эталонный период и на него наложить некоторые другие периоды со сравнением. Не один, как у автора, а несколько.
(13) 1) Ожидание действительно присутствует — у меня порядка 5 секунд. Видимо что то связанное с анализом метаданных конфигурации, т.к. сделано на основе универсального отчета. Сейчас нет времени разбираться с этим — думаю 5-10 секунд ожидания не фатально.
2) Спасибо на добром слове — я старался 🙂
3) Ну то же что и при открытии — построитель отчета что то там делает на основании текста запроса.
Несколько периодов делать не буду. Во первых, моим клиентам достаточно сравнивать два периода — эталонный и анализируемый. Во вторых, скорее всего будет совсем медленно работать, т.к. в 1С медленно выполняются запросы с объединением нескольких регистров — думаю из за особенностей индексации регистров накопления по измерениям «Период» и «Регистратор» — была статья на ИС на эту тему. Если делать несколько периодов — надо применять другой подход к архитектуре запроса отчета, но как я уже написал лично мне оно не нужно, а для того чтобы «сделать мир лучше» делать не буду 🙂
(14)Время ожидания на УПП порядка двух минут. Работа ведется на весьма и весьма мощной железке. Все универсальные отчеты открываются сразу же.
(15) Медленно работает дополнение текста запроса контактной информацией контрагентов. Это часть подсистемы универсального отчета, но видимо по этой причине нигде в типовых отчетах не используется.
http://infostart.ru/public/21442/ — он тоже будет у Вас медленно открываться.
Попробуйте этот отчет
Можно в коде отчета отключить дополнение текста запроса контактной информацией контрагентов — будет быстро открываться.
Спасибо. Хороший отчет. После его демонстрации директору, родился на разработку целый список аналогичных отчетов вроде «среднего чека» с анализом по менеджерам, ABC/XYZ и т.п.
А отчет отработает если сравнивать кварталы и установить группировку колонок по месяцам?
(17) Lerusena, Спасибо за отзыв 🙂 Можно сравнивать по периодам с группировкой «По годам», «День года», «День месяца», «День недели», «Квартал года», «Месяц года», «Неделя года».
(17) Lerusena, Тоже дорабатывал этот отчет для ABC анализа.
Хороший отчет, много времени сэкономил, использовал как заготовку для своей специфики
12
(6)
Хороший отчет, наглядный, сразу понятно, по каким контрагентам идет провал в продажах. Спасибо большое.
(6)
Отзываюсь. Хороший отчет. 🙂
Нужно сравнивать продажи за аналогичные периоды прошлых лет, так вот это —
самое оно.
(23) aldo, «Нужно сравнивать продажи за аналогичные периоды прошлых лет, так вот это —
самое оно.»
Спасибо за отзыв 🙂
Хорошо сделано, автор тебе огромный плюс, за такую работу, есть чему поучиться.
(25) Tpylalist, «Хорошо сделано, автор тебе огромный плюс, за такую работу, есть чему поучиться.»
Я старался 🙂
В УП 10.3 вот это выдает
(27) sportexmsk, «ПродажиИтог» — это временная таблица. У вас какая версия платформы 1С Предприятие ?
(28)
1С-8.2.19.102
УП-10.3.29.1
(29) sportexmsk, 1С-8.2.19.102
Должно работать без проблем.
Не работает! Пишет: Не установлена схема компоновки данных.
(31) vasilekg, «Не работает! Пишет: Не установлена схема компоновки данных.»
Отчет на построителе отчетов. Работает только в «толстом клиенте».
А можете доработать отчет, чтобы выводил долю количества и суммы по родительской группировке? Т.е, если, к примеру, выбраны группировки по контрагенту, а затем по номенклатуре.родитель, то сумма долей каждого номенклатуры.родителя внутри каждого контрагента должна равняться 1 ( ну или 100%). Также и сумма долей количества продажи (или суммы) всех контрагентов также должна быть 1.
(33) psih12, «А можете доработать отчет, чтобы выводил долю количества и суммы по родительской группировке?»
На СКД такое делается легко, а на построителе сложно и «некрасиво» 🙁 Т.е. мой ответ — «не могу».
ZLENKO.PRO отчет действительно отличный делаю примерно тоже самое по периодам по номенклатуре и тд. но в другом разрезе. Хочу дать небольшой совет сделать возможность смотреть продажи по мессе по каждой группе номенклатуры и видам номенклатуры и производителям. Если к примеру делаем отчет по контрагенту за прошлый год и этот в массе. Можно более корректно делать выводы о продажах не взирая на инфляцию. В прошлом году продали 10 кг получили 100р. В этом году продали 9 кг получили 100р.
Спасибо. Очень помогло в работе. Удобно и наглядно
Как с вами связаться?
(37) Artur2316, «Как с вами связаться?»
email: zlenko@gmail.com
http://zlenko.pro
skype: zlenko.pro
site:
ну и google.com тоже может помочь 🙂
(39) Судя из описания статьи и не должен.
(39) bnw, «В Розница 1.0 не работает…»
Должен работать в Розница 1.0. Какую ошибку выдает ?
Можно сделать группировку не по контрагентам, а по грузополучателям (документ продажи.грузополучатель) ?
(42) spectre1978, «Можно сделать группировку не по контрагентам, а по грузополучателям (документ продажи.грузополучатель)?»
Не вижу причин почему этого нельзя было бы сделать.
Отчет не учитывает корректировку выручки в расчетах у.е в КА, расстроена.
(44) pudovaraisa, «Отчет не учитывает корректировку выручки в расчетах у.е в КА»
Это документ такой есть в KA?
Документа такого нет, но есть процедура «Восстановление состояния расчетов по реализации и приобретению», которая корректирует движения документа (проводки) — добавляет в документ корректирующую проводку. и вот она уже не попадает ни в один отчет.
Здравствуйте, скачала Ваш универс отчет АНАЛИЗ ПРОДАЖ, ругается «по причине:
{(33, 20)}: Таблица не найдена «ПродажиИтог»
ЛЕВОЕ СОЕДИНЕНИЕ <<?>>ПродажиИтог КАК ПродажиИтог» Конфигурация УПП 8.2.19.130, толстый клиент. Временная таблица ПродажиИтог у Вас прописана. В чем дело? Срочно нужен этот отчет!!!!!!!!!!!! Помогите, пож-та
(47) erofeeva, какая версия платформы?
(47) erofeeva, Вы видимо отключили вывод каких то показателей. Построитель отчета оптимизирует запрос и исключает получение данных, которые потом не находит. используйте настройку по умолчанию — тогда не ругается ?
Да, я изменила вывод показателей по умолчанию — ругается, если не менять, то отчет формируется. Прописала в коде вывод нужных показателей, всё теперь ок. Можно ещё вопрос: «задала для сравнения 2 аналогичных квартала разных лет, группировка по месяцам года. Отчет не выводит отклонений помесячно, выдаются только итоговые отклонения. Так работает отчет? или что-то я не так сделала?»
Отчет замечательный. Всё получилось. Спасибо Вам!!!
Продажи по поставщикам покажет?
(сколько товара было продано — от конкретного поставщика)
//в типовом функционале этого нет
(52) Светлый ум, По поставщикам не покажет, т.к. там надо привязывать партии. Мне в этом отчете такое не нужно было — многим достаточно поля ОсновнойПоставщик из карточки Номенклатуры.
(50) erofeeva, «Можно ещё вопрос: «задала для сравнения 2 аналогичных квартала разных лет, группировка по месяцам года.»
Там есть два варианта группировки по месяцам. Для сравнения надо использовать ту что по номеру месяца группирует, а не по дате месяца.
Хотелось бы уточнить: как собираются данные, если в базе регистрируются продажи (я так понимаю, данные берутся из р-ра «Продажи») одного товара по нескольким Организациям? Смогу ли я указать нужную Организацию и получить соответствующий результат?
У меня Управление производственным предприятием, редакция 1.3.103,1 дает ошибку (в прикреплении). Неужели зря потратит 10sm ?
Здравствуйте.
При попытке открыть 1С выдает ошибку: «Ошибка загрузки документа. Внешний отчет не может быть прочитан текущей версией программы». Пытаюсь открыть на 1С 8.2 (8.2.19.130) Комплексная автоматизация, редакция 1.1 (1.1.102.2)
(57) Написал автору. Он порекомендовал открыть в конфигураторе. После этого отчет заработал. Спасибо.
(56) Удалось решить проблему?