<?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с Управление Торговлей 11.1?
Доброе время суток, попытался поспользоваться обработкой в РК ЖКХ 3.0 (аналог БП 3.0) открылась управляемая форма без возможости выбора объектов и реквизитов. Глянул внутри, там нет кнопок выбора и нет обработок перед началом выбора, только обработка выбранного значения. Каким образом можно исправить? Запускаюсь под управляемым приложением с полными правами.
(10) разобрался, было отключено свойство редактирования текста в поле
Спасибо. Но как вручную добавить объекты на замену? Если они ни чем не похожи?
Обработка не работает с Управление торговлей 11.1.4.10
Управление торговлей 11.1.4.10 — обработка не работает. Пишет: «На элементы есть ссылки.» и замена не происходит.
(16) baa50, И эта обработка не работает с УТ 11.1.4.10… Выходит пустая форма, в которой доступно поле «все действия» — изменить форму и F1
(16) baa50, работает аналогично типовой обработке.
Удалось решить задачу с удалением дублей, но однозначного понимания почему или что мешало, нет. Возможно есть проблемы в платформе.
Решение ситуации:
— удаление помеченных объектов (запуск обработки через все функции)
— пере проведение документов где есть ссылки (в моем случае это документы ввод начальных остатков)
После этого работает!
1С:Предприятие 8.3 (8.3.4.437) Розница, редакция 2.0 (2.0.8.12).(версия для 1с 8.3) Не ищет по похожим словам номенклатуры. Нажимаю кнопку найти… Будем искать долго? ОК, ни что не происходит.
Нужна была для поиска для замены дублей номенклатуры, а по полному наименованию не ищет, вариант для поиска — только по похожим словам. Без этого, к сожалению, бесполезна для данной задачи в моих условиях. Чтож никто написать подобную не может?
НЕ РАБОТАЕТ ПОД — По похожим словам!!!!!
(23) rosinfoteh, попробуйте поэкспериментировать с ползунком на один шаг вправо и сделайте поиск
(24) baa50, пробовал. не тот случий((
(24) baa50, вы прикрасно должны понимать…что если ползунок поставить на максимум…он хоть должен думать…а он вообще не реагирует…
даа, хотела скачать, а тут такие коменты, задумалась, тратить ли бабло….
1с БП 3.0 (8.3 упр. приложение)
Для чего качал: Наименование договора для каждого контрагента уникально, однако по одному контрагенту есть несколько договоров с одним и тем же наименованием и др. параметрами.
Поиск по наименованию Договора и отборам Вид договора и вхождению в группу Контрагентов работает, удаление нет.
При нажатии «Замена во всех группах» выдает ошибку «Индекс находится за границами массива».
Верните деньги.
(28) Кстати да, на номенклатуре тоже выдает ошибку об индексе за пределами массива.
(14) 1С43, попробуйте снять галку «Выполнять все замены в одной транзакции»
не работает по отбору «содержит» — для меня бесполезна.
Верните деньги.
У меня есть аналогичная, тоже хорошо работает. Так что советую.
Спасибо, за обработку. Помогло!
не работает в управляемом приложении!
Вообще не заполняется список справочников. Скачал обе версии, у обеих одно и то же!
Разработчик верни деньги!!!
Не нашёл там:
а как поиск штрих-кодов осуществить?
Спасибо за обработку. Но как удалить найденные объекты, когда поиск проводился по похожим реквизитам? В частности не обрабатывать найденную группу или из группы удалить ненежную строку. Явно, мне не надо заменять «Александра Захарова» на «Александра Петрова», но надо оставить замену «Александра Захарова» на «Алесандра З». В штатной обработке 1с «Поиск и замена дублей» в такой ситуации убирал из табличной части ненужные строки, а дальше Автовыбор и удаление. В Вашей обработке не могу удалять из табличной части Объекты
В бух 3.0 пытался заменить дублирующие организации. Выдает ошибку «неверное имя колонки».
из табличной части нельзя удалить необъединяемые элементы, чтобы обойти эту ошибку.
К сожалению, обработка не помогла.
Спасибо, очень пригодилась.
По первым ощущениям — обработка, то что нужно! Есть волшебная кнопка «Автоопределение правильных», по которой обработка вычисляет объект, который нужно оставить. После замены, дубли помечаются на удаление. Пока тестирую, по результатам доложусь. Спасибо автору!
У меня вылетало с ошибкой индекса, после 899 строки модуля формы вставил следующий код:
По похожим словам не ищет т.к. не проходит проверку на более чем 1000 обрабатываемых элементов. Автор почему то спрашивает «точно продолжить» и вне зависимости от ответа ставит Возврат… Короче закомментил проверку
(42) kotlovD, Как это не ищет по похожим словам?! У меня все нашла. Даже сотров в ЗУПе по похожим именам-отчествам нашла. Хотя нужно было только по фамилии. Может с ползунком настройки сходства переборщил… А так вполне рабочая обработка — советую к работе.
Спасибо за обработку.
модуль формы номер строки 1150
вместо
Если ТипВопроса = «ОбработкаВопросов» И
нужно
Если (ТипВопроса = «ОбработкаВопросов» Или ТипВопроса = «ПоискПоПохожимСловам») И
в случае если КоличествоЭлементовДляПоиска > 1000 и Пользователь ответил «Да»
так же в обработке убраны 2 очень важные функции: Возможность добавления и удаления строк таблицы значений «НайденныеОбъекты»
используются когда нужно откорректировать ручками результаты поиска
Три замечания:
1. Не работает как-то с последовательностями, ошибка индекса в измерениях, убрал оттуда.
2. Пометка на удаление вызывается через УстановитьПометкуУдаления, поменял так:
ОбъектСсылки.ОбменДанными.Загрузка = истина;
ОбъектСсылки.ПометкаУдаления = истина;
ОбъектСсылки.Записать();
3. Режим загрузки по умолчанию включен. Если вызывать замену во всех группах, не открывается окно настроек замены, что есть криво и отдельно его никак не вызвать.
Чисто практические замечания.
Так вроде работает.
Не работает.
ПоказатьПредупреждение(Новый <<?>>ОписаниеОповещения(«ОбработкаОповещений»,ЭтаФорма,»ОтсутствиеПрав»),»Для выполнения поиска и замены дублирующихся элементов необходимо наличие роли «»Полные права»» !»);
+1, Работает в «Рознице 2.1» (Поиск и замена дублирующихся элементов справочников (версия для 1с 8.3)):
Склеил дублирующихся пользователей.
Отличная обработка! Спасибо!
Обработка отработала на отлично ЗУП 3.1. Спасибо
Какая-то недоделанная обработка 🙁
Под обычным приложением (БП 2.0) вообще не запускается.
Под управляемым (УТ 11.3) запускается, но в результате поиска контрагентов по ИНН получаем просто список контрагентов с одинаковыми ИНН, а настроить колонки списка, чтобы выбрать «правильный» нет.
Зря потратил смартмани !!!
8.3 конфа ДО. При попытке искать по похожим значениям, ничего не происходит, кнопка не реагирует. Думал БСП Переделали
https://infostart.ru/public/100041/
Но в этой старой, переделанной из ут, в режиме толстого работает поиск похожих
Закоментировал часть в модуле формы, где предупреждение типа «вы правда хотите искать похожие значения? Это долго!»
И все заработало. Понравились окна прогресса текущей стадии разбора похожих слов.
Спасибо автору доработки
Да прочитал внимательно, про комментирование уже писали в посте 42. Работает
модальные вызовы есть в обработке?