<?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='\
Очень круто. Я просто офигел когда попробовал. Для работы необходимы знания использования отчетов построенных на универсальном. Пользователь с средними знаниями сможет построить достаточно сложные отчеты.
Жаль что в новых версиях 1С отходит от универсального отчета — сколько классных штук уже здесь наработано.
СПАСИБО!!!
я немного другим путем пошел, разработав Excel — подобный конструктор… а насколько быстро отчет будет работать?
Даже если найдутся какие-то ошибки, все-равно круто. Обязательно попробую, реальные задачи есть, которые можно было бы с его помощью решить.
Насколько быстро работает по сравнению с, например, суммой времени на исполнение указанных в структуре отчета типовых отчетов? Примерное сравнение?
Планируете развитие?
Идея явно «зачетная»…
Но почему конфигурация «УТ»?
Было бы неплохо «включить» бух.итоги. Например в формулах можно использовать «шаблоны» созданные для остатков и оборотов, созданные в конфе для «типовых операций».
Зачетная идея. Достойная похвалы глубина разработки!
1) Вытаскивание информации «по крупинкам» (из существующих отчетов), копирование в Excel, добавление формул и использование прочих его возможностей
2) Написание отдельного отчета, впоследствии часто изменяемого и дорабатываемого.
Хочется добавить лишь одно: Управленческий баланс должен строиться на базе управленческого плана счетов. И будет всем счастье )))
Да, как по мне, универсальный отчет — сила.В моей практике абсолютное большинство задач по созданию отчетов реализовано с его использованием. И пользователи довольны. Спасибо за ободрительную оценку!
Принцип расчета быстродействия описал бы так: сумма времени выполнения используемых отчетов и запросов — это львиная доля, остальное — выполнение результирующего построителя и вывод — зависят от сложности отчета.
Время выполнения — сравнимое с суммарным временем выполнения используемых отчетов и запросов. Плюс время на выполнение результирующего построителя и вывод,которые зависят от сложности отчета. Более точным расчетом обязательно займусь. И оптимизацией тоже. Идеи уже есть.
Развитие функционала планируется. Одну мысль уже подсказал AnryMc — буду добавлять что-то для бухгалтерских итогов (возможность использования, настройку выбора счетов, оборотов или итогов…). Спасибо за оценку!
(4) AnryMc, огромное спасибо за идею с бух. итогами и шаблонами из типовых операций. Будем реализовывать. А отчет, в принципе, работает и в УТП и в УПП (для Украины).
(5) Evgen.Ponomarenko, спасибо за оценку! Полностью согласен с Вами по поводу управленческого плана счетов как основы упр. баланса. К сожалению, большинство заказчиков пока к этому не готовы (не финансово — затраты на адаптацию типовых или покупку специализированных конфигураций+опять же адаптация, не морально — многих управленцев одно выражение «план счетов» пугает).
Автору плюс за работу. Однозначно очень полезная вещь
Идея отличная, посмотрю поиграюсь с отчетом.
Добавьте в свой универсальный отчет вот этоhttp://infostart.ru/public/84642/
Обнаружены некоторые не понятные явления.
1) В расширенном варианте настройки, я попытался вывести дополнительное поле «Уровень» и «Номер строки». Ни то, ни другое не вывелось в отчет.
2) Если в отчете был включена опция «Запросы» и бал описан запрос, но потом все запросы были удалены, флаг «Использовать запросы» все равно остается возведенным без возможности его снять — поле не доступно.
(10)
Та…Да… Самое печальное, что типичные управленцы не понимают собственной выгоды. Помниться возникают разногласия с бухгалтером по поводу отражения хоз. операций. Долго не споришь, а проводишь в ручном режиме проводки — и видишь результат. А в управленческом учете как зацепишься, попробуй докажи, что счет кассы предназначен для отражения наличности, а не в том числе обязательств и отражения расходов. Мало того, стоит отстоять свою правоту — оказывается, что рушится вся система экселевской отчетности всей компании. (Действует закон четного количества ошибок: Система работает только в том случае, если в ней действует четное количество ошибок)))))
А так, имея управленческий план счетов и находить общий язык можно и моделировать легко. Можно прогнозировать где вылезут неприятности перед внесением изменений, а не после. Самое смешное, что финансовые затраты, окупаются очень быстро. Есть разница потратить на внедрение три месяца или год?
Скорее управленцы не готовы морально. Приходится ставить им на мозги капельницу.
В любом случае — буду внимательно следить за вашими успехами.
разработка хорошая.
теперь хотелось бы услышать — кто, по замыслу автора, является пользователем данного отчета?
программист 1С, который майстрясит всю кухню расчетов, афиник жмакает кнопочку и получает готовый отчет?
То, что доктор прописал! Обязательно скачаю для собственного образования, как накоплю $m.
Как думаете, на Бухгалтерии этот отчет взлетит?
(15) CheBurator, извиняюсь что влезаю, но не так ли выглядит создание любых других отчетов: программист клёпает отчет, которым потом используется пользователями, нажимающими 1-2 кнопки и вуаля?
(15) CheBurator, пользователь отчета, по замыслу — опытный пользователь информационной системы, который «на ты» с универсальным отчетом. Все возможности отчета, кроме запросов (хотя встречаются «паровозы», которые и этим пользуются), ему по плечу.
(16) psamt1k, в Бухгалтерии для Украины нет универсального отчета. Так что, к сожалению — не взлетит.
(13) script, примочки скачал. Буду разбираться. Спасибо. С проблемами на днях разберусь. Выложу обновление.
(14) Evgen.Ponomarenko, охотно соглашусь с Вами. Моральная неготовность — первопричина. Часть бывает не готов и внедренец. Еще раз спасибо за комментарии.
(18) я рад, что у вас столь продвинутые пользователи… кроторые могут самостоятельно еомтруировать отчеты м внедпять в них формулы, оперирущие переменными других отчетов
(21) CheBurator, они, конечно, скорее исключение. Хотя, в моем опыте, слава Богу, не редкое. Но программисты и администраторы — тоже потенциальные настройщики конструктора.
(19)
хм… тут я чего-то не понимаю…
Я в свое время выгрыз из первых версий УТП универсальный отчет, допилил его. Чуток модернизировал —
использую для личных целей — ввиду отсутствия времени на написание полноценной документации.
Теперь его можно вшить в любую конфу с обычными формами. Не пойму сути проблемы… почему не взлетит?
очень полезная для меня штучка
и так жаль что не хватает местной валюты…
(25)
А купить религия не позволяет?Продажа / покупка $m
(25) russinow, Перевел 3 $m.
😉
(27) AnryMc, полагаешь — доброе дело сделал?
А что «Республика ШКИД» читал — плюс 😉
(15) CheBurator, тем юзверям, которые ни фига не могут, кроме как жамкнуть кнопку, и в голову никогда не придет подобные отчеты формировать. А если ГБ более ни на что не способен — гнать поганой метлой.
Получает, как правило, больше всех, и при этом еще ни фига не умеет. Плавали — знаем!
(26) я действительно считаю что платить не обязательно. И хоть зареган я на сайте давно, я здесь совершенно не присутствовал, только несколько дней назад стал проявлять хоть какую-то активность. Возможно стану полезничать
(27) большой респект ) за мной не заржавеет ))))) и да читая комментарий, было ощущение чего-то очень знакомого но уже порядком забытого. Отдельное спасибо за республику шкид )))
гы )
глянул на кошаче-собачьи аватарки )) кошак нервничает, а собак собаку помогает )))))
(31) russinow, чего мне нервничать. У меня этих $m, что у дурака фантиков.
А если ты на жадность намекаешь, то глянь сюда:
Крутая вещь!
Мне, правда, нечасто такого типа отчеты приходилось делать — но было дело. Делал ручками 🙂
Даа ничего лишнего и скажеш на первый взгляд вещь что нада не нужно писать кучу отчетов а тут такое чудо. Жаль только денег нет. Появятся обязательно скачаю
(24) Evgen.Ponomarenko, если в структуре конфигурации (в данном случае — Бухгалтерии) есть универсальный отчет, то все получится. Сам отчет-конструктор сделан на базе универсального, в его структуре — реквизит типа универсальный отчет…
(32) мне все равно сколько у тебя местной валюты и что ты с ней делаешь, это сугубо твое личное дело, как и многие-многие другие вещи. Тут я без намека не претензии вообще.
меня другое напрягает. Когда приходишь куда-то, и никого в принципе не трогаешь, не задеваешь, а тебе сразу расписывают что нужно делать, как жить, куда платить и т.п. Если это для показать свою крутизну и мое место, то можно сразу идти по стандартному адресу. А ежели это с добротой и желанием помочь, тогда завсегда вэлкам и я в долгу не останусь.
Вот AnryMc я зело благодарен, валюту верну с процентом, как накопится.
(36) russinow,
Каждый, по ходу, по своим комплексам судит. Я тебе (по доброму, заметь!) посоветовал, где можно без напряга и в пять раз дешевле купить. А ты начал про аватарки базар.
Отсюда стандартный вывод: ни одно доброе дело не останется безнаказанным
(37) хорошо ) если по доброму ))) принимается
(35)
Для работы универсального отчета, еще как минимум нужны: ГлЗначениеПеременной, УниверсальныеМеханизмы, ОбщегоНазначения в принципе в большинстве конфигураций они присутствуют. Так что нужно просто пробовать.
(39) Evgen.Ponomarenko, конечно, я имел в виду, что связанные механизмы также понадобятся.
(40)
Мой пост был скорее не вам. Мне казалось, что мы с вами на одной волне,
это я скорее для сомневающихся:»Качать или не качать?» — «Качать и пробовать!» И хорошо, что есть
люди готовые делиться и sm и идеями и качественными разработками.
Это, если яблоком поделишься то их становится меньше, а когда делишься информацией —
то её количество удваивается. В принципе этот принцип распространяется на тех, кто оказывает услуги,
У тех кто пишет программы за деньги — другая философия. Мне кажется, что нужны и те и другие.
Главное, чтобы было качество всегда было в приоритете.
(13) script, спасибо за идею — добавил из (http://infostart.ru/public/84642/) замер производительности и кнопки быстрой настройки уровня группировок.
По описанным Вами проблемам:
1) В расширенном варианте настройки, я попытался вывести дополнительное поле «Уровень» и «Номер строки». Ни то, ни другое не вывелось в отчет.
— номер строки действительно не заполнялся — проблему решил. А вот уровень заполнялся и выводился. Нюанс — фактически это всегда максимальный уровень в данной строке дерева структуры. Если что-то не так — пишите, будем разбираться.
2) Если в отчете был включена опция «Запросы» и бал описан запрос, но потом все запросы были удалены, флаг «Использовать запросы» все равно остается возведенным без возможности его снять — поле не доступно.
— решена проблема: неверно производился поиск ссылок на используемые источники данных перед их удалением. Т.е. вы удаляли запрос, а на него могла остаться ссылка в формулах или структуре.
(28) Abadonna,
А «+» где?
(32) Abadonna,
А на рисунке перевод — 4,66 $m… Несоответствие 😉
(44) AnryMc, на рисунке остаток после перевода, я ж круглое число переводил.
Запускаю в УТ 2.3.18.1
ошибка:
{ВнешнийОтчет.УниверсальныйОтчетMulti.МодульОбъекта(2920)}: Ошибка при вызове метода контекста (Добавить)
по причине:
Не уникальное имя!
(46) servs, ошибку исправил и выложил обновленный отчет. Спасибо, что сообщили о ней.
а теперь пишет:
{ВнешнийОтчет.УниверсальныйОтчетMulti.МодульОбъекта(3106)}: Ошибка при вызове метода контекста (Добавить)
по причине:
Не уникальное имя!
Чувствую прийдется декомпилить, чтобы самому исправлять, гыгыгы)
(48) servs, внес изменения. Похоже, что у Вас уже во встроенном универсальном отчете есть замер производительности…
(50) да, ты прав, и что мне теперь делать?
UPD: Serdgio,
Открылся, спасибо! Сейчас начинаю тестировать.
UPD 2: РАБОТАЕТ!
В универсальном отчете плохо то, что нельзя использовать ПАКЕТНЫЕ ЗАПРОСЫ. Или я плохо знаю мат. часть…
(del)
Жирный плюс!
Хорошая идея. Плюсую
Хорошая вещь, обязательно протестирую и прикручу к своим потребностям. Спасибо!
классная штука
Идея классная, но для пользователей слишком сложно)
Это круто! Однозначно Плюс!
Скачал. В УТП для Украины так и не открылось 🙁 . Зависло при открытии.
В УТ для Украины в демо базе — открылось достаточно живенько, но шаблон простой баланс — показывает нули :(.
Буду перечитывать настройки.
В любом случае, что иожет быть причиной зависания при открытии отчета в УТП?
В уважением.
(59) Rad90210, странно, у меня в УТП открывается.
Там и отличий никаких, только регистры бухгалтерии проверяются. А какой релиз УТП? Если база не секретная — выложите куда-то и дайте путь. Это поможет в решении проблемы.
На 8.3 подглючило с Бух и УТП.
На 8.2 открылось.
В шаблоне цифры появились только при установке расшифровка = Да. Эх, еще бы пару-тройку шаблончиков… А
Но сама идея очень не плоха.
(61) Rad90210, на 8.3 я и не тестировал. Т.е. пока это работает на 8.2 — УТ, УТП, УПП.
По поводу шаблонов: давайте идею — будем реализовывать. Или Вы в общем?
На 7.7 для плана счетов писал что-то подобное … Чтобы бухи могли себе Упр баланс составлять.




По принскринам:
Настройка баланса
Ввод статьи баланса
Ввод суммы статей баланса
Итог работы баланса
По Вашей разработке — смысл тот же … но визуализация настройки … пол дня промучался так ничего толкового и не настроил. Хотелось бы пример для типовой УТП (например для демо базы), в которой можно было бы увидеть развернутую картину, и соответственно полазить по настройкам …
(64) Rad90210, спасибо за скрин-шоты. Попытаюсь упростить настройку, как минимум формул и бух. данных. А, возможно, вообще упрощенный вариант придумаем.
(64) Rad90210, поработал над визуализацией настройки и примерами:
1) Реализована возможность ввода настройка конструктора отчета в упрощенном виде – все на одной странице.
2) Также реализована возможность ввода новых источников данных непосредственно при указании вида расчета показателя в дереве структуры отчета. Для каждого вида источников данных реализованы отдельные формы ввода данных.
3) Реализована возможность расшифровки результатов выполнения запросов и вывода данных расшифровки в отчете. Для использования данного функционала при задании текста запроса необходимо обязательно указать итоги и поля построителя запроса.
4) Добавлен шаблон «Закупки, продажи, остатки, цены», демонстрирующий возможности соединения данных различных отчетов системы («Закупки», «Продажи», «Ведомость по товарам на складах») и данных произвольного запроса по ценам с расшифровкой по номенклатуре.
Оперативненько 🙂 Будем пробовать. Нужно полСМ натролить в комментах. В любом случае, звучит очень обнадеживающе. Если не секрет куда поделку будете использовать? Бета в релизе наводит на мысль …
В любом случае — скачаем — будем тестить.
(0) Скачал, попробовал сконструировать пару простых отчетов, вроде бы все выглядит довольно понятно и просто, но что-то мне подсказывает, что рядовые пользователи конструкторами вряд ли когда-то будут пользоваться, им всегда хочется все иметь уже в готовом виде и с одной кнопкой. А так для более менее продвинутых пользователей и для тех кто любит осваивать что-то новое — в этом конструкторе я думаю разберутся довольно быстро (по крайней мере у меня получилось сбацать первый отчет на основании двух других примерно в течение получаса-часа). Но все же более менее сложные отчеты вряд ли кто-то будет собирать через конструктор — пользователю лень разбираться, а программисту быстрее и надежнее написать свой отдельный отчет с одной кнопкой, имхо.
Плюс за разработку и за оригинальную идею!
Большая работа! Плюсую авансом!
А почему расширение .cf стало?
(71) gull22, спасибо, что заметили.
По ошибке залил поставку конфигурации.
Сейчас перезалил отчет.
(72)
Ну тогда за Вами должок! 🙂
Ошибка при открытии отчета {ВнешнийОтчет.УниверсальныйОтчетMulti.МодульОбъекта}: Переменная не определена (УниверсальныеМеханизмы)
в описании написано вот такое: «Внимание! В отчете реализовано ограничение использование отчета по времени. Ограничения вступают в действия 01.01.2014». С этой даты он уже не будет работать? Если да, то зачем это сделано?
(74) sashajat, на какой конфигурации ошибка? Отчет работает на конфигурация для Украины — УТ (2.3), УТП, УПП
(76)Я купил для УТ 11 Россия
(77) sashajat, для России на упр. формах эта версия не будет работать. На предыдущей УТ 10, если там есть универсальный отчет — должна работать.
Идея просто супер. Без проблем настроили под собственные нужды, но возникла проблема — не воспринимает цифры больше 10 млн… Сумма в константах. Как бороться?
(79) zavoyskiy, в ближайшее время выложу отчет с типом показателей — число 20,5.
ничего себе. такой труд и в бесплатный доступ! круто. А можно еще отчет, инструкцию и справку одним архивом залить, чтобы бесплатное было втрое дешевле?
Давно нет обновлений, проект развивается?
Проект развивается. Но продолжение будет, скорее всего, в виде другого отчета. В данной разработке тупиком стало отсутствие возможности вывода иерархии при расшифровке данных показателей.
Потратил 3 смартмани на «{ВнешнийОтчет.УниверсальныйОтчетMulti.МодульОбъекта(4294)}: Запрещено использование отчета!» 🙁
Спасибо. Крутая штука.
Serdgio, ждем продолжения, каков прогресс?
Судя по тишине .. проект окончательно заглох. Жаль
да, идея хорошая. покрутил его немного, глюковат в плане восстановления настроек.
иерархия по показателям не выводиться, надо посмотреть причину. Я так понимаю, это все завязано как то на источниках данных. А целом конечно классная задумка, не доведенная до ума.
немного покопался в коде:
относительно вывода иерархии
результат, который возвращает универсальный отчет, корректен, с учетом иерархии. Может проблема в этом:
ОбходРезультатаЗапроса.ПоГруппировкам
(89) WKBAPKA, проблема точно в источнике данных — ТЗ. Это ограничение построителя. В это я и уперся…
та не. похоже вопрос в обходе группировок. т.к. до конца еще алгоритм обхода не понял, удовлетворительного результата не добился, но удалось смоделировать вывод по иерархии. Я немного с номерами не понял там.
ну и группы выводятся в одной куче с элементами. но тут надо смотреть алгоритм 🙂
(91) WKBAPKA, буду рад, если у Вас получится. Но я долго боролся и много подтверждений находил — при источнике данных ТЗ построитель не дает иерархию в группировках.
результат во вложении.
нет времени дальше копаться, но похоже, что проблема с выводом иерархии не из за источников данных.
а, вы имеете ввиду, что просто заполняете доп группировки, передаете в виде источника, но если выбрана иерархия, он ее не выстраивает… ну тогда да. обход по группировкам с иерархией ничего не даст 🙁
еще есть глючек, попробую разобраться. При выводе показателей отчет сортирует показатели не в порядке как они определены в структуре отчета, а по алфавиту.
А вообще, считаю, что проект должен развиваться. На СКД такое не сделаешь, а универсальные отчеты еще долго будут ходить )
готов принять участие в развитии проекта.
что то с картинками )
(96) WKBAPKA, я не против. Что от меня требуется? Какие идеи по развитию?
(98) ребят, есть ли что-то подобное на УФ для УТ последней?
(101) пока нет ( в планах есть, но времени не хватает…