1с найти дубли запросом
И немного цифр о скорости по сравнению со штатной обработкой 1С поиска дублей. Железо одно и тоже. Выбранные реквизиты и отборы одинаковы. Справочник "Контрагенты", 2790 записей.
- Обработка из публикации в режиме ЧЕТКОГО совпадения реквизитов (флаг снят) - 1 сек (поиск дублей), найдено 33 шт, 22 сек. (поиск ссылок на дубли). Всего - 23 сек.
- Обработка из публикации в режиме НЕЧЕТКОГО совпадения реквизитов поиска - 48 сек (поиск дублей), найдено 128 шт (при проценте сходства 80%), 37 сек. (поиск ссылок на дубли).Всего - 1 мин 25 сек.
- Штатная 1С в одном и том же режиме - 2 мин. 43 сек (поиск дублей и поиск ссылок на дубли), найдено 46 шт .При замене ссылок штатная обработка 1С может не заменять ссылки полностью (не использует режим обмена) из-за закрытого периода!
Порядок работы (есть в справке обработки):
1. В поле " Искать в " укажите объект конфигурации для поиска. Если будет использоваться произвольный запрос, то нажимаем на кнопку " Произвольный запрос ". В открывшемся окне с помощью конструктора запроса создаем запрос и нажимаем " Сохранить ". ВНИМАНИЕ! Текст запроса обязательно должен иметь хотяб одно поле с синонимом "Ссылка". Например, ". Объект КАК Ссылка". Поля " Код " и " ПометкаУдаления " могут так же выводиться через запрос и должны иметь синонимы вида, например " Номенклатура.Код КАК Код" или ". Номенклатура.ПометкаУдаления КАК ПометкаУдаления". Допускаются любые соединения и вложения запросов. Итоги не допускаются!
2. В списке реквизитов выберите нужные реквизиты по которым будет идти сравнение. Ставим/не ставим галку " Учитывать владельца " - поиск будет происходить в пределах владельцев.
3. В боковой панели выбираем режим поиска, путем установки флага " Нечеткое сходство данных реквизитов при поиске дублей ". Данный флаг дает возможность настроить для каждого выбранного реквизита способ совпадения данных при поиске дублей, в том числе и по вхождению отдельных слов строки. Не используется при поиске дублей записей регистров сведений независимых.
ВРЕМЯ поиска дублей при нечетком поиске возрастает во много раз!
Если нас интересует поиск дублей только по четкому вхождению, то галку не ставим -скорость поиска будет максимальная!
4. Если включен нечеткий поиск, то можно указать процент сходства данных реквизитов при поиске дублей. Это значит, что если строка по длине одного реквизита будет совпадать со строкой этого же реквизита, но другого объекта (ссылки) на указанный процент, то система будет считать этот объект дублем. Это справедливо для каждого выбранного реквизита.
5. Так же указываем " Разделитель строк. " на закладке " Нечеткий поиск ". Данный разделитель нужен для возможности разделения строки на отдельные слова, которые потом используются при нечетком поиске по правилу " По вхождению слов ".
6. Ниже, настраиваем для каждого реквизита, как будет система искать и определять дубли. " Четкое совпадение " - значит будет проверяться строка одного объекта со строкой другого в рамках данного реквизита на равенство. " По вхождению слов " - система будет разделять строку одного объекта на слова и искать вхождение каждого слова в строке другого объекта в рамках данного реквизита.
7. В отборе указываем реквизит "Родитель" с видом сравнения "В группе" и указываем папку, в которой будет идти поиск дублей, если нужно;
8. Если хотите чтоб обработка выдала не все дубли, а только определенное количество - укажите число в окошке " Число найденных дублей, после которых поиск остановить ". Так же если нужно очищать данные от знаков пунктуации или пробелов, то ставим галку " Очищать реквизиты от указанных знаков " и указываем от каких именно знаков нужно очищать.
9. Если нужно учитывать помеченные элементы, то нужно поставить галку " Учитывать помеченные на удаление ". Тогда в таблице все помеченные будут выделены красным цветом; Данная функция не работает если источником данных выбран "Произвольный запрос".
11. Если будут найдены дубли, то они будут отображены в виде дерева;
12. Далее можно вручную выбрать элемент который будет главным и будет оставлен в дальнейшем. Для этого нужно поставить галку и строка будет окрашена в зеленый цвет. В группе дублей может быть только один главный элемент!
13. Если Вы не хотите долго руками выбирать главный элемент, то можно нажать "Определить главные элементы". Есть 2 режима определения главного элемента -"По количеству ссылок" и "По вхождению значения в реквизит и количеству ссылок". Если выбрано "По количеству ссылок", то обработка автоматически посчитает ссылки на найденные элементы и определит главный элемент. Если выбрано "По вхождению значения в реквизит и количеству ссылок", то нужно указать формулу, в поле "Формула", в виде "ИмяРеквизита==Значение" без кавычек, где ИмяРеквизита - имя реквизита объекта как в конфигураторе, Значение - значение, по вхождению которого, обработка будет определять главный элемент. Если не будет найден главный элемент по вхождению Значения, то система выполнит определение главных элементов по количеству ссылок. Если будут найдены несколько элементов по вхождению, то система выберет главным тот элемент, у которого количество ссылок больше. Если источником данных являются записи регистра сведений, то система просто выделит верхние записи в каждой найденной группе дублей т.к. записи - это не ссылочные данные!
14. Есть возможность выбрать дополнительно реквизиты из найденных ссылок дублей, для более подробного анализа. Для этого нужно нажать на закладке " Найденные дубли" кнопку " Выбрать реквизиты для отображения ", откроется форма и в данной форме выбираем нужные реквизиты. Система добавит данные выбранных реквизитов в дерево. Если источником данных выступает регистр сведений, то данная операция не выполнима.
15. При нажатии " Заменить ссылки " будет выдан вопрос с настройками замены. При согласии, будет выполнен процесс замены ссылок во ВСЕЙ базе. Группы, в дереве, в которых не выбран главный элемент, будут игнорироваться!
16. Для удаления найденных дублей записей регистра сведений, используем команду " Удалить дубли записей регистра сведений ". Если в группе выбрана главная запись, то данная запись остается, остальные, входящие в данную группу дублей - удаляются. И так для каждой группы дублей в дереве.
18. Если нужно сохранить все настройки (выбранный объект, реквизиты, настройки нечеткого поиска, произвольный запрос и т.д.), то используем кнопку " Сохранить " на первой закладке в командной панели. Для восстановления настроек используем кнопку " Загрузить " на первой закладке в командной панели
Рассмотрим на примере работу обработки
Есть задача - нужно заменить ссылки номенклатуры и удалить дубли номенклатуры, основываясь на данные регистра "Штрих-коды" т.е. дубли нужно определить по записям из данного регистра, у которых ресурс " Штрихкод " одинаков. А после - удалить дубли записей в регистре штрих-кодов, у которых одинаковы ссылки на номенклатуру и и одинаков ресурс " Штрихкод ".
1. Для определения дублей номенклатуры по данным регистра на поможет произвольный запрос. Для этого нажмем кнопку " Произвольный запрос " и в отрывшемся окне, создадим запрос такого вида
ВЫБРАТЬ ШтрихКоды.ШтрихКод КАК ШтрихКод,
ШтрихКоды.Объект КАК Ссылка,
ШтрихКоды.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ШтрихКоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
ШтрихКоды.Регион КАК Регион,
ШтрихКоды.ВыгружатьВОборудование КАК ВыгружатьВОборудование,
ШтрихКоды.Запрет КАК Запрет,
ШтрихКоды.Объект.ПометкаУдаления КАК ПометкаУдаления,
ШтрихКоды.Объект.Код КАК Код
ИЗ РегистрСведений.ШтрихКоды КАК ШтрихКоды
Обратите внимание на синонимы полей. Синоним " Ссылка " обязательно должен присутствовать. Далее, нажимаем " Сохранить ".
В списке реквизитов, указываем поля, по которым будет искать дубли. В нашем случае - это поле " Штрихкод ". Если нужно - ставим галку " Очищать реквизиты от указанных знаков ". Нажимаем " Выполнить поиск дублей ". Ожидаем.
Если есть дубли, то на второй закладке в дереве они отобразятся. Мы получили дерево дублей, в котором есть ссылки на номенклатуру, у которой штрих-коды одинаковы. Теперь в меню " Работа с дублями " выбираем " Определить главные элементы ". Система произведет поиск ссылок, и на их основании выберет нужный элемент.
Далее, указываем настройки, которые система должны выполнить с дублями на первой вкладке (пометить на удаление или удалить непосредственно). После, нажимаем " Заменить ссылки " и ожидаем.
Все, замена ссылок выполнена. При этом в регистре сведений "Штрихкоды" образовались дубли записей, которые так же нужно удалить.
Для этого в поле " Искать в " выбираем регистр сведений " Штрихкоды ". Далее, указваем поля по которым система будет искать дубли. В нашем случае это " Объект " и " Штихкод " т.к. после замены номенклатура теперь одинакова для одинаковых штрихкодов. Нажимаем " Выполнить поиск дублей ".
После, в дереве дублей, вручную или автоматом, выбираем те записи регистра, которые останутся. Остальные в каждой группе - будут удалены. Если в группе не выбрана запись - данная группа игнорируется. Нажимаем " Удалить дубли записей регистра сведений ". Все - дубли удалены.
Вот таким способом данная обработка может облегчить жизнь!
С конфигурациями 8.1 обработки работают только в режиме совместимости с 8.2 (обычное приложение)
ОСОБЕННОСТИ ЗАМЕНЫ ССЫЛОК! Если при замене ссылок, ссылка заменяемого объекта будет найдены в движениях документа, то замена будет произведена в наборе регистров движений. Документ не будет перепроведен. Если ссылка будет найдена в регистрах сведений, то если после замены набор будет иметь не уникальные записи, то одна из записей будет удалена! Это особенности платформы 1С!
ВНИМАНИЕ! Возможно, что при выборе справочника/ПВХ, в таблице отбора, не будет доступных полей для отбора в управляемой форме. Это значит у Вас не включена функциональная опция, которая блокирует использование данного объекта! Это особенности управляемого приложения и СКД!
Не забываем делать бэкап базы перед использованием обработки!
Данная обработка входит в Топ-100 продаж сайта "Инфостарт" за все время!
Если у вас есть вопросы, связанные с ошибками в работе системы, то просьба обращаться через тех. поддержку Инфостарт. Ответы на прочие вопросы вы найдете в описании и справке к данной публикации! Это будет быстрее т.к. я не могу всем уделить время физически! Спасибо за понимание!
Возможно, так же будут вам полезны мои разработки:
.
Обновление от 30.08.2021, версия 6.5 (УФ, ОФ)!
- Благодаря оптимизации кода, скорость поиска дублей в режиме ЧЕТКОГО поиска увеличилась на 35%!. Например, если ранее, на поиск дублей тратили 10 минут, то теперь все происходит за 6 минут 30 сек!
- Благодаря оптимизации кода, скорость поиска дублей в режиме НЕЧЕТКОГО поиска увеличилась в 2 раза! Например, если ранее, на поиск дублей тратили 1 часа, то теперь все происходит за 30 мин!
- Исправлена ошибка, когда могли не отбираться данные в режиме нечеткого поиска, если был установлен отбор.
Обновление от 03.08.2021, версия 6.4-6.3 (УФ, ОФ)!
- Добавлена возможность поиска дублей по общим реквизитам конфигурации.
Обновление от 23.08.2019, версия 6.30!
- Исправлена ошибка, которая проявлялась, если в объекте поиска использовалось имя реквизита ПометкаУдаления не только в стандартных реквизитах. Пример тому УНФ и справочник "НаборыДополнительныхРеквизитовИСведений".
Обновление от 14.05.2019, версия 6.20!
- Добавлена возможность выбирать объекты конфигурации (метаданных), в которых будет происходить замена ссылок. Это дает возможность выполнять замену ссылок, например в документе, но при этом не трогать справочники. Для формирования дерева метаданных, в которых будет происходить замена, достаточно нажать "Определить главный элемент" или "Выбрать метаданные для замены". Система на основе найденных ссылок выстроит дерево, в котором можно выбрать где нужно заменить ссылки, а где нет. Если выбранный объект - документ, то замена будет происходить так же в движениях данного документа!
Обновление от 18.11.2018, версия 6.11 (ОФ)!
- Исправлены ошибки при выборе реквизита "Родитель" и загрузке настроек.
Обновление от 08.11.2018, версия 6.10!
Обновление от 25.02.2018, версия 6.01!
- Исправлены ошибки при которых не происходили замены ссылок в субконто движений по регистрам бухгалтерии и в периодических регистрах сведений.
Обновление от 19.02.2018, версия 6.00!
- Полностью переработана система замены ссылок в объектах и наборах регистров. Благодаря этому, время замены ссылок во всех регистрах и последовательностях сократилось почти в 2 раза по сравнению с версией 5.20 и штатной обработкой 1С!
- Учтена возможность замены ссылок в общих реквизитах объектов.
- Теперь поиск и замена ссылок в тонком клиенте происходит в привилегированном режиме всегда.
- Для ускорения работы с деревом дублей при больших объемах данных, теперь при поиске ссылок не происходит отображение найденных данных под дублями, только количество. Для просмотра ссылок на объект нужно стать на нужную ссылку и выбрать в контекстном меню "Показать ссылки на текущий элемент". Будет открыта форма для просмотра, для каждой ссылки своя.
- Добавлен вопрос подтверждения перед закрытием формы обработки.
- Подправлен интерфейс обработки на управляемых формах.
Обновление от 06.10.2017, версия 5.20!
- Разработано 2 режима определения главного элемента -"По количеству ссылок" и "По вхождению значения в реквизит и количеству ссылок". Если выбрано "По количеству ссылок", то обработка автоматически посчитает ссылки на найденные элементы и определит главный элемент. Если выбрано "По вхождению значения в реквизит и количеству ссылок", то нужно указать формулу, в поле "Формула", в виде "ИмяРеквизита==Значение", где ИмяРеквизита - имя реквизита объекта как в конфигураторе, Значение - значение, по вхождению которого, обработка будет определять главный элемент. Если не будет найден главный элемент по вхождению Значения, то система выполнит определение главных элементов по количеству ссылок. Если будут найдены несколько элементов по вхождению, то система выберет главным тот элемент, у которого количество ссылок больше.
Обновление от 17.10.2016 Ver.5.16 (УФ)!
- Исправлена ошибка при которой могли не удаляться дубли предопределенных элементов.
Обновление от 11.08.2016 Ver.5.15 (УФ), 5.15!
- Исправлена ошибка, при которой, если выбран нечеткий поиск и сильно различаются данные в полях поиска, то замена данных могла не происходить или происходить частично.
Обновление от 16.06.2016 Ver.5.14 (УФ), 5.12!
- Исправлена ошибка, возникавшая при сворачивании ресурсов, реквизитов регистров, имеющих тип "Строка" неограниченой длины.
Обновление от 02.06.2016 Ver.5.13 (УФ)!
- Исправлен модуль подключения обработки в типовые конфигурации;
Обновление от 27.05.2016 Ver.5.12 (УФ)!
- Добавлена возможность удалять дублирующиеся предопределенные элементы! После замены ссылок, с установленными флагами "Помечать дубли на удаление" или "Удалять дубли непосредственно" система отвязывает предопределенные данные от ссылки, которую потом либо удаляет, либо помечает на удаление. Будет полезно после перегрузки данных - когда предопределенные данные дублируются и трудно от них избавиться.
- Для определения дублей предопределенных нужно выбрать реквизит поиска "Имя предопределенных данных".
- Испрвлена ошибка при поиске дублей с участитем реквизита "Родитель". Реквизит переименован "Папка родитель" в обработке;
- Исправлена ошибка при определении настроек после замены ссылок;
- Изменен модуль подключения обработки в типовые конфигурации;
Обновление от 17.05.2016 Ver.5.11!
- Исправлена ошибка при поиске дублей, которая не давала найти все дубли в версии 5.1 (УФ);
- Исправлена ошибка при замене ссылок в регистрах сведений в версии 5.1(УФ) ;
- Исправлена ошибка в сохранении/загрузке настроек, которая приводила к вылету программы в версии 5.1 (УФ);
- Мелкие интерфейсные доработки;
- Добавлена обработка для обычных форм с возможностями, аналогично управляемой;
Обновление от 16.05.2016 Ver.5.1(УФ)!
- Добавлена система получения данных на основании произвольного запроса, для последующего анализа на предмет дублей;
- Добавлена возможность удаления дублей записей в независимых регистрах сведений;
- Улучшена система поиска дублей по четкому вхождению данных;
- Добавлена возможность сохранения и загрузки всех настроек обработки (текст запроса, настройки нечеткого поиска, отборы и пр.);
Причины купить
- Одна из САМЫХ БЫСТРЫХ и универсальных обработок своего класса!
- Простота использования
- Поддержка и бесплатное обновление в течении года после приобретения
- Гибкость настроек, сохраение и загрузка
- Возможность поиска дубелй и с учетом реквизитов табличных частей справочников/ПВХ
- Возможнсть использовать произвольный запрос для поиска дублей
- Поиск и удаление дублей записей в регистрах сведений по любому сочетанию измерений/ресурсов/реквизитов;
Гарантия возврата денег
ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.
Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.
Цель данной статьи – помочь начинающим разработчикам немного лучше разобраться с таким важным аспектом программирования на платформе 1С 8.3 как запросы.
Разберем на простом примере, как с помощью такого инструмента как консоль запросов найти дублирующие друг друга записи в справочнике 1С 8.3. Согласитесь, ведь зачем перегружать справочник лишними элементами, если у нас уже есть элемент с такими реквизитами.
Пример будет показан на самой простой конфигурации 1С 8.3. За основу была взята учебная конфигурация, с помощью которой специалисты сдают экзамен. После чего в справочнике номенклатура был добавлен дополнительный реквизит «Производитель». Теперь откроем режим предприятия, добавим в справочник «Номенклатура» по три дубля двух наименований (причем у двух из них будет также совпадать и производитель).
Откроем консоль запросов и для начала напишем следующий текст:
В данном запросе происходит группировка выборки по названию, а к полю «Ссылка» применяете функцию «Количество» 1С.
Тем самым узнаем, сколько с таким названием элементов справочника.
Но нас не интересуют «одиночные» элементы, т.е. те названия у которых одна ссылка. Поэтому необходимо использовать оператор «Имеющие», который применяем к функции «Количество», ставя условие что результат и вывод функции больше одного. Таким образом мы получили по три номенклатуры с одинаковым наименованием.
2. Добавление поиска по производителю
Теперь попробуем немного усложнить запрос. Добавили поиск и по производителю. Все что нужно сделать, это добавить в выборку поле «Производитель», и так же как и с наименованием сгруппировать по этому полю. В итоге запрос 1С 8.3 будет выглядеть следующим образом:
Теперь выполним его и проверим полученный результат:
Таким образом можно построить и гораздо более сложные запросы для поиска дублей. Нужно всего лишь добавить в выборку новое поле и сгруппировать.
Обработка «Поиск и замена дублей» поможет отыскать введенные в базу дублирующие элементы, а также ссылки на них и заменить все ссылки на эти дубли на ссылки с правильным элементом, а затем пометить все их на удаление.
Доступна она из раздела НСИ и администрирование-Администрирование- Обслуживание
2. Как пользоваться обработчиком Поиск и замена дублей в 1С
Рассмотрим ситуацию. В базе есть два контрагента, у которых одинаковый ИНН в 1С. Отличаются они только рабочим наименованием. Попробуем найти дубли и их заменить.
· в Искать зададим Контрагента в программе 1С
· правило поиска дублей сделаем поиск по совпадениям ИНН в 1С
Далее по средством кнопки «Найти дубли» осуществляем их поиск.
По завершению поиска в левом окне мы увидим всех контрагента в программе 1С, имеющих дубли, а в правом - все ссылки на них. Рядом с контрагентом, который имеет наибольшее количество ссылок, появится знак . Этот контрагент по умолчанию будет признан «правильным». Однако мы можем изменить его.
Для того чтобы программе 1С Предприятия 8 выделить «правильного» контрагента, определить/указать его как оригинал (выделить данного контрагента в программе 1С и нажать на кнопку «Отметить как оригинал»).
Далее используем кнопку удаления дублей в 1С (Удалить дубли). Таким образом все ссылки будут подкорректированы/исправлены на «правильного» контрагента, а сами дубли-контрагенты будут помечены на удаление.
Для того чтобы удалить из базы помеченные на удаление объекты, нужно перейти в раздел НСИ и администрирование-Администрирование – Обслуживание
Отметим флажками нужные нам элементы и нажатием кнопки «Удалить» произведем удаление.
Дата публикации 13.11.2019
Использован релиз 3.0.73
Обработка "Поиск и удаление дублей" используется для поиска в информационной базе ошибочно введенных дублирующих друг друга элементов и ссылок на них, автоматической замены всех ссылок на дубли ссылками на выбранный "правильный" элемент и установки на дубли пометки на удаление.
- Раздел: Администрирование – Обслуживание.
- В блоке "Корректировка данных" перейдите по ссылке "Поиск и удаление дублей".
- Установите правила поиска дублей и запустите поиск:
- В поле "Искать" выберите область поиска (справочник, вид документа и др.) (рис. 1).
- В поле "Отбирать" задайте условия, по которым будут отбираться элементы для поиска дублей – по кнопке "Выбрать" (в поле справа) откройте форму "Правила отбора", добавьте правила (кнопка "Добавить новый элемент") и укажите для каждого правила элемент отбора, вид сравнения и значение.
- По ссылке в поле "Сравнивать" установите правила поиска дублей – отметьте флажками реквизиты, при совпадении которых элементы будут считаться дублями (рис. 2). Совпадение может быть полным (правило "Совпадает") или неполным (правило "Совпадает по похожим словам" (не для всех реквизитов)).
- Запустите поиск дублей по кнопке "Найти дубли".
- После выполнения поиска в левое окно формы будут выведены элементы, имеющие дубли, в правое окно – объекты, которые имеют ссылки на найденные элементы с дублями (рис. 3). Элемент с наибольшим количеством ссылок на него автоматически признается основным (оригинальным) и помечается значком (рис. 3).
- По кнопке "Отметить как оригинал" можно изменить основной (оригинальный) элемент (рис. 4).
- По кнопке "Удалить дубли" на основной (оригинальный) элемент будут перенесены все ссылки из объектов информационной базы, а дубли будут помечены на удаление.
- Удаление помеченных объектов выполняется обработкой "Удаление помеченных объектов" (раздел: Администрирование).
Читайте также: