<?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) powerpc,
А Какая у Вас конфигурация ?
Тем, кто заинтересовался данной темой, предлагаю посмотреть такжеКомпаратор оборотов в информационных базах .
(1) powerpc,
Все функции общих модулей «БухгалтерскиеОтчеты» и «УправлениеОтчетами» перенес в обработку.
Попробуйте на вашей базе запустить обработку. Интересно, какая у вас конфигурация (типовая) ?
(2) echo77,
Конечно можно и простым сравнением файлов. Это просто еще один инструмент, в чём то он может быть удобней, чем просто сравнение файлов. Сравнение файлов «в лоб» не дает результата, так как если в базе перепроводили документы или проводки, даже не меняя их, то в списке операций они могут быть на разных позициях, особенно если время у всех операций одинаковое (на конец или на начало дня). Можно конечно в Excel выгрузить и там функцией ВПР() искать, но это уже дополнительные телодвижения. Тут цель максимально упростить поиск различий.
(5) да, типовая:
http://v8.1c.ru/buh8corp/)
http://www.1c.ru)
Бухгалтерия предприятия КОРП, редакция 2.0 (2.0.57.10) (
Copyright (С) ООО «1C», 2009 — 2014. Все права защищены
(
(5) измененную обработку попробовал. теперь так ругается:
{Форма.Форма.Форма(4,20)}: Переменная не определена (БухгалтерскиеОтчеты)
ОписаниеПериода = <<?>>БухгалтерскиеОтчеты.СформироватьСтрокуОграниченийПоДатамДляФормы(ДатаНач, ДатаКон);
{Форма.Форма.Форма(138,2)}: Переменная не определена (БухгалтерскиеОтчеты)
<<?>>БухгалтерскиеОтчеты.ПоддержкаОднофирменностиДляБухОтчетов(ЭтаФорма, Организация, УчетПоВсемОрганизациям, НЕ НеЗаполнятьНастройкиПриОткрытии);
{Форма.Форма.Форма(151,2)}: Переменная не определена (БухгалтерскиеОтчеты)
<<?>>БухгалтерскиеОтчеты.УправлениеПометкамиКнопокЗаголовковКоманднойПанели(ЭтаФорма, ПоказыватьЗаголовок);
(8)
http://infostart.ru/public/71572/
(9) KapasMordorov,http://infostart.ru/public/71572/ тоже кривая какая-то сверка
(10)
В чем кривость?
Сам вчера пользовался, искал расхождения с копией после перепроведения документов по ТМЦ за 11 месяцев.
(11) KapasMordorov, вот именно «искал», там чёрт ногу сломит, строк миллион, опять надо искать внутри что не совпадает
Выражаю глубочайшую благодарность Powerpc за тестирование обработки на БУХГАЛТЕРИИ КОРП. 2.0
В настоящий момент выявленные им ошибки исправлены, и обработку можно считать совместимой с Бухгалтерией 2.0 КОРП.
(13) Отличный отчёт. Последняя версия работает и в 1С8:Бухгалтерия 2.0 КОРП. Спасибо огромное автору. Долгое время не доходили руки сделать такую сверку. Тем более здесь всё так наглядно и удобно! Респект!
{ВнешнийОтчет.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.МодульОбъекта(424,2)}: Переменная не определена (БухгалтерскийУчет)
<<?>>БухгалтерскийУчет.ОбработатьВыборСубконто(Элемент, СтандартнаяОбработка, Организация, СписокПараметров, ТипЗначенияПоля);
в УТП 2.0
(15) Maximysis, А какая у вас конфигурация? В смысле бухгалтерия, упп, версия ?
По валютным счетам падает с ошибкой
{ВнешнийОтчет.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.МодульОбъекта(307)}: Ошибка при вызове метода контекста (ПолучитьЗапросОЛЕ)
ВнешОбрОЛЕ.ПолучитьЗапросОЛЕ();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.2.19.102): {ВнешнийОтчет.ОборотноСальдоваяВедомостьПоСчетуХозрасчетный.МодульОбъекта(667)}: Ошибка при вызове метода контекста (Выполнить)
{(29, 2)}: Таблица не найдена «Валюта»
<<?>>Валюта
(16) Адаптировал под свою УТП 2.0, Но ошибка с валютными счетами присутствует и в УПП 1.3
Интересная идея
Уря, сработало Комплексная автоматизация, редакция 1.1 (1.1.50.1)
Но расшифровку по счету 02 не дает
(20) gull22, А что значит «расшифровку не дает» ? — субконто не показывает или что? или не показывает какие документы изменили? Куда нажимаете ? на серое поле (где есть изменения)?
Спасибо! Бухгалтерия предприятия, редакция 2.0 (2.0.59.5) — работает
Изумительная по своей полезности штука!!!
Проверял на Комплексная автоматизация, редакция 1.1 (1.1.36.1)
Правда мне пришлось поправить строчку коннектора с
БазаОле = Новый COMОбъект(«V82.Application»);
на
БазаОле = Новый COMОбъект(«V83.Application»);
И допилить вместо журнала регистрации использование версионирования.
Добрый день!
Неверно показывает итоги оборотов по кредиту в подключаемой базе, копирует из текущей.
Ошибка в модуле объекта, строка 1249, надо заменить строку
Область.Параметры.ОборотКт2 = Формат(ОборотКт, ФорматПоказателя);
на
Область.Параметры.ОборотКт2 = Формат(ОборотКт2, ФорматПоказателя);
Жаль что нет итогов по количеству.
А в общем неплохо.
Очень полезная штуковина!
Можно найти, например, кто накосячил…
Но я часто (всегда) до своих вмешательств в конфигурацию клиента делаю копию и показываю что после моих вмешательств ничего не изменилось… Обычно проверяю остатки и обороты за период по «Оборотно сальдовой ведомости». ..
Т.е. если добавить возможность начать с «оборотно-сальдовой ведомости» (по все счетам) то будет удобней сравнивать и «расследовать». Когда ОСВ покажет с какими счетами нужно разобраться…
Отчёт «Различия в операциях…» имеет два блока:
1) Нет в этой базе
2) Нет в копии базы
Т.е. Документ который изменился будет присутствовать в обоих блоках. По моему это не удобно (не логично) ведь он есть в обоих базах…
Наверно, стоит добавить блок, например, «Различны в базах» и сначала заполнить этот блок а уж затем два предыдущих…
Пара замечений
1. Нет показа только различий в ОСВ по счету
2. Почему-то не запоминает адрес подключаемой базы с пользователем и паролем
А есть ли версия для управлямых форм?
Через управляемые формы я не знаю как подключться к внешней базе. Подскажите если есть желание. (без изменения самой конфы и установки третьей связующей базы)
Хорошая идея, жаль не работает Бухгалтерия предприятия, редакция 2.0 (2.0.65.8)
В 3.0 понятно почему не работает)
Доброго времени суток! Есть ли доработки для УТ 3.0? Заранее благодарен за ответ
На БП 2.0 обработка работает, но есть замечания:
1. Для БП КОРП 2.0 подходит плохо, т.к. не проверяет в разрезе подразделений
2. Нет сверки НУ, ВР, ПР
3. В обработке не хватает возможности выводить только расхождения.