<?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='\
Реестр хороший, не хватает шаблонов , настраивать под каждый документ
и далее перестраивать , так что-ли
(1) Мне кажется, что то, что вы называете шаблонами, вполне соответствует стандартному механизму сохранения настроек формы. Сделали настройку, сохранили с определенным именем. Потом можете ей пользоваться.
Единственный недостаток тот, что настройка связана с конкретным пользователем, да и то как посмотреть.
Отличный реестр.
Неплохой реестр, хотя и повторяет все возможности DOCPRINT. Не использованы запросы ни в каком виде, работает дольше. Поэтому придется колупать дальше свою обработку.
docprint не подсчитывает итоги и не позволяет изменять положение колонок. Приходится выгружать в excel и перкраивать. Плюс однозначно. Единственный совет: использовать не идентификаторы реквизитов, а синонимы. Залезу, подправлю. А так — плюс однозначно
(4) Скорость для получения реестра не критична. Не каждый час его получают. DOCPRINT какая-то замороченная. Существенный недостаток — нет разделителей триад в суммах.
Не подсчитывает итоги и не управляется состав печатаемых реквизитов, не знаю, может не правилььно использую?
(7) Реквизиты печатаются те, у которых в колонке Печать стоит 1, а итоги подсчитываются те, у которых в колонке Итоги стоит 1.
Если не получается — пишите поподробней, желательно пример на любой демо-базе 1С: какой документ, какие реквизиты выбираете и т.д.
(8) Да, дело было в настройках. Но, считаю, каждый раз настраивать, много времени уходит. И, потом, не правильно показывает начальные остатки. Например, я взяла авансовые отчеты за год. Отчет вывел начальный остаток после 1-го А/О- 300,00 грн (по Кт), потом после каждого А/О писал 300,00 грн и в итоге сложил все суммы. А это не правильно. Должно быть либо начальная сумма на начало выбранного периода, а это, вообще, было 0,00 грн, либо,все же 300,00 грн. Несколько не понятна логика.
(9) Не надо настраивать каждый раз. Один раз настроили — сохранили стандартным способом (кнопочкой Сохранить настройки) с определенным именем и пользуйтесь готовой настройкой.
Чтобы остатки не суммировались в колонке Итоги поставьте «Не полдсчитывать итог» — обработка же не знает смысл числового поля.
На самом деле иногда и такой подсчет итогов может иметь смысл: итог можно использовать в качестве контрольной суммы. Вот разобьете авансовый отчет на два — сумма начальных остатков изменится. Сразу будет видно, что что-то изменилось.
(10) Спасибо за разъяснения. И, все же, в колонке » Начальные остатки», по моему мнению, по каждой позиции должны выводиться остатки с ОСВ на данную дату, а в «Итоги»-конечное сальдо. Так, мне кажется, было бы правильно и удобно.
(11) Не надо пытаться заменить оборотку реестром документов. Реестр — это просто список. В нем нет понятия остатка на начало и конец — для этого нужна информация из других источников. Реестр не знает об экономическом смысле числовых полей. Это в частном случае с авансовыми отчетами в документе есть такое поле «Остаток на начало», которому к тому же не стоит очень верить. (Конечно, если очень строго вести учет, то оно должно совпадать с реальной обороткой). А если у вас реестр приходных накладных, какой вы хотите увидеть остаток?
Реестр — чисто оборотный отчет.
(12) Я с Вами согласна. Наверно, я много хочу. + за мной
(13) Да, вероятно вам нужен специализированный отчет по авансовым отчетам.
За работу однозначно +, но… «Реестр документов v 2» автор Diamond
http://infostart.ru/public/14883/
нравится больше, он более интуитивно понятен, читабельнее и производительнее.
P.S. Всё-таки скрины к работам и более подробное описание пользования ими нелишни.
Существенно — реестр только по одному виду документа.
Критично — невозможность установки значения отбора по реквизиту, означенному как «Неопределенный».
Например ТиС, документ «Списание ТМЦ», реквизиты «Субконто 1(-3)».
(16) Насчет одного вида не знаю. На мой взгляд реестр и должен быть по документам одного вида. Чего их мешать-то ?
А насчет неопределенного типа реквизита посмотрю, может доработаю.
(16) В новой версии добавил отбор по реквизитам, для которых задан тип «Неопределено».
Реестр хороший,пробовал работает…
не выводит на печать реквезиты такие как код товвара в документе или артикул!
хотя это определяющие моменты в большинстве своём
реестр, который нужен в повседневной работе
Не могу найти как в реестре документов поменять выводимый номер, надо чтобы выводился входящий, обработка как раз кстати, спасибо
может кто знает, подскажите пожалуйста
конфигурация 1с 7.7 УСН
да, не совсем удобный реестр
(25) NPodolsk, какой документ-то выводите ?
Если речь идет, например, о поступлении ТМЦ, то щелкните в колонке Печать напротив реквизитов ДатаДокВходящий и НомерДокВходящий (под рукой ТиС 9.2, УСН нету)
Удобная программа! Спасибо автору!
Спасибо автору пользуюсь давно удобно если надо быстро дать информацию начальству
Спасибо.
Пользуюсь часто. Спасибо Вам!
Хорошая обработка.Спасибо