<?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='\
(0)
а что обработка делает с документами-регистраторами —
— оставляет как есть или помечает на удаление ?
и что делать с этими документами после зачистки их наборов движений ??
и собственно какова практическая ценность работы ???
…
мяго говоря — тендициозное заявление
(2)
табличка отбора в форме — это что:
— табличное поле связанное с отбором объекта «ПостроительОтчета»
— табличное поле связанное с отбором объекта «КомпоновщикНастроекКомпоновкиДанных»
— или самопальная таблица значений
***
склоняюсь к последнему варианту, поскольку не вижу колонки
с флагом «Использование»
Вот для чего нужна табличная часть, док.рег. обработка ничего не делает( а зачем???)
Ну вот прямо таки и не знаю что и сказать . Во многом предыдущий оратор прав конечно и что же делать с данными документами. С обработкой не знакм но могу предпологать оставлять как есть поскольку речь иде только о регистрах и если мы согласны на данное допущение то вроде как и ничего обработка.
забыл написать в описании писал для себя(удалять задвоения в КБК, не давала создавать новые а старые были не активными после слива 2х баз в одну). а вообще она для любой конфы подойдёт.
(3) Rothschild, а что тогда за колонка слева? (не подписана, тип булево)
(6) streettrack, а, может быть, правильнее пометить на удаление (или перевести в архив) регистраторы? Там, где они есть, конечно. А то лажа получается: документ проведен, а движений у него нет. И вообще: неправильно устранять последствия не устранив причину — нужно сначала правильно слить 2 базы, а потом уже удалять что-то.
Кстати еще вопрос: что значит «ограничение удаления»? Это «удалить первые столько-то записей»? А чем вторые столько-то хуже? И опять же: если удаление записей из регистра занимает много времени — ищи ошибку.
(7) ShantinTD,
Ладно колонку «Использование» увидел !
🙂
Но как отбор реализовал, streettrack так и не ответил:
— табличное поле связанное с отбором объекта «ПостроительОтчета»
— табличное поле связанное с отбором объекта «КомпоновщикНастроекКомпоновкиДанных»
— или самопальная таблица значений
(7) ShantinTD,
Объясняю, писал для себя, работаю в организации после других программеров, использую её ТОЛЬКО для удаления КБК(задвоённых)ТОЛЬКО для этого и писал! А то что бонусом она другоё удалить может…ЭТО БОНУС)))
Как основа думаю не плохая(если кому то ещё нужно будет от неё, либо допишет,либо мне напишет)
Ограничение удаления начинает работать после установки флажка на очищать/удалять, если не нажимать удаляет выборочно на ваше усмотрение, т.е. выделением 1,2,3,n,…
У меня не занимает, вот посмотри, как думаешь, быстро это очистится? я думаю не очень)))
(7) ShantinTD,
И ещё один БОООООЛЬШОЙ ПЛЮС!
Обработка работает со ВСЕМИ РЕГИСТРАМИ! Т.Е! полезна для чистки всего сейчас смотрел новые обработки в рубрике.
Удаление данных по организации для ЗУП,Удаление информации по сотрудникам, всё это есть в моей, т.е, при понимании того что тебе нужно, это универсальный инструмент по очистке.)))
(8) Rothschild,
Процедура ИмяРегистраОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Регистримя = ВыбранноеЗначение;
Тип = Лев(Регистримя,Найти(Регистримя,».»)-1);
Имя = Сред(Регистримя,Найти(Регистримя,».»)+1);
Если Не Найти(Тип,»РегистрНакопления») = 0 Тогда
РегистрОбъект = РегистрыНакопления[Имя];
иначеЕсли Не Найти(Тип,»РегистрСведений») = 0 Тогда
РегистрОбъект = РегистрыСведений[Имя];
иначеЕсли Не Найти(Тип,»РегистрРасчета») = 0 Тогда
РегистрОбъект = РегистрыРасчета[Имя];
иначеЕсли Не Найти(Тип,»РегистрБухгалтерии») = 0 Тогда
РегистрОбъект = РегистрыБухгалтерии[Имя];
КонецЕсли;
НаборЗаписей = РегистрОбъект.СоздатьНаборЗаписей();
ОтборРегистраОчистки= НаборЗаписей.Отбор;
НаборЗаписей.Прочитать();
КоличествоЗаписей = НаборЗаписей.Количество();
КонецПроцедуры
УДОВЛЕТВОРИЛ)? ИЛИ ТЕБЕ ВСЮ ОБРАБОТКУ ДАТЬ?))))
УДОВЛЕТВОРИЛ)? ИЛИ ТЕБЕ ВСЮ ОБРАБОТКУ ДАТЬ?))))
1. на первый вопрос — ответ — «нет».
2. на второй вопрос — ответ — тоже «нет»
😉
***
я просто интересовался как реализованы
настройки отбора в обработке.
(12) Rothschild,
Слушай кинь в лс почту)
Или скачай и посмотри)))))
(13) streettrack, лааамы!
(14) Rothschild, ???
(13), (15) streettrack, задан конкретный вопрос: как реализован отбор? Предложены варианты:
— табличное поле связанное с отбором объекта «ПостроительОтчета»
— табличное поле связанное с отбором объекта «КомпоновщикНастроекКомпоновкиДанных»
— или самопальная таблица значений
Сложно ответить какой же из трех вариантов правильный?
А скачать — можно. Только зачем? За стартмани? Экий ты хитрый…
(16) ShantinTD,
Всё рукописное и самоделанное 😉 вручную)
КАК ТЫ НАЗВАЛ «САМОПАЛ»))))
Но самопал, не значит же что криво;)
(17) streettrack, ну это не я назвал.
Да, можно и велосипед выпилить напильником из цельного куска железа. Зачем покупать такой, которым все пользуются? Зато хендмэйд!
Успехов!
Ну и чего вы пристали к автору? Обработка работает? Да! Полезна? Да (по собственному опыту знаю — с задачей очистки регистров не каждый день сталкиваешся, но бывает; особенно при внештатных ситуациях)! Функциональна? Да, к тому же достаточно гибка в использовании. Вывод: обработка имеет право на жизнь, предназначена для программистов или продвинутых пользователей. Кому не подходит пишите сами или изменяете под себя. Автору — респект.
Спасибо)
Спасибо) помогла в чистке)
Полезно. спасибо.
Нормальная обработка, только нашел ее бесплатную версию на просторах интернета. Удобный интерфейс и исправно выполняет свои функции — что еще надо от обработки?
(23) EugenLiquor, Может кто из добрых пользователей кто уже скачал и выложил её)
Незачто) пользуйтесь наздоровье
(21) Ганс, незачто)
(22) pavel_pss, Вам спасибо за скачивание
streettrack, и не имеет аналога по широте настроек?
врать не стыдно?
(28) mrdug, обоснуйте! не помогла? чем не понравилась? не делает то о чём Вы думаете XD
или что?)))))) ищите то что вам нужно, людям помогает, благодарят, и я их…. либо не то нужно… либо чего то вам не хватает;)
Спасибо за обработку, помогла при чистке регистра не активных рабочих счетов в БГУ. Стандартные обработки не правят регистры.
Пожелание: Было бы удобнее , если б высвечивался список отобранных записей, которые нужно удалить.И сделана возможность корректировки этого списка ( как в станд обработке поиск и замена значений). НО поставленная передо мной задача была выполнена — спасибо.
(30) Olga306112, учту) как будет время добавлю и редактирование этого списка.
ппц как обычно все печально =(( вид сравнения сделайте чтоб можно было менять
Отлично хорошая разработка, спасибо помогла
(33) bercut0077, Спасибо пользуйтесь)))
И мне помогла. Понадобилось кое-что в старом периоде попраить, а перепроводить большой документ ввода начальных остатков не хотелось. А так работу выполнил. бухов устроило.
А обработка умеет удалять записи регистров сведений подчиненных регистратору? А то скачал уже обработки три, ни одна не делает такого.
Не работает. Почему не пишете, что не работает в управляемых формах?
(37) А если запустить конфигурацию в режиме Толстый клиент (обычное приложение)?
Замечательная чтука, в ближайшее время скачаю. В конфигнурациях построеннных на основе библиотеки стандартных подсистем, когда включаешь возможность чтения истории измененния объектов , регистр в котором эти все изменения хранятся очень быстро «засирается»…посему думаю что сия обработина мне сильно пригодится, т.к. есть возможность выборочного удаления данных….
Было бы интересно задать условие
Для БП 3.0 обработка не работает. Желательно в описании обработок писать в каких конфигурациях обработка действительно работает.
(41) tannnnnn, Знаете проверял на 4 конфигурациях, пишите в л.с. свою почту изменю вам под БП 3.0
Порадовало))
(44) hakerxp, =))))))) САМ В ШОКЕ))))))
Хотел почистить РегистрСведений.СписанныеТовары — куда там … 🙂 отбор можно сделать только по полю регистратор и то по одному документу .. а почему по Полю период нельзя ?
В ЗУП 3.0 не работает
Доброго времени суток!
А под КА 2.0 Ваша обработка адаптирована?
Как раз такую ищу.
Спасибо!
Обработка не открывается, пустое окно .
Какая конфигурация? Управляемые формы?