Вступайте в нашу телеграмм-группу Инфостарт
Поиск и замена дублирующихся элементов справочников, КОД ОТКРЫТ, для 7.7
Разработка - Инструментарий разработчика
2. Для установки:
2.1 Переименуйте файл WithoutConf.exe_ в WithoutConf.exe
и разархивируйте (запустите на выполнение).
2.2 Каталог DLL скопируйте в Вашу базу (копию !!!), каталог ExtForms
в одноименный каталог Вашей базы.
3. Для открытия: Сервис
Дополнительные возможности
1С:Студио: Отчёты и обработки
Поиск и замена элементов справочников
4. В обработке использованы 1С++, FormEx, StrMatch
Бесплатные
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО
| Наименование | Скачано | Бесплатно |
|---|---|---|
|
arhiv
.exe_ 1,36Mb
648
|
648 | Скачать бесплатно |
См. также
Инструментарий разработчика Системный администратор Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)
Консоль запросов к базе SQL, не требующая внешних компонент
10 стартмани
29.04.2015 23613 59 Gvozdod 8
Инструментарий разработчика Системный администратор Программист 1С:Предприятие 7.7 Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 1C77 Россия Бесплатно (free)
Обновленная сборка OpenConf Light Pack.
27.04.2014 61334 473 unichkin 50
Инструментарий разработчика Системный администратор Программист 1С:Предприятие 7.7 1С:Предприятие 8 Абонемент ($m)
Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.
1 стартмани
23.04.2014 176987 1908 Alexoniq 1654
Инструментарий разработчика Программист 1С:Предприятие 7.7 1С:Предприятие 8 Россия Абонемент ($m)
Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))
1 стартмани
04.09.2013 34727 61 O-Planet 78
Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)
На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.
1 стартмани
13.08.2013 23204 Reptile 5
Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)
Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.
1 стартмани
14.07.2013 28877 56 adamx 11
Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)
Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........
1 стартмани
21.02.2013 19479 36 MarSeN 14
Инструментарий разработчика Программист 1С:Предприятие 7.7 1C77 Абонемент ($m)
Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.
1 стартмани
21.12.2012 37367 51 venger 7
Сама для себя писала «того же назначения», в ходе последней сложной конвертации данных ничего лишним не показалось – потому попробую описать различия функционала. В качестве стартовой для организации подборов использовала свою же Печать_Справочников (есть в профайле)
1)Тоже использовала компоненту для нечеткого сравнения строк и тоже ReplVal. Только правила ее чуть больше – во-первых, в стандартном виде замена в проводках доступна только при перепроведении – хотя штатно программно можно и без перепроведения - потому сделала птычку "Заменять в операциях без перепроведения". Из того, до чего «должны дойти руки» - оставить от ReplVal только внешнюю оболочку и сделать замену прямыми запросами – чтобы и регистры и периодику без перепроведения. Во-вторых, в ReplVal исправлена «авторская ошибка» - строки 226-227 при должных обстоятельствах «выстреливают» В третьих, добавлена возможность ограничения временного диапазона документов, в которых производится замена.
2)Компонента нечеткого сравнения – замечательно, но иногда работаешь у клиента, и нет возможности ее зарегистрировать. Удобно, когда в этом случае работать все-таки можно, не используя нечеткое сравнение строк, а просто равенство (возможно, с точностью до регистра или до «всех значащих символов»)
3)Удобно, когда сравнение не по одному реквизиту, а возможность одновременного сравнения по нескольким – например, контрагенты являются двойниками, когда у них «УНН равно, наименование похоже», или товары – когда «Штрих коды равны, цены равны, наименования похожи»
4)Удобно ограничить область правильных и область поиска двойников произвольной выборкой или группой или даже признаком «удаленные» или «не удаленные» - это и ускоряет поиск, и делает результат более четким
5) Для поиска по периодическим реквизитам – задавать дату, на которую их сравниваем
6)В компоненте нечеткого сравнения строк есть замечательная возможность использовать Вес чисел – чтобы Масло 100 г и Маслы 100 г были похожи, а Масло 100 г и Масло 200 г - нет
7)В ReplVal – удобнее передавать не одной порцией, а все сразу – актуально, если двойников ОЧЕНЬ много, что бывает после конвертации.
8)После обработки ReplVal можно обучить делать «заменяемое» помеченным на удаление, а с «заменителя» эту пометку снять – мелочь, а приятно
9)Важно иметь возможность не только передать в обработку замены, но и на печать – заменитель и все двойники к нему, с расшифровками. Например, чтобы дать ответственным возможность разобраться с нечеткими случаями. Или распечатать для виновных «рецепт на получение оплеух от начальства».
Уффф….. вспомню еще чего – напишу еще )))
А просто так - жаль выкладывать - уж очень большой кусок работы.
Слишком много молчаливых пользователей с нулевым рейтингом - просто качают-качают - и все уходит куда-то "как в черную дыру" - даже без конструктива и без благодарности.
я обычно просто выношу нужную командную строку на ярлычок и запускаю его "от имени администратора"
Ой, мамо! А юзверей 40 и все не в терминале. А потом еще инженер, гад, винду переставлял и прорегить забыл :cry: Плавали - знаем! ;)
И что понимается под выражением "полнотекстовый поиск", который "в восьмерке - туфта ?" ?
Растолкуйте мне.
На всякий случай выдержка из документации (описание полнотекстового поиска в 8-ке):
* — поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: доку* — найдет "документ", "документировать", "документальный" и др.;
# — нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос #Система найдет "систама", "сивтема"; запрос Система#2 найдет "ситтама", "сеттема";
! — поиск с учетом синонимов русского, английского и украинского языков. ! ставится перед соответствующим словом; пример: поиск !красный кафель, найдет еще и "алый кафель" и "коралловый кафель".
В базе есть следующие товары:
Т/в Виски 100мл Лимитед
Виски 100мл Лимитед Т/в
Виски 100мл Лимитед
Виски 100 Лимитед
Whisky 100 Лимитед
Whisky Лимитед 100
.... ну и ещё с десяток другой похожих комбинаций с перестановкой слов/символов. А всё это один и тот же товар.
Как надо построить запрос, чтобы получить все такие похожие позиции в 8-ке без ВК?
ПервоеСлово#2 NEAR ВтороеСлово#2 OR
ПервоеСлово#2 NEAR ТретьеСлово#2 OR
ВтороеСлово#2 NEAR ТретьеСлово#2
Поиск с учетом морфологии.
Порядок слов не имеет значения.
#2 - допускается несовпадение двух символов в слове.
Поиск может осуществляться либо во всей конфигурации, либо только среди назначенных объектов метаданных. Существуют и другие возможности для организции такого поиска , какой мне нужен .
И после этого - мне толкуют о какой -то самопально-хитрой ВК ?
Задача :
Наименование элемента справочника : "Виски 100мл Лимитед "
Для этого элемента справочника мы ищем "похожие по наименованию" другие элементы этого же справочника.
Решение для 8-ки :
Определяем
ПервоеСлово = "Виски" ;
ВтороеСлово = "100мл" ;
ТретьеСлово = "Лимитед";
Составляем символьную строку поиска с использованием литералов :
СтрокаПоиска =
"Виски#2 NEAR 100мл#2 OR
Виски#2 NEAR Лимитед#2 OR
100мл#2 NEAR Лимитед#2 "
- и подаем на вход встроенной функции 8-ки, которая возвращает набор объектов
"похожих" на строку поиска.
Приведенная строка поиска означает , что искаться будут такие элементы справочника, наименование которых содержит
либо два слова "Виски" и "100мл" ( в любом порядке),
либо два слова "100мл" и "Лимитед" (в любом порядке),
либо два слова "Виски" и "Лимитед" (в любом порядке)
В каждом посиковом слове допускается несовпадение двух символов.
Т.е. наименование , содержащее два слова
"Висто" и "Леметед" в любом порядке - удовлетворяет критерию поиска.
Позиционируемся на каждый элемент справочника.
Разбираем наименование на "пЕрвоеСлово", "ВтороеСлово","ТретьеСлово".
Запускаем поиск. Получаем массив "похожих". Переходим к следующему.
Как вариант :
Затем можно организовать анализ всех полученных массивов на похожесть.
И получить группы предполагаемых дубликатов.
Сам никогда такого не делал - но предполагаю , что делать нужно примерно так.
А тут как ?
Там реализован программный вызов этого чуда ?
+ на сколько я помню, нужно у каждого реквизиты втыкать , что он используется в полнотекстовом поиске + поддержка индекса в актуальном состоянии для этого поиска..
Да, у каждого реквизита объекта есть свойство "Полнотекстовый поиск".(использовать или не использовать).
Да, база периодически должна индексироваться в монопольном режиме.
Если тупо применить описанный алгоритм к твоему примеру
"Виски 500 мл производство Волгоград".
, то строка поиска будет сотоять из комбинации трех первых слов :
"Виски" , "500" , "мл".
Т.е. программно на вход встроенного менеджера полнотекстового поиска мы подадим строку :
Виски NEAR 500
OR Виски NEAR мл
OR 500 NEAR мл
Отсюда следует что наименование "Водка 500 Волгоград" не содержит вместе ни одной из комбинаций из строки поиска .
А например строка "Волгоград 500 Лимонад мл " содержит вместе слова "500" и "мл" - значит она удовлетворяет критерию поиска. (...OR 500 NEAR мл)
Ну если тупо применять твой алгоритм, тогда давай такой пример
"производство Волгоград 500 мл Виски".
Я как бы намекал, что полнотекстовым поиском добиться универсальности крайне сложно, если вообще возможно.
И дело вообще не в платформе 7.7/8. От неё в данном случае вообще ничего не зависит
На фразу
" полнотекстовым поиском добиться универсальности крайне сложно, если вообще возможно "
можно ответить только одно :
" любым другим поиском добиться универсальности крайне сложно .... даже (прости меня, vip ) при помощи ВК"
Потому что (и я здесь полностью с тобой согласен) :
".. дело вообще не в платформе 7.7/8. От неё в данном случае вообще ничего не зависит".
Специализированное решение , разумеется, эффективнее общего.
Грубо говоря , на любой Like всегда найдется свой Whisky .
Отсюда любители "кустарных" парсеров делают радостный вывод :
время "самопальных" ВК еще не прошло !
Уместить весь алгоритм поиска в одну символьную строку и употребить Like в запросе -
смотрится ущербно , скучно и неинтересно.
Полнотекстовый поиск - это хорошо - но это совсем не заменит нечеткого сравнения - это совсем разное.
На любую построенную маску - для запроса типа LIKE - легко построю контрпример, заменивши одну букву и получивши в общем-то похожее слово. К тому же "вес чисел" тоже никак не используешь - маска Масло 100* - выберет и Масло 1000. Не говоря уж о том, что я совсем не хочу ломать голову, читать справочники и строить хитрые маски. Я просто укажу - "все похожие". Если нужна маска - сформирую выборку для поиска с использованием маски.
По поводу внешних компонент... Весь спор - "использовать или нет, если в восьмерке все есть?"
А для меня неразгаданная загадка - почему типовой ЗиУП использует внешнюю компоненту для склонения ФИО, если "в восьмерке все есть", и в крайнем случае все можно просто программно реализовать средствами языка .
1. За то , что разработчики ЗиУП используют внешний компонент для склонения ФИО - мы их осудим.
2. Из Ваших слов непонятно Что Вы понимаете под "нечетким сравнением".
Пример.
В строке поиска , которая подается на вход менеджера полнотекстового поиска в 8-ке, мы указали "Natalia#2" .
Это значит , что критерию поиска удовлетворяют :
"Natelii","Datilia" и т.д.
Вопрос : Это нечеткий поиск ?
3.
Вы то укажете ...
Но "кто-то сидящий внутри программы" должен указать числовой параметр , определяющий степень этой самой нечеткости . В примере п.2 такой числовой параметр равен 2.
И это хорошо ))
Семерка без возможности использования внешних средств вообще давно умерла бы. Для восьмерки полный отказ от внешних компонент был бы тоже путь к концу.
Про использование полнотекстового поиска в восьмерке - все же - признаю - была не права - возможность нечеткого поиска все-таки есть - так что все не так плохо ))
С сайта фирмы 1С:
Есть возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости. Пример: указав в строке поиска слово "привет" и нечеткость 17 %, найдем все аналогичные слова с ошибками и без: "привет", "превет", "привед". (с)
Насколько я понимаю, чтобы полноценно воспользоваться полнотекстовым поиском - необходимо поддерживать индекс поиска в актуальном состоянии? Т е задача поиска всех двойников может "осложниться" восстановлением индекса? Особенно если нужные на момент поиска поля не были включены в состав этого самого полнотекстового поиска и в общем случае там и не нужны?
"Но "кто-то сидящий внутри программы" должен указать числовой параметр , определяющий степень этой самой нечеткости . В примере п.2 такой числовой параметр равен 2."
Не поняла мысли .... Ну параметр "похожести" - ну и что? StrMatch вполне поддерживает "степень похожести".
Именнно так.
Для полнотекстового поиска в 8-ке индекс должен поддерживаться в актуальном состоянии. Необходимые реквизиты должны быть включены в индекс на уровне конфигуратора. Согласен , некоторые неудобства. Я согласен их терпеть и не устанавливать никакие ВК (пусть даже по отзывам великолепные).
Эээээ....Вы бы того , полегче на поворотах.
При полном отказе от ВК работает великая подавляющая часть пользователей (та самая "тьма", к которой имею честь принадлежать).
Извиняюсь. "Тьма" - это не "конец" !
95% пользователей используют типовые конфигурации. А в них на реквизитах установлено свойство "Полнотекстовый поиск". Так что проблема надуманная.
Если конфигурация нетиповая , то установить нужное свойство для реквизитов и запустить индексирование - труд небольшой.
Дело вкуса , конечно. Но это лучше , чем ставить неизвестно что на свой компьютер.
Я тоже не очень сторонница внешних компонент, но иногда это действительно необходимость.
Это как раз тот случай.
Тем более что это не для "работы изо дня в день" и не для доступа к данным для записи
А всего лишь внешние функции строковых переменных, остальное штатно. И редкие административные работы.
Рейтинг: 207
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 70044
Создание 11.05.10 15:01
Обновление 03.08.10 19:19
Просмотры 30683
Загрузки 648
Рейтинг
44
Комментарии 64
Код открыт Не указано
Рубрики Инструментарий разработчика
Кому
Системный администратор
,
Программист
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 7.7
Конфигурация 1C77
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)