<?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) Пожелание заказчика. Нужно было, что был документ и попадал в журнал регламентных. Что собственно и было сделано.
(1) За «Плюс», специально для Вас, сделаю обработку, только решите, что нужно: «Бухгалтерская справка» или «операция» ))))))))))))))))))
(2) ….И как теперь заказчик обновляет конфигурацию?
(2) Вообще, обработка делающая «закрытие и/или взаимозачеты счетов 60 и 62» — вещь полезная, знаю по себе, и «Плюс» ставлю 🙂
—
Имхо стоит заполнять «Бухгалтерская справка», т.к. в ней есть кнопка «заполнить НУ».
При закрытиях счетов 62 и 60, проводки по НУ сейчас заполнять не надо. Но сейчас и не известно что еще взбредет в голову 1С (вдруг они введут для 60 62 счетов НУ) :-/
В 7.7 бухгалтерии есть типовые документы для закрытия авансов.
Их и следует заполнять.
(3) С обновлением проблем нет никаких. И откуда им (проблемам) взяться. Думаю, что «программер» обновляющий Ваши базы, сможет Вам это объяснить.
Данный документ был написан более 4-х лет назад, и даже на предприятиях, которые я сейчас не сопровождаю, заказчики обновляют свои конфигурации не задумываясь. (Если не просили чего-то глобального :)))) , не имеющего отношения к данному документу)
(3) На счет 1С: откуда такой негатив? Вы на самом деле думаете, что программа, которой Вы пользуетесь (1С) — это результат того, что ИМ «взбрело» в голову 😉
(3) Обработка для формирования «Бухгалтерской справки» Вам будет, на случай «вдруг они введут для 60 62 счетов НУ».
(4) Или я чего-то не знаю, или Вы имеете в виду «Зачет аванса покупателя/поставщика» и «Взаимозачет» тогда Вам в помощь:http://infostart.ru/projects/4717/ , или Вы не видели результата работы данного документа 🙁
(4) Типовой документ работает только по одному контрагенту. А когда их сотня — замучаешься закрывать их.
За помощь спасибо:)
2(6)
Одна обработка и формирует сотни документов.
При этом всё типовое, обработка внешняя — голова ни у кого не болит.
Добавил внешнюю обработку формирующую «Бухгалтерскую справку»
Полезная вещь получилась, спасибо!
Буху не понадобилась, но автору всеравно спасибо. Может еще пригодиться.
Доброго времени суток! Подскажите, пожалуйста, как вставить этот файл в документы. С форматом Clipboard никогда не сталкивалась. Заранее благодарю.
(12) olenionok, Здравствуйте!
comp-profi.com/view_post.php?id=88
Следующая статья пояснит работу с утилитой clipbrd.exe
После того как файл Вы загрузите в буфер обмена, в конфигураторе, на ветке «Документы», станет доступной команда «Вставить», что собственно и нужно будет сделать, а затем сохранить конфигурацию.
Здравствуйте. Спасибо большое за пояснение, я разобралась уже. Все дело в том, что на windows7 этот функционал не работает (clipbrd). Добралась до XP, и все получилось. Так что было бы прекрасно, если бы Вы либо формат поменяли, либо коммент добавили про седьмую винду. А то вряд ли у меня одной она стоит, люди тоже могут столкнуться с этим вопросом.
Еще раз благодарю.
Также есть бесплатные утилиты для работы с буфером обмена, например:CLCL
замечательная обработка, позволяет автоматически закрывать авансы по счетам на любую дату, мои бухгалтера говорят, что очень удобно, так как они постоянно забывают о закрытии авансов и еще нужно закрывать все вручную, а обработка делает все автоматически.Было бы неплохо сделать так, чтобы она сама запускалась в конце месяца))))))) и все закрывала)))
СПС, очень помогла
Было бы неплохо сделать так, чтобы она сама запускалась в конце месяца))))))) и все закрывала)))
)) Хорошая мысль )) Надо составить список таких операций, которые по нажатию одной кнопки, а лучше совсем сами в «час икс», запускались бы все оптом, и на печать только комплект документов за период выводился ))