<?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='\
В бухгалтерии 7.7. вывавливается ошибка:
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
ДОХОДЫВЫЧЕТЫНАЛОГИСОТРУДНИКОВ.ERT(102)}: <<?>> с ДатаАктуальности по ДатаАктуальности;
Запрос[2] : Неизвестный язык ‘с’
Не удалось обработать справочник Сотрудники
(1) Любопытно. Какая у Вас платформа: файловый вариант или для SQL, и какой релиз платформы?
Я несколько изменил текст запроса по справочнику сотрудников, можете попробовать.
Мне не удалось воспроизвести ошибку.
Платформа 27, обычная семерочная база без всякого SQL. Просто у Вас в запросе было пропущено слово «Период», т.е. должно быть: «Период с ДатаАктуальности по ДатаАктуальности», в этом случае все проходит нормально.
Вообще отчет понравился, спасибо большое, только вот в параметрах у вас есть полезный флажок «Не выводить в отчет пустые строки», но почему-то неактивный… Очень жаль. А то формирует по всем сотрудникам, даже по тем, которые уже давно уволены
(3) В том то и дело, что работает и без «период», и на 27 релизе в том числе.
Такой же запрос используется в типовых конфигурациях.
Мне не удалось воспроизвести ошибку.
(5) Ну у меня не сработало. Данные базы: 7.70.027, релиз 7.70.514.
Попробовал в ЗиК — там действительно отрабатывает и без «периода». Не знаю, с чем это связано.
Кстати, по-поводу типовых конфигураций… Я посмотрел, вроде везде слово «Период» присутствует в запросах..
По-поводу вывода в отчет пустых строк прокомментируете?
(6) Что-то не могу найти кнопку «редактировать», чтобы перезалить отчет. В общем, в новом релизе можно не выводить пустые строки, а также появились новые расшифровки для таблиц значений. Ссылки из статьи работают (см. скачать бесплатно и информацию о выходе релизов).
И кнопка появилась, обновил отчет.
Любопытный отчет. Жаль, не учитывает иностранцев.
Конфигурация Бухгалтерский учет, ред. 4.5 7.70.509: Если глСобратьДанныеДляСтраховыхВзносов<<?>>(ДоходыВычетыНалогиСотрудников, СписокСотрудников, ДатаАктуальности, , , 0, СобиратьРасшифровку) = 1 Тогда
{F:…EXTFORMSДОХОДЫВЫЧЕТЫНАЛОГИСОТРУДНИКОВ.ERT(254)}: Функция не обнаружена (глСобратьДанныеДляСтраховыхВзносов)
(10) Релиз старый, нет там глСобратьДанныеДляСтраховыхВзносов, но и возможности для правильного расчета взносов тоже соответственно нет, обновитесь.
Спасибо, всё получилось
А что за колонка «Ограниченная база»? Вроде помесячно ничего у сотрудника по ней нет, а итог по этой колнке выводится…?
Посмотрел внимательнее. вообщем «поплыли» все итоги по колонкам, т.е. в итог колонки «Ограниченная база» попадает итог колонки «Исчислено ФСС» и так далее, а итога последней колонки вообще нет.
(14) Исправил
(13) «Ограниченная база» это таблица значений, увидеть ее можно по двойному щелчку мышью.
Может содержать несколько строк по нескольким тарифам, которые использовались в организации,
но чаще одна строка.
(9) Это не отчет не учитывает, а типовая конфигурация (глСобратьДанныеДляСтраховыхВзносов).
Используйте ЗиК 296.
(16) Ну все равно не пойму, зачем нужна эта колонка? У меня она пустая. По щелчку мыши я ее могу видеть, но зачем она мне? Базы по налогам расположены в соседних колонках. Да и название какое-то странное… По-моему только с толку сбивает…
(18) > Да и название какое-то странное…
ограниченная предельной величиной базы страховых взносов
Ух ты!!! Ну вы ребята даете!!! Какие же молодцы!!! Спасибо Вам огромное, очень полезный отчет, особенно при совмещении двух режимов налогообложенияю Безусловно большой ПЛЮС разработке!
Просмотрела поверхостно, на примере одного сотрудника. Но могу сказать, что отчет очень порадовал! 🙂 Спасибо и желаю успехов в дальнейшем!
(19) Может тогда так прямо и назвать эту колонку во избежание путаницы, а лучше вообще вынести ее в другое место…
Начиная с версии «1.2» отчет применим и в комплексной конфигурации «1С:Предприятие 7.7».
Огромное спасибо.Очень понравилось.
Плюс однозначно, сам хотел сделать похожий, но руки не дошли) спасибо, успехов
не работает 🙁
(26) А подробнее?
(27) Открывается, ставлю дату актуальности, нажимаю сформировать и ….. тишина :-). никакого отчета не выходит. программа 1С: УСНО релиз 175
(28) У меня у самого УСНО и именно 175, все работает.
Что вообще ничего не появляется?
Д.б. по крайней мере заголовок.
Попробуйте в параметрах установить явно «выводить суммы …»
Отчет очень полезный. Единственная просьба — помещать описание отчета в форму, чтобы мог просмотреть любой пользователь 🙂
(29) Каюсь. у меня несколько фирм и почему-то в одной базе не работает. зато в другой все прекрасно, только много пустых колонок 🙂 спасибо за обработку
(31) Пустые колонки можно убрать в параметрах отчета.
(32) Спасибо. Пустые колонки убираются. 🙂
С отчетом еще не разобрался, но установщик хороший.
Что за прога делает такие установщики?
(34)http://nsis.sourceforge.net/Main_Page
Скачал, установил, оценил. Автор очень старался. Молодца. Обработка пригодилась. Так что Респект.
Спасибо огромное, отличная разработка. вот бы ещё она позволяла отсекать только Начисления,
не выводя колонки Базы налогов.
Спасибо, отличная вещь.
Ошибка:
Сумма = ДоходыВычетыНалогиСотрудников.ПолучитьЗначение(СтрокаИтоговойТаблицы + Индекс, ИндексКолонки) — СуммаПоПредыдущийМесяц;
{PRDEMOEXTFORMSДОХОДЫВЫЧЕТЫНАЛОГИСОТРУДНИКОВ.ERT(335)}: Операция вычитания не определена для строковых величин
—————————
(42) В последних релизах такая ошибка есть, исправил.
Хорошая обработка.