<?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='\
Если вместо 414 строки
Результат = Число(Шаблон(Стр));
поставить
то падать перестает.
Надо полагать, разворот итогов по субконто без выбранного счета не работает. Наверняка Ёпрст в курсе.
После этого получается отличная штука для фиников 😀
Все таки такой подход будет лучше, как мне кажется:
http://infostart.ru/public/19117/
Интересно, почему данная обработка только для разработчиков? А как же мы, неразработчики?
(1) Спасибо за подсказку.
(2) Такой подход использовался в построителе отчётов решения Рарус GAAP IV. Оно было взято за основу при написании Финансового анализа. Твоё решение хорошо, но оно другое.
Минус твоего подхода в том что количество строк и колонок фиксированное. Нельзя развернуть вправо или вниз по аналитике или по периодам или по субсчетам. Минус моего решения в скудости оформительских инструментов. Я думал о том как поженить эти два подхода, но не нашлось клиента, готового оплатить работу, а писать «в стол» не было желания.
(3) из-за ошибки, которую нашёл Арчибальд. Мне не жалко, могу вывесить и для всех, но ошибка ещё не исправлена. Готовы, курчата?
2(4): разворачивать можно, но тут ты прав, идеалогия совсем иная…
+ за идею !
Как пионеры, если кто помнит кто /что/ это.
(7) Теперь доступно всем зарегистрённым. Ошибка пока не исправлена.
(8) Эт’ ты зря. Исправь сначала 😐
(9) Дома поправлю. Сейчас вроде как работать надо. Кто сегодня скачает — сам виноват. Я предупредил.
Считает возможно и хорошо, но методика расчета выручки лажает и сильно. НДС с выручки вытаскивать надо.
(11) >> методика расчета выручки лажает и сильно
Финансовые показатели, заполненные в поставке даны только для примера. Разработка это конструктор, ты можешь самостоятельно изменить финансовые показатели как тебе удобно.
(7) Ошибку исправил.
Отчет очень достойный. По показателям не смотрел, не проверял, но подход к формированию очень достойный!
(14) Плюс комментарию не за похвалу, а для того чтобы по новой системе мог скачать ещё. 🙂
(14) Не понял, какая новая система?
(16)http://infostart.ru/public/61433/
Заинтересованным м.б. имеет смысл порыться у Oplanet — у него был «управленческий баланс» похожий…
Установила отчет в базу, ничего не работает!!!!! Все таблицы пустые!!!
(19) Надо весь пакет ставить в одну папку
Уже и в папку и без папки ставила — все одно.
(21) Всё что есть в архиве в папку ExtForms
Если и справочник финансовых показателей пустой, то его можно наполнить самостоятельно. Не так приятно, конечно, зато будешь застрахована от ошибок о которых говорит john-k в 11.
Справочник финаоказателй не пустой. Но отчеты не формируются. 🙁
(23) А период отчета? В примерах древний год проставлен 🙂
Период отчета, естественно, я беру 2009 год
(25) Какие показатели используются? Есть ли итоги на счетах, используемых показателями? Лучше всего снимки экрана сюда.
Если у Вас есть TeamViewer, можно бы посмотреть в режиме он-лайн.
(27) У меня есть скайп yulyashko. Правда к нему нет микрофона 🙁
Зато через него можно делиться кусками экрана или всем экраном.
А почему пустые показатели показывает… даже сохраненные настройки?
поместила все файлы в экстформс — не помогает….
(30) Проверь по бухгалтерским отчётам. ОСВ, анализ счёта в тех же разрезах. Если в них итоги есть, а в результатах по показателям нет, то выложи базу, например, наhttp://narod.yandex.ru/ вместе с архивом ExtForms. Я вечером гляну.
Вчера только победил свой комп. Вроде нормально заработал.
я просто создала папку мои показатели и два показателя остаток по кассе без аналитики… база типовая, сальдо беру конечное…
http://narod.ru/disk/15949538000/ExtForms.rar.html
http://narod.ru/disk/15949443000/%D0%B1%D1%83%D1%85_%D1%82%D0%B8%D0%BF%D0 %BE%D0%B2%D0%B0%D1%8F.zip.html
вот ссылки на базу и на екстформс
заранее благодарю…
(32) Скачал. Удаляй файлы с народа. Нефиг их светить. В следующий раз с паролем выкладывай, а пароль личным сообщением.
Разверну и посмотрю вечером.
спасибо,
(34) (23) обновил файлик. Исправил ошибку.
спасибо работает, очень интересная а главное полезная штука… спасибо,
Вы не будете против если я ее подписывать буду…?
я скачала новую версию, она работает, но при открытии показателя в справочнике… Показателей вываливается такое сообщение:
ТЗДиапазоны.КодВидаДиапазона = БазаВидовДиапазонов.CODE;
{C:БАЗАБУХ77EXTFORMSПОКАЗАТЕЛЬ.ERT(291)}: Перед выполнением операции установите объект на запись!
ТЗДиапазоны.ВидДиапазона = БазаВидовДиапазонов.NAME;
{C:БАЗАБУХ77EXTFORMSПОКАЗАТЕЛЬ.ERT(292)}: Перед выполнением операции установите объект на запись!
ТЗДиапазоны.R = БазаВидовДиапазонов.R;
{C:БАЗАБУХ77EXTFORMSПОКАЗАТЕЛЬ.ERT(293)}: Перед выполнением операции установите объект на запись!
ТЗДиапазоны.G = БазаВидовДиапазонов.G;
{C:БАЗАБУХ77EXTFORMSПОКАЗАТЕЛЬ.ERT(294)}: Перед выполнением операции установите объект на запись!
ТЗДиапазоны.B = БазаВидовДиапазонов.B;
{C:БАЗАБУХ77EXTFORMSПОКАЗАТЕЛЬ.ERT(295)}: Перед выполнением операции установите объект на запись!
(38) Удали все диапазоны для показателя.
Потом можно будет создать новые. Разъехалась ссылочная целостность 🙁
для новых показетелей все хорошо, нет ошибок, спасибо еще раз!
(37)
Не понял о чём речь. Если речь о распространении, то ссылка на автора обязательна. Моё имя Трактор. Почта traktor@km.ru. Домашняя страница разработкиhttp://infostart.ru/public/62041/
нет, я не распространять… не правильно поняли… если что работать не будет… я имею ввиду дописывать под себя что-нибудь новое, вот …
(42) Дык это всегда пожалуйста. Однако если захочешь распространять доработанное, то ссылка на меня всё-равно должна быть.
PS
К слову. Шёпот теней плохой пример для подражания в части умения выражать свои мысли.
(43) Руки прочь от Шепота теней ❗ 😉
Отличная идея, хорошая реализация, разработка нужная и полезная.
Хотя некоторые итоги собирает немного некорректно:
Пример: требуется получить обороты между счетами за месяц или квартал, год. Если ставим периодичность = день или неделя или декада, то
отображение итогов оборотов между счетами правильное. Если же периодичность = месяц, квартал или год, то обороты высчитываются
по счету в целом не обращая внимания на КорСчет!!!
В целом удобная, нужная разработка.Плюсую.
(45) Проверил. Сделал показатель для получения оборотов меж счетами. Показывает верно. У тебя что-то не так настроено.
(46) Посмотрел твой скрин, вот что увидел (рассмотрю месяц январь):
у тебя согласно анализу счета в дебет 50 с кредит 62 идут суммы
от 10, 24, 31 января и = 6000 + 6000 + 1260 = 13260 (это правильно), а вот сумма от 3 января равная 6204 идет с кредита 51 в дебет 50, так что она не должна попадать в итог оборотов между 50 и 62 счетами (у тебя попадает 13260 + 6204 = 19464, что не есть правильно!). Так и с другими месяцами.
Получается, что как я и писал ранее, КорСчет просто игнорируется.
(46) Точно. Что-то вчера я протормозил.
(47) (42) (3) (19) Не выдержал 🙂 Нашёл причину. Поправил получение оборотов с корсчетами. Странно. КорДО и КорКО было заглушено. Интересно зачем я это сделал 8 лет назад? Снял заглушки.
В настройках показателя появились пункты «Дебетовый оборот между корреспонденциями» и «Кредитовый оборот между корреспонденциями»
(49) Да, теперь все правильно.
Нашел еще маленький косячок: субконто1,2,3 в Корсчете по кнопке очистка не очищаются (задан неправильный идентификатор в поле формула: сейчас Субконто1,2,3,=»», должно КорСубконто1,2,3=»»).
А так пока вроде все, что замечу еще отпишусь.
Респект за оперативность.
(17) Отчет хороший. Для скачивания меня система не ограничивает. У меня 6 пользователей, не знаю, нужно это писать. А вообще систему (-) оценки на сайте не понимаю. Если человек что-то сделал, это уже +, по жизни столько пустобрехов. Поэтому, если выкладывается какая-то разработка — автоматически +. Пусть маленький, но +. Даже если скомуниздил у кого-то, жаль, но народ подскажет у кого. Опять таки вспомнили. Так что система оценок должна быть другой.
Ну, Трактор!
Ну класная вещь!
Правда еще не конца покопалать, но уже класно!
Это я как бухгалтер говорю! :{}
(49) Заметил еще ошибку: не собираются итоги сальдо начальное дебетовое(кредитовое) развернутое; сальдо конечное дебитовое(кредитовое) развернутое.
можно задать вопрос? в книжках эти же формулы? работаю мехмат и бухгалтер — чистый финансист..
(54) >> в книжках эти же формулы?
Нет. Формулы приведены просто для примера. Использовать для рабочих отчётов их нельзя.
СПАСИБО!!!
Инструмент для бухашек!
спасибо за отчет… какая старая разработка, но актуальная
по-моему, разработка близка к поговорке «старый друг лучше новых двух»
Вот тебе и отрывки из неопубликованного 😀 😀 😀
Скачала, давно, но пользовалась редко, как- то было все заморочено, мне как бухгалтеру, нужно снова присмотреться.
Скачал год с лишним назад, успешно пользуюсь. Настраивать показатели конечно нужно потрудиться. Но потом остается только задавать период и наслаждаться готовым расчетом. Респект разработчику. Заменяет в каких-то моментах «заклятого друга» Эксель!
Очень интересная разработка, но не учитывает возможность многофирменного учета.Спасибо.