<?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)
Исправлено.
а можно сделать отбор по сотруднику?
а можно сделать отбор по подразделению?
после обновления до 28.1 отчет выдает ошибку:
{ВнешнийОтчет.РасчетнаяВедомость(1088)}: Поле объекта не обнаружено (ВР_Компенсацияотпускаприувольнениипокалендарнымдням)
НоваяСтрока[ИдентификаторКолонкиВР] = ВыборкаВР.Результат;
Не могу понять, как ее исправить…
(3),
(4):
Реализовал.
(5)
Не смог воспроизвести. Если есть возможность, не могли бы Вы выложить пример базы, на которой происходит такая ситуация?
(6) *.сf подойдет?
(7)
Файл конфигурации есть и у меня 🙂 Надо с данными.
Или, если получится, сможете рассказать, как воспроизвести эту ошибку на чистой базе?
(8) спасибо. Всё заработало. Был просто косячный вид расчета. Ошибка ввода данных.
А можно сделать чтобы оплату больничного листа разбивал две графы(за счет работодателя и фонда) в ведомости?
А можно сделать чтобы оплату больничного листа разбивал две графы(за счет работодателя и фонда) в ведомости?
Отличная вещь, спасибо!
А по поводу ошибки в (5) — в строке 453 нужно «группаВсегоНачислено» заменить на «ГруппаВсегоНачислено», иначе не обрабатываются дополнительные начисления. Вернее, при их обработке отчет вылетает 🙂
(10)
Можно. Начиная с релиза 2.5.30 так и будет 😉
(11)
Исправлено.
Спасибо.
Спасибо, очень нужный отчет! Вопрос по пособиям. у меня почему-то пособия до 3 и до 15 в одном столбце.
Ой. До 1,5-лет конечно.
Отличный отчет, то что нужно, огромное спасибо автору)
Спасибо за отчет!
Отчет очень нужен. но под версию 8,2.. Будет ли возможность модифицировать отчет под новую версию?
ХеЛП!!! люди у мя такая проблема… бухгалтера требуют расчетку по месяцам как в ЗИК 7,7 на ЗУП 2,5!!!! вот эта расчетка очень похожа! а она есть на версию 8,2????????
(19) razzgrom, открой в конфигураторе, нажми конвертировать и пользуйся.
Спасибо, клиенты привыкли к семерочному!
Отличная обработка, сейчас только ей и пользуюсь. Все начисления разбиты по видам.Спасибо автору.
Полезный отчет, бухи попросили, а самому и писать не надо )
Спасибо за очтет, отличная обработка, все начисления разбиты как бухи просили, будет ли обновление ? в очень доволен.
Спасибо, бухгалтерия довольна, на КА работает.
Спасибо за отчет. Хотелось бы еще общую надшапку над начислениями, удержаниями, как в ЗИКе. А то я сам доделал как-то через зад
(24), (25), (26)
Спасибо. То, о чем написали, думаю, что сделаю. Но позже — голова пока идет кругом.
Спасибо за отчет! Чуть подшаманил — убрал депонирование в запросе и отлично подошла для ЗБУ!
очень хотелось бы ещё увидить в этом отчете группировку по подразделениям. Думаю было бы ещё больше благодарных вам.
Скажите пожалуйста, автор, выводит ли эта ведомость совместителей (в другом подразделении) и основных РАЗНЫМИ строками?? Типовая кидает все суммы в одну кучу по основному месту. А ведь подразделения есть и в других городах, соответственно, налоги по месту работы территориально. Также нач/конеч. сальдо должно быть отдельно и т.п.
Здравствуйте Дмитрий Тарасов
Скачал вашу обработку ещё в феврале 2011 года
Подключил и забыл по неё. Главбух ею пользовался постоянно
для выдачи результатов по зарплате финдиректору.
Но при переходе на релиз 2.5.64 вышел облом
Пишет не может выполнить метод …ОбщегоНазначения.ПолучитьРабочуюДату()
1С-ники как всегда поменяли ОбщегоНазначения. на ОбщегоНазначенияЗК.
естественно выполнить эту команду программа не может.
Я подправил обработку высылаю её тебе.
Выстави её может кому нибудь понадобится.
Если некогда то я могу её выставить сам со ссылкой на тебя.
Спасибо большое! Нужная форма!
(32) sagg, Если у вас релиз выше 2.5.64
http://infostart.ru/public/182460/
то скачайте этот файл
Это подправленная обработка см. сообщение 31