<?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='\
У меня скачивается без расширения… Или я не там его пытаюсь использовать?
(1) походу/, сайт отсекает… перезалил
Жалько чё только для зарегистрированных, понятно чё очки надоть зарабатывать.
Дык как же можно проверить твовой отчет (обработку) если только раз в день можно скачать «нищим зарегитрированным» -> у которых мене 30 очков.
Желаю удачи!
(3) открыл
ОК!!!!!!
Я тута тоже кое-чё по Бух 8.1 выложил, если чё надо сигнализируй!
Ошибка при выполнении файловой операции ‘E:DownLoadОтражениеЗарплатыВРегУчетеДетализированный1.erf’
по причине:
Неверный формат хранилища данных ‘file://E:/DownLoad/ОтражениеЗарплатыВРегУчетеДетализированный1.erf’
что может быть?
Разобрался. Это архив rar. Только не понятно почему расширение erf.
Отчет работает некорректно!!!
Нельзя ставить условие на дату документа. А если период регистрации отличается от даты документа (за прошлый период).
ГДЕ
БУОсновныеНачисления.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Если сравнить с типовым отчетом на демо базе — отчёты разные. Для примера:
ООО Ромашки, февраль 2007 года д28 к70
(7) перезалил… действительно, в запарке накосячил.
(8) к сожалению, у меня нет вашей демобазы «ООО Ромашки».
но претензии понятны, переделаю в ближайшее время, как оно (свободное) будет…
(8) теперь по периоду регистрации
При попытке запуска под УПП 1.2.22.3 выдает:
{ВнешнийОтчет.ОтражениеЗарплатыВРегУчетеСРазбивкойПоВидамНачислений(89)}: Ошибка при установке значения атрибута контекста (СхемаКомпоновкиДанных): Ошибка в схеме компоновки данных
по причине:
{ВнешнийОтчет.ОтражениеЗарплатыВРегУчетеСРазбивкойПоВидамНачислений(89)}: Ошибка при установке значения атрибута контекста (СхемаКомпоновкиДанных): Ошибка в схеме компоновки данных
по причине:
Ошибка в схеме компоновки данных
по причине:
Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(18, 23)}: Поле не найдено «БУОсновныеНачисления.СчетКтУСН»
БУОсновныеНачисления.<<?>>СчетКтУСН КАК СчетКтУСН,
(12) делалось для ЗУП
Спасибо большое, а то чуть мозг не вывихнул почему сумма между подразделениями поменялась. А тут раз и сразу видно сотрудник то не отсюда 🙂
В ЗУП 2.5.31.4 к сожелению отчет не работает 🙁
Что бы отчет работал в 2.5.35.3 в начале модуля объекта добавила
Функция ПолучитьПараметрыИсполненияОтчета() Экспорт
СтруктураНаcтроек = Новый Структура();
Возврат СтруктураНаcтроек;
КонецФункции
СПАСИБО огромное за отчет очень выручил!
Еще нужен Отражение зарплаты в регламентированном учете с подбором списка сотрудников.
{ОбщийМодуль.ТиповыеОтчеты.Модуль(4765)}: Метод объекта не обнаружен (ПолучитьПараметрыИсполненияОтчета)
ПараметрыИсполненияОтчета = ОтчетОбъект.ПолучитьПараметрыИсполненияОтчета();
РЕЛИЗ 2,5,39,1
Да Спасибо за отчет. Правда без добавления функции Функция ПолучитьПараметрыИсполненияОтчета() Экспорт
СтруктураНаcтроек = Новый Структура();
Возврат СтруктураНаcтроек;
КонецФункции
не работал под 8.2. Теперь хорошо
Спасибо!
Спасибо! Пригодился!
el.comarova хорошее замечание, а то сходу и не сообразили!
Спасибо! Очень пригодился.
Хороший отчет! Вот бы еще такой под УПП. Там разработчики по какой то им одним известной причине регистр сделали, а отчет по нему нет
Спасибо, отчет, конечно, пригодится!
Хотелось бы только без доработки со стороны внимательных коллег!
Спасибо, отчет очень полезный. На 2.5.45.3 работает отлично без каких-либо доработок «напильником». Сразу помог вычленить непонятные суммы.
(23) внес изменения
Хороший отчет, только хотелось бы, чтобы для 8.2. среди реквизитов было бы ПодразделениеДт
Отлично, большое спасибо! На 2.5.54 отработал без вопросов. Разрезы наличествуют именно те, что мне и нужно. Еще раз огромное спасибо, помогло уменьшить мою работу!!!!
Что касается настроек, то использование СКД очень увеличивает гибкость отчета. Чего не хватает, достаточно просто добавить самому!!!
Отчет супер, просто спасение от экономистов.
Небольшое замечание: надо заменить все вызовы «ОбщегоНазначения.» на «ОбщегоНазначенияЗК.».
У этого отчета имеется недостаток: выводятся только те проводки, где по кредиту стоит счет 70. Хотелось бы также видеть проводки по взносам — с Кт 69.х — чтобы получить аналог свода проводок из 7.7.
Удержания не показывает. допилить бы. а то в заголовке есть, а в отчете нет
Да, нашла то, что искала, для экономистов. Заменила все вызовы «ОбщегоНазначения» на «ОбщегоНазначенияЗК». Все работает. Спасибо.