<?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='\
Обработка Удаление объектов. (Работает в управляемом приложении).
Гораздо лучше, чем стандартная, экономит много времени.
Перейти к публикации
При удалении битых ссылок регистров сведений:
{Форма.Форма(355)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
НЗ.Записать();
по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Цены номенклатуры)
Все исправил, скачивайте.
Подскажите плиз, в чем отличие если стоит галочка «Удалять через «Удалить объекты»
Вот почему, почему! Почему 1С не сделает удаление объектов с возможностью отбора, ведь это же так просто и так нужно. Спасибо за обработку 🙂
Спасибо за обработку! Вы молодец!
А можно ли удалить часть устаревшей номенклатуры, при условии, что в документах установки цен и, возможно, чеках есть ссылки на элементы номенклатуры?
Огромнейшее спасибо за обработку, регулярно выручает в нашем нелегком деле! 🙂
У нас сейчас вовсю идет внедрение УПП 8.2, обработкой пользуюсь постоянно на протяжении всего внедрения, очень удобно: в любой момент можно удалить из базы ненужные документы,почистить справочники. Большое спасибо!
Спасибо за обработку! Вы молодец!
Работает ли контроль ссылочной целостности? Удаляет через Пометку удаления или Полностью? Чем лучше УниверсальныеПодборИОбработкаОбъектов.epf? На вопрос «Подскажите плиз, в чем отличие если стоит галочка «Удалять через «Удалить объекты»» тоже не увидел ответа. Автор вы где?
Работает, если установлен монопольный режим.
Если есть ссылки удалять не будет.
В сообщениях будет видно где используется объект.
(10) asg1975,
Удалять через «Удалить объекты» есть такая процедура в конфигурации. Её использую. там можно проверять на ссылочную целостность.
Не сочтите за назойливость, но в чем выигрыш по сравнению с универсальной от 1С «УниверсальныеПодборИОбработкаОбъектов.epf»?
(13) asg1975, Моя обработка еще кроме работы с объектами ссылками работает с регистрами сведений.
И ещё удаляет битые ссылки во всех регистрах.
А что означает «Удаление из любых регистров пустых ссылок»? Очень бы хотел чтобы была возможность удаления объектов, если в них присутствует «Битые ссылки». Это вообще возможно написать?
(15) vamleshka, Да возможно принципе, это реализовано на вкладке удаление битых ссылок.
Уважаемый, igormiro. Вы можете пожалуйста добавить в свою обработку след. функцию:
Во время удаления определенной группы (например, сгруппированных документов реализации), чтобы в области Служебных сообщений отображался детальный ход выполнения (удаления того или иного документа).
Просто после использования вашей обработки у меня сложилось неоднозначное впечатление и я не знаю, что поставить: «+» или «-» (честно говоря, сначала хотел поставить «-«).
Дело в том, что я поставил удаляться документы реализации за 3 месяца с контролем ссылочной целостности. Обработка вроде начала работать (в области Служебных сообщений появилась надпись, что началась обработка группы документов реализации), но у меня за целую ночь удалилось всего лишь 6 документов (!) за первое число первого месяца и всё!
Я так до конца и не понял — делала ли вообще эта обработка удаление документов или нет.
Буду премного благодарен если вы все же добавите эту функцию (она кстати есть в типовой обработке), т.к. ваша обработка выглядит достаточно заманчива в плане удобства использования.
Заранее спасибо!
Спасибо за обработку. Очень полезная
Автор, пожалуйста ответьте мне. Очень нужно знать.
(19) Razrabotchik_www, Сейчас у меня времени нет. Добавлю как смогу.
(20) спасибо за быстрый ответ! 🙂 Ставлю плюс за хорошую обработку.
(21) Razrabotchik_www, Функционал добавил, качай и проверяй
(22) проверил. Не знаю в чем проблема… 🙁 У меня до сих пор во время процесса удаления не отображаются детальные записи (какой объект в данный момент был или не был удален). Детальные записи были отображены только после завершения удаления.
Я хотел, чтобы было как в типовой обработке. В ней во время процесса удаления в области служебных сообщений сменяются записи (какой в данный момент был или не был удален объект). Плюс к этому есть полоса состояния, которая визуально отображает процент оставшегося количества объектов для удаления. В типовой я могу оценить (примерно) какая скорость удаления и что удаление вообще происходит, но в ней нет отборов и группировок, чего очень сильно не хватает.
Очень вас прошу, пожалуйста добавьте функцию (или же объясните незнающему как ее увидеть/включить если она уже есть).
Заранее огромное спасибо!
Обработка классная! У меня нагородили юзеры ненужные элементы в справочнике, другие юзеры удалили эти ненужные элементы. А в доках остались ссылки. Обработкой подправляла хвосты, сейчас права всем закрыла, чтобы огород не высаживали в 1С.
Ваша обработка выглядит достаточно заманчива в плане удобства использования. Обработка Удаление объектов подправляла битые ссылки просто чудно а главное быстро…спасибо большое очень пригодилась…попробую удалить еще документы за преличный период…
Респектую, но ещё ни одно удаление не приносило столько пользы сколько приносит проблем,
хотя бывают исключения. Автор, кроме удаления, добавь и восстановление:)
Выложите версию для 8.1 раз уж заявляете что поддерживается 8.1?
Спасибо за обработку. Особенно пригодилась возможность удалять по видам — полезная вещь для больших баз.
Если бы еще «вкрутить» сюда механизм удаления средствами SQL (скриптики…), цены бы не было!
З.Ы.: и версию для 8.1, пожалуйста. Не все еще перешли на 8.2)
З.З.Ы.: под 8.1, на самом деле переводится за 5 минут) Но! Мне кажется, было бы полезным добавить возможность выбора сразу нескольких видов справочников, документов и т.д.
Кстати, мне кажется, что в вариант удаления без применения метода УдалитьОбъекты(), тот к-ый в цикле, было бы целесообразно добавить строчку вида «Объект.ОбменДанными.Загрузка = Истина»… Ибо процесс удаления ускоряется в десять раз, особенно у док-ов со множеством вариантов движений по регистрам — запись лишняя по регистрам обрубается.
Огромнейшее спасибо за обработку, регулярно выручает в нашем нелегком деле! 🙂
Целиком и полностью поддерживаю!
(29) AnotherSide, Полностью согласен в новой версии учту.
Хотел удалить записи в регистре сведений. Установил отбор, заполнил таблицу удалений. А кнопочки «Выполнить удаление» — нет.
(32) vkt, Ошибку исправил. Если будут еще ошибки пиши.
Качайте новую версию обработки об ошибках сообщите!!!
Спасибо, скачаем — заценим! Может и предложения появятся 😉
Выложите версию для 8.1 раз уж заявляете что поддерживается 8.1?
Согласен. если нет под 8.1 так и убрать токовые ссылки.
(36) net7wolf, Для 8.1 только старая версия. Второй файл.
(27) happyden, Для 8.1 только старая версия. Второй файл.
Вопрос: Есть <объект не определен…> в таблицы последовательности то как в этом случае поступит обработка?
(39) rozer, <объект не определен…> это битая ссылка. Попробуй просто восстановление последовательности сделать.
(39) rozer, Добавил функционал в обработку удаление битых ссылок из последовательностей. Попробуй.
(41) спасибо!
(41) сорри но не увидел в 8.1 🙁
(43) rozer, Добавил и под 8.1, выполнятся может долго, так как будет восстанавливать последовательность документов.
(44) немного не то… восстановление здесь не поможет. Воспользовался этимhttp://infostart.ru/public/62857 — переделал на 8.1
(45) rozer, Ты не понял, моя обработка делает тоже самое что иhttp://infostart.ru/public/62857 , только после удаления она корректно восстановит последовательность документов.
(46) спасибо, но восстановление последовательности мне в «центральной» базе РИБ не надо. Надо просто было исправить косяк.
спасибо!
Спасибо — полезно попробовать — может будут идеи по доработке…
В этой обработке можно установить фильтр по названию удаляемых документов?
Крутая обработка! Спасибо
Я так понял, что на форме присутствует прогресс бар, который должен отображать процент выполнения задачи.
У меня на ЗУП 8.2 он не работает
(52) serjpsv, Индикация не работает на управляемых формах. На обычных формах только пи включении флага отображать индикатор.
Обновление обработки.
Обработка выполняется быстрее. Улучшен алгоритм работы с контролем ссылочной целостности.
Уважаемый автор, если возможно добавьте такой функционал: восстановление из выбранного файла сохранения базы выбранного объекта данных (на выбор давать только не существующие в оригинале базы и измененные по сравнению с ним) со всеми вытекающими-восстановление или изменение всех связанных объектов. Перед операцией желательно предварительно показать что произойдет детально, возможно даже отобразить наподобие окна сравнения конфигураций с двух сторон оригинальный объект и тот что станет после восстановления. Если будет заменен документ, то показать какие именно реквизиты документа претерпели изменения. Возможно отдельно выделить восстановление битых ссылок в оригинальной базе.
Огромное спасибо, выручил на 5+
(46) так восстановление последовательности можно отключить, если не нужно?
Использовала для чистки базы, все прошло очень удачно. Большое спасибо
(57) AlexO, Пока нельзя, поле праздников добавлю отключение
Спасибо, очень порадовал скриншот с подробным описанием ))))
(59) Так что там насчет отключения восстановления последовательности, удалось сделать? Или тут еще старая версия? Уже везде вокруг наступило «послепраздников» ))
(61) Igly, Скачивай, появилась настройка, отключения восстановления последовательности, проверь должно работать.
Если нет то напиши.
Скажите, а на управляемые формы не планируете перевести?
(63) Signal, Обработка полностью работает на управляемых формах, по умолчанию основная форма управляемая. Только не отображаться индикатор.
(63) Signal, См 2 рисунок Форма управляемая. Если что то не работает то пишите.
Очень полезная обработка. Спасибо автору и за «живую» реакцию в том числе.
Где можно почитать в правилах (вообще, где ссылка на главной на правила сайта?) про методику учета местной «валюты»? Почему происходит списание со счета за каждое скачивание (например как здесь списалось, и за вариант 81, и за вариант 82)?
(65) Скажите пожалуйста, а возможность удалять не используя монопольный режим, будет реализована?
(68) Signal, Без монопольного режима — реализовано, только без контроля ссылочной целостности.
Если с контролем ссылочной целостности, то только в монопольном режиме (ограничения платформы).
Не могу скачать обработку, посылает на страницу со способовами оплаты, перехожу в интернет-магазин, там нет такой обработки. Подскажите, как скачать?
Извините за флуд не по теме. Разобралась.
У меня есть база и в ней есть объекты с битыми ссылками (документы). Автор, скажи, твоя обработка сможет найти и удалить все элементы, содержащие битые ссылки в реквизитах?
(72) Katish7, Посмотри на какой объект (реквизит) в документе, и сделай отбор по объекту где значение заполнено, а за тем удалить
Спасибо, получилось!
Конечно хотелось бы чтобы обработка сама искала где именно эти ссылки есть битые.
Ну да ладно, зато действительно работает быстро. Ставлю плюс!
полезная и интересная обработка. Спасибо за разработку. Часто битые ссылки или восстанавливаю или чищу через тестирование базы. С этой обаботка дело пойдет быстрее
При удалении битых ссылок не совсем понятно, что будет удалено. Хотелось бы иметь возможнось выблать галочками. Однако обработка оказалась невероятно полезной! Автору спасибо.
Еще одна очень полезная вещь в определенных ситуациях. Спасибо!
Хочется еще, чтобы был мало-мальский хелп в обработке. А то отрубили интернет, а тебе приспичило поработать (ну интернета-то нет ))) и сидишь методом тыка определяешь, в какой последовательности, что делать.
Скажите, чем отличается выполнение обработки с галкой «Использовать транзакцию» и без неё? Как будет работать быстрее?
(79) Katish7, Быстрее без транзакции, но в транзакции вы что то удаляете др. пользователи не могут эти объекты использовать так как они заблокированы.
Хорошая обработка ….
Нужная вещь для администратора 1с
Обработка, безусловно, очень полезная и нужная. Но хотелось бы узнать причину её появления вновь на небосклоне: какие-либо доработки, новшества, или исправление каких ошибок, или просто «поднятие»…?
В списке конфигураций нет БГУ. Жаль…
(86) mnikol, Обработка универсальная и работает с любой конфигурацией.
Спасибо автору за удаление регистров сведений. Раньше долго мучились. И за битые спасибо.
А у меня проблема. конфигурация УПП. По регистрам Товары в НТТ и Товары Организации появляются биты ссылки серий номенклатуры. Типа <Объект не найден…>, в регистре Партии товаров на складах такого нет, даже не знаю что делать. Товарный отчет не работает из-за этого. может эта процедура удалит такие серии.
(89) igor_1c, Проще будет в сериях найти где ссылка объект не найден и переопределить на др. объект.
Для ЗУП 8.2 не подходит ?????
(91) alida555, Что ошибку выдает, или что?
(92) Ни как не реагирут … ошибки не дает ..не запускается безединого коментария …Жаль очень нужен …
(93) alida555, Добавь как объект в конфигурацию и 100% откроется.
Скачал. Спасибо
Только не то что нужно. Теперь для 8.1 буду качать.
Спасибо огромное автору за эту обработку. Очень полезная вещь. Очень помогла при очистке справочника контрагенты от помеченных на удаление объектов. Прекрасная обработка!
Огромное спасибо за обработку. сейчас как раз очень нужна. однозначно «+»
Вышлите пожалуйста эту обработку на chantonov@yandex.ru.
Очень нужно! Спасибо заранее!
Спасибо за обработку
Отличная идея и реализация! Удачи Автору! Спасибо!