<?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='\
Не понял как этот отчет работает и что делает, все время получаем таблицу без данных
Господин Черников,проверьте есть ли у вас ДВИЖЕНИЯ номенклатуры по складу и по СЧЕТУ,который вы задаете на тот промежуток времени,который анализируете.
ОРганизация=Справочники.Организации.НайтиПоКоду(«000000001»);
в обработках которые выкладываються в общий доступ так не делают
хотя бы так
Организация=ПолучитьЗначениеПоУмолчанию(глТекущийПользователь,»ОсновнаяОрганизация»);
+ конечно, но «это просто какой-то песец» (с) Каганов Л.
Так это внешний отчет или…?
мне кажется, стыдно должно быть выкладывать такой убогий отчет
Нет,не стыдно.Это один из моих первых внешних отчетов на 8.0.
И вообще,dmitvp,приведите пример СВОЕЙ не убогой разработки.
Если это версия 1.1…. Что же было в 1.0?
Diims, все мы когда-то начинали. У всех были подобные первые отчёты. Никоим образом не хочу тебя обидеть, но обработка действительно убогая. Мы все охотно верим, что пословицу «первый блин — комом» придумали не дураки.
Но ведь предполагается, что, как минимум, первый блин не предлагают гостям на званом ужине.
Тема достаточно актуальная, закрыть её в более-менее приемлимом варианте не составит труда даже не очень продвинутому специалисту по 1С 8.0. Но уж очень не хочется сбивать энтузиазм начинающих..
Возможно сейчас уже имеется версия 2.0? или даже 3.0? Возможно в общий доступ она не выкладывается потому как предполагается коммерческое использование? Предлагаю сообщить предполагается ли развитие обработки… Иными словами, что проще подождать развитие твоей или начинать писать свою? На основные ляпы готов указать.
Был бы рад довести ее до ума.Пара ляпов уже была указана.ОРганизация=Справочники.Организации.НайтиПоКоду(«000000001»);
Что еще сделано косо?
Отчет. Выдает таблицу без данных
расскажите мне, плиз, что делать со скаченным фаилом MaterialjnyjOtchetV1.1 ???
Разархивировать,потом в 1с зайти файл-открыть-… и выбрать этот самый разархивированный файл( с расширением .epf).Откроется обработка,где выбирайте то,что хотите проанализировать.Склад,счет и период за который нужно получить отчет.
нда.. внимательно изучил шапку отчета .. гламурненько.. НО ГДЕ ЖЕ ДАННЫЕ???
Бухгалтерия предприятия, редакция 1.5 (1.5.15.3)
данные отсекаются из-за того, что в условии запроса в качестве склада проверяется субконто3, вместо субконто2
Очень полезный отчет — половина наших бухгалтеров им вместо сальдовки пользуется.
Есть недочет: «остатки на конец» некорректно считаются, если есть документы со временем 23:59:59. Вместо регистра Хозрасчетный.Остатки, лучше взять Хозрасчетный.ОстаткиИОбороты
спасибки 😉
Уважаемые ПРОГРАММИСТЫ, ЕСЛИ ТЫ ЧАЙНИК, поставь пожалуста отметку.
Пишите хотябы дату составления ваших прог,19 век или 21…
Не засоряйте дерьмом ХОРОШЕЕ НАЧАЛО, т.е ЭТОТ сайт!!!!
(18)+Описания никакого, скринов тоже нет.
Дата составления есть в шапке страницы.И четко написано,что под Предприятие 8.0.Ну может быть чайники этого не видят…
Складской учет ТМЦ
37
Материальный отчет
18.01.2007 Diims Изменить Удалить
Внешний отчет, обработка для 1С: Предприятие 8.0
Материальный отчет за период
Ну и зачем такое выкладывать?
Есть где-то работоспособный мат.отчет?
Уважаемый Jur2008,опишите что у вас не работает.Просто то, что вы ткнули пару раз на неизвестно каком релизе мышкой, не говорит о том что отчет не работает)На чем запускаете и какие счета анализируете?По сей день на предприятии пользуются данным отчетом.
Если возможно то хотелось бы увидеть группировку по иерархии.
(22) Отчет универсальный? Или заточен под какую-то конкретную конфигурацию?
Судя по прочитанному — страшно скачивать этот волшебный отчет
все равно мой отчет круче 🙂
http://infostart.ru/projects/4567/
Здравствуйте, подскажите причину ошибки при открытии отчета {ВнешнийОтчет.МатериальныйОтчет.МодульОбъекта(914,14)}: Переменная не определена (БухгалтерскиеОтчеты)
Отбор = <<?>>БухгалтерскиеОтчеты.СоздатьТаблицуДляХраненияОтбора(Истина);
1С:Предприятие 8.2 (8.2.11.235) Бухгалтерия предприятия, редакция 2.0 (2.0.13.5)
в 1С:Предприятие 8.1 Бухгалтерия предприятия, редакция 1.6 (1.6.24.7)
И если возможно помогите исправить, спасибо.
Извините комментарий не к Вашему отчету, а к отчету mmj14.
Как раз нужен такой отчет…