<?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='\
Автор, доработайте пожалуйста для Ут 10.3.1.17
Добавил под 8.0
Очень итересно, но как быть с этим:
{Форма.ФормаОтчета(285)}: Ошибка при установке значения атрибута контекста (Текст): {(226, 1)}: Недопустимое поле для группировки «Содержание»
<<?>>ОплатаПоставщикам.Содержание,
ПостроительОтчета.Текст=ТекстЗапроса;
Поправил ситуацию со строками неограниченной длины в табличной части документа.
Убрал из доступных полей реквизиты с типом Хранилище Значения.
У реквизитов табличной части убрал вложенные реквизиты с типом Строка неограниченной длины.
Странно … все качают — а отзывов нет …
Никому не пригодилась что ли?
Почему не пригодилось? Ща подзаточим и будем юзать.
Хорошо!
Сортировку добавь в настройки — будет еще лучше.
Добавил сортировку по реквизитам шапки
Обработка просто супер! Однозначно +1
Если отчет пригодился и понравился — не стесняйтесь плюсовать рейтинг … вам может быть и все равно , а мне приятно..
А скриншоты добавить?
Клёво! Я в восторге!
А можно еще добавить группировку по документу и чтобы эта группировка выделялась другим цветом фона?
Вот тогда будет просто СУПЕР!
Я не понял насчет группировки по документу..
Вот бы еще в отборе можно было бы как в «выбранных полях» указывать конкретный товар. Получится СУПЕР Универсальная штука.
Спасибо! Обработка очень пригодилась.
Блин, при открытии вешает эску, затем ошибка и прога схлапывается 🙁
(skutuz) Подробности напиши… какая конфигурация , обработка под 8.0 или 8.1?
мне нравится. Спасибо!
Не увидел «суммирование по числовому типу табличных частей»
«Не увидел «суммирование по числовому типу табличных частей»»
И все же оно там имеется
и я не увидел «суммирование по числовому типу табличных частей» — в коде вроде проверки есть, но в подвал суммы по числовым полям таки не выводятся.. (8.1 УТ 10.3.3.3)
Суммирование идет только по числовым полям табличной части и в разрезе выбранных нечисловых полей той же табличной части.
Широкий: Спасибо, теперь с логикой суммирования разобрался для корректного отображения таб частей это самое то,
http://infostart.ru/projects/1684/ , но там не универсально (только по СуммеДокумента).
но как удобный функционал суммирование по выводимым конечным (к примеру СуммаДокумента) числовым полям (Общие ИТОГИ)
было бы очень удобно.
Бухгалтера регулярно занимаются копированием реестра в Excel и суммированием по колоноке.. жалко их 🙂
Есть реализация в
Вопрос для тех кто пользуется моим отчетом:
Формируете ли вы отчет в разрезе нечисловых полей табличной части?
Прикрутил ОБЩИЕ ИТОГИ в отчете под 8.1.
Под 8.0 этого нет — лень платформу ставить.
Огромное спасибо!
Теперь самое оно — Жаль что больше одного плюса не поставишь 🙂
Формируете ли вы отчет в разрезе нечисловых полей табличной части? — У нас в практике не встречается
Как идеи к развитию отдельная галочка в верхне части формы «Н/п» автоматом добавляет слева колонку номер по порядку
(Когда бухгалтера пару распечаток между собой сверяю им проще сорентироватся — типа «глянь 38 строчку».
И еще рядышком галочку «расчитывать ширину колонки по содержимому».
Хотя, такие мелочи уже каждый под себя добавить может.
Для того чтобы сделать такую «мелочь» как «н п/п» придется переписать код по выводу результата построителя запроса..
Авто расчет ширины колонок не будет точно — не нравится мне эта фишка (выглядит не бе не ме).. максимум что могу сделать — это запоминание установленных пользователем размеров колонок..
Если хотя бы еще пара человек напишет что эти изменения нужны — сделаю, а пока останется как есть
Обновил обработку под 8.0 — туда тоже добавил общие итоги
Если хотя бы еще пара человек напишет что эти изменения нужны — сделаю, а пока останется как есть
Поддерживаю, что «Н/п» и «расчитывать ширину колонки по содержимому» нужны, бухи попросили.
Респект!
Обалденная обработка!
Спасибо огромное!
Обработка Отличная! Ещё бы группировка по полям документа… Типа общий итог и подитоги… Проще говоря из пачки документов выделить отдельные пачки 🙂
Я бы сделал отбор по табличной части. Например, по конкретному товару в приходных накладных.
А если несколько табличных частей? Градировать отбор — типа это распространяется на шапку документа — а этот общий?
действительно нужен отбор по реквизиту табличной части документа, хотя бы одной выбранной.
(допустим нужно быстро найти все документы НачислениеЗП, по данному сотруднику и тп)
Очень пригодилась!!!! Спасибо!
Очень зачетная обработочка…
Нужная обработка! Спасибо! +
Обработка просто замечательная. Спасибо большое
Полезная вещица:) +1
Супер! Спасибо огромное!
Спасибо, очень помогло, вещь! Особенно понравилась группировка табличных частей документов по заданным реквизитам с выводом итогов 🙂
Отличная вещь, одна из самых лучших!
Спасибо, пригодилась. Перебрал несколько аналогичных обработок, остановился на этой.
Просто, универсально и полезно! Спасибо!
Можно добавить возможность формировать реестр по нескольким видам документов (например, ПТУ + доп. расходы)?
В этом отчете нет
Для юзверей реестр оказался бесполезен, т.к. хотят несколько видов документов сразу. Обычный реестр из УТ удовлетворил пользователей, более сложные вопросы решаются через консоль отчетов.
Хорошая обработка! автору спасибо, но без доработок не обошлось.
Спасибо! Пользуемся под БГУ 8.2. Очень клёво, всё работает. Бухи правда теряются и путаются в таком количестве галочек, но это их проблемы.
обработка хорошая! автору спасибо
То что нужно, вот только как ее привязать в БП 2.0 во внешние отчеты?
Открывается только через файл «открыть!
Спасибо, Буду тестировать обработку. Надеюсь, что поможет в реальных задачах.
Спасибо за обработку, нужная вещь
Спасибо ! Пригодилась.
А для Комплексной 1.1 подойдет?
(57) Конфигурация не имеет значения
Вариант (под 8.1) При попытке открыть отчет тупо завис в толстом клиенте на 8.3 на процедуре » ДобавитьСтрокуВПоляНастройкиОтчета(…». Всё закончилось сообщением «Недостаточно памяти»