gifts2017

Поиск и замена дублирующихся элементов справочников, КОД ОТКРЫТ, для 7.7

Опубликовал Андрей Коляда (Незнайка) в раздел Администрирование - Сервисные утилиты

1. Работа над обработкой продолжается. Критика (любая) принимается.
2. Для установки:
       2.1 Переименуйте файл WithoutConf.exe_ в WithoutConf.exe
             и разархивируйте (запустите на выполнение).
       2.2 Каталог DLL скопируйте в Вашу базу (копию !!!), каталог ExtForms
             в одноименный каталог Вашей базы.
3. Для открытия: Сервис
                            Дополнительные возможности
                            1С:Студио: Отчёты и обработки
                            Поиск и замена элементов справочников
4. В обработке использованы 1С++, FormEx, StrMatch

Скачать файлы

Наименование Файл Версия Размер
arhiv 502
.exe_ 1,36Mb
03.08.10
502
.exe_ 1,36Mb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Natalia Vasilchenko (Natalia) 11.05.10 21:49
Нужная обработка
Сама для себя писала «того же назначения», в ходе последней сложной конвертации данных ничего лишним не показалось – потому попробую описать различия функционала. В качестве стартовой для организации подборов использовала свою же Печать_Справочников (есть в профайле)

1)Тоже использовала компоненту для нечеткого сравнения строк и тоже ReplVal. Только правила ее чуть больше – во-первых, в стандартном виде замена в проводках доступна только при перепроведении – хотя штатно программно можно и без перепроведения - потому сделала птычку "Заменять в операциях без перепроведения". Из того, до чего «должны дойти руки» - оставить от ReplVal только внешнюю оболочку и сделать замену прямыми запросами – чтобы и регистры и периодику без перепроведения. Во-вторых, в ReplVal исправлена «авторская ошибка» - строки 226-227 при должных обстоятельствах «выстреливают» В третьих, добавлена возможность ограничения временного диапазона документов, в которых производится замена.

2)Компонента нечеткого сравнения – замечательно, но иногда работаешь у клиента, и нет возможности ее зарегистрировать. Удобно, когда в этом случае работать все-таки можно, не используя нечеткое сравнение строк, а просто равенство (возможно, с точностью до регистра или до «всех значащих символов»)

3)Удобно, когда сравнение не по одному реквизиту, а возможность одновременного сравнения по нескольким – например, контрагенты являются двойниками, когда у них «УНН равно, наименование похоже», или товары – когда «Штрих коды равны, цены равны, наименования похожи»

4)Удобно ограничить область правильных и область поиска двойников произвольной выборкой или группой или даже признаком «удаленные» или «не удаленные» - это и ускоряет поиск, и делает результат более четким

5) Для поиска по периодическим реквизитам – задавать дату, на которую их сравниваем

6)В компоненте нечеткого сравнения строк есть замечательная возможность использовать Вес чисел – чтобы Масло 100 г и Маслы 100 г были похожи, а Масло 100 г и Масло 200 г - нет

7)В ReplVal – удобнее передавать не одной порцией, а все сразу – актуально, если двойников ОЧЕНЬ много, что бывает после конвертации.

8)После обработки ReplVal можно обучить делать «заменяемое» помеченным на удаление, а с «заменителя» эту пометку снять – мелочь, а приятно

9)Важно иметь возможность не только передать в обработку замены, но и на печать – заменитель и все двойники к нему, с расшифровками. Например, чтобы дать ответственным возможность разобраться с нечеткими случаями. Или распечатать для виновных «рецепт на получение оплеух от начальства».

Уффф….. вспомню еще чего – напишу еще )))
2. Natalia Vasilchenko (Natalia) 11.05.10 21:58
Еще из того, до чего не дошли руки, но нужно будет сделать - автоматически искать двойников в подчиненных справочниках. Например, если Контрагент А - двойник контрагента АА, то все договоры контрагента А считаем двойниками договоров контрагента АА при условии совпадения реквизитов. Иначе бывают проблемы при замене элементов, имеющих подчиненные.
3. Сергей Ожерельев (Поручик) 11.05.10 23:32
На вид шикарно. Пока потребности нет, но при случае воспользуюсь.
4. Андрей Коляда (Незнайка) 11.05.10 23:58
(1)(2) Спасибо за конструктив!!!
5. Natalia Vasilchenko (Natalia) 12.05.10 00:18
(4) Если доработаете ReplVal в нужном направлении - могу поделиться взамен своим готовым проектом )))
А просто так - жаль выкладывать - уж очень большой кусок работы.
Слишком много молчаливых пользователей с нулевым рейтингом - просто качают-качают - и все уходит куда-то "как в черную дыру" - даже без конструктива и без благодарности.
6. Gen Tay (GenTay) 12.05.10 09:41
7. Вячеслав Ефимов (eslava) 12.05.10 10:46
А с Vista она дружит? Мне выдаёт ошибку всё время "Ошибка при загрузке компоненты каталог базы\dll\StrMatch\StrMatch.dll. Компонента не загружена." Хотя папка DLL лежит в корне базы =(
8. Епрст (Ёпрст) 12.05.10 11:12
До автора наконец дошло, что обработки с закрытым кодом никому не упали ?
Похвально..
9. Епрст (Ёпрст) 12.05.10 11:21
На будущее - храните картинки в самом ert-нике, хоть на форме, хоть в мокселе.
10. Natalia Vasilchenko (Natalia) 12.05.10 12:01
(7) зарегистрировать компоненту с админскими правами
11. Игорь Исхаков (Ish_2) 12.05.10 12:23
Жаль , что для восьмерки такое творчество ненужно и бесполезно.
Наличие полнотекстового поиска ( поиск и отбор объектов во всей конфигурации) отбивает охоту у энтузиастов и любителей ВК.
12. saveliev (saveliev) 12.05.10 13:52
13. Natalia Vasilchenko (Natalia) 12.05.10 14:03
(12) regsvr32 с админскими правами
я обычно просто выношу нужную командную строку на ярлычок и запускаю его "от имени администратора"
14. Епрст (Ёпрст) 12.05.10 14:13
(11) жаль, что в снеговике нет поиска похожих слов, а реализованный полнотекстовый поиск - туфта... так что, любителей ВК не поубавится.
15. Евгений Мартыненков (JohnyDeath) 12.05.10 14:16
(11) "Полнотекстовый поиск" и "поиск похожих" - разные вещи
16. Игорь Исхаков (Ish_2) 12.05.10 14:31
(14),(15) Что понимается под выражением "поиск похожих" ?
И что понимается под выражением "полнотекстовый поиск", который "в восьмерке - туфта ?" ?
Растолкуйте мне.

На всякий случай выдержка из документации (описание полнотекстового поиска в 8-ке):

* — поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: доку* — найдет "документ", "документировать", "документальный" и др.;

# — нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос #Система найдет "систама", "сивтема"; запрос Система#2 найдет "ситтама", "сеттема";

! — поиск с учетом синонимов русского, английского и украинского языков. ! ставится перед соответствующим словом; пример: поиск !красный кафель, найдет еще и "алый кафель" и "коралловый кафель".
17. Евгений Мартыненков (JohnyDeath) 12.05.10 14:42
(16) Давай на примере.
В базе есть следующие товары:
Т/в Виски 100мл Лимитед
Виски 100мл Лимитед Т/в
Виски 100мл Лимитед
Виски 100 Лимитед
Whisky 100 Лимитед
Whisky Лимитед 100

.... ну и ещё с десяток другой похожих комбинаций с перестановкой слов/символов. А всё это один и тот же товар.
Как надо построить запрос, чтобы получить все такие похожие позиции в 8-ке без ВК?
18. Игорь Исхаков (Ish_2) 12.05.10 15:32
(17) Если поисковое наименование состоит из трех слов то возможен пример строки поиска :

ПервоеСлово#2 NEAR ВтороеСлово#2 OR
ПервоеСлово#2 NEAR ТретьеСлово#2 OR
ВтороеСлово#2 NEAR ТретьеСлово#2

Поиск с учетом морфологии.
Порядок слов не имеет значения.
#2 - допускается несовпадение двух символов в слове.

Поиск может осуществляться либо во всей конфигурации, либо только среди назначенных объектов метаданных. Существуют и другие возможности для организции такого поиска , какой мне нужен .
И после этого - мне толкуют о какой -то самопально-хитрой ВК ?
19. Андрей Коляда (Незнайка) 12.05.10 15:43
(17)(15) Кстати, большое спасибо за http://infostart.ru/public/15765/
именно эту обработку я брал как основу
20. Евгений Мартыненков (JohnyDeath) 12.05.10 16:32
(18) Что такое ПервоеСлово, ВтороеСлово... ?
Для каждого элемента, в зависимости от количества слов надо будет строить новый запрос?
....
млин, хоть ставь и смотри )
21. Епрст (Ёпрст) 12.05.10 16:40
(20) можешь не ставить.. нет в снеговике этого.
22. Епрст (Ёпрст) 12.05.10 16:49
+21 ты должен будешь писать
Виск* 10* Lim* ну и т.д..
23. Игорь Исхаков (Ish_2) 12.05.10 16:50
(20)
Задача :
Наименование элемента справочника : "Виски 100мл Лимитед "
Для этого элемента справочника мы ищем "похожие по наименованию" другие элементы этого же справочника.

Решение для 8-ки :

Определяем
ПервоеСлово = "Виски" ;
ВтороеСлово = "100мл" ;
ТретьеСлово = "Лимитед";

Составляем символьную строку поиска с использованием литералов :
СтрокаПоиска =
"Виски#2 NEAR 100мл#2 OR
Виски#2 NEAR Лимитед#2 OR
100мл#2 NEAR Лимитед#2 "
- и подаем на вход встроенной функции 8-ки, которая возвращает набор объектов
"похожих" на строку поиска.

Приведенная строка поиска означает , что искаться будут такие элементы справочника, наименование которых содержит
либо два слова "Виски" и "100мл" ( в любом порядке),
либо два слова "100мл" и "Лимитед" (в любом порядке),
либо два слова "Виски" и "Лимитед" (в любом порядке)

В каждом посиковом слове допускается несовпадение двух символов.
Т.е. наименование , содержащее два слова
"Висто" и "Леметед" в любом порядке - удовлетворяет критерию поиска.
24. Игорь Исхаков (Ish_2) 12.05.10 16:52
(20) Не слушай Ёпрста. Поставь.
25. Епрст (Ёпрст) 12.05.10 16:53
(23) зачет.. А теперь найди дубли во всем справочнике..

Тоже будешь для каждого наименования строку для поиска руками составлять?
26. Игорь Исхаков (Ish_2) 12.05.10 17:06
(25) Не понял. Зачем ручками ?
Позиционируемся на каждый элемент справочника.
Разбираем наименование на "пЕрвоеСлово", "ВтороеСлово","ТретьеСлово".
Запускаем поиск. Получаем массив "похожих". Переходим к следующему.
Как вариант :
Затем можно организовать анализ всех полученных массивов на похожесть.
И получить группы предполагаемых дубликатов.
Сам никогда такого не делал - но предполагаю , что делать нужно примерно так.
27. Епрст (Ёпрст) 12.05.10 17:11
(26) ты не понял.. Я просто запускаю обработку и она мне выдаст список всех похожих элементов..
А тут как ?
Там реализован программный вызов этого чуда ?
+ на сколько я помню, нужно у каждого реквизиты втыкать , что он используется в полнотекстовом поиске + поддержка индекса в актуальном состоянии для этого поиска..
28. Игорь Исхаков (Ish_2) 12.05.10 17:21
(27) Ага. Это чудо запускается программно. Т.е. на вход встроенного менеджера подается строка поиска , а на выходе коллекция объектов "СписокПолнотекстовогоПоиска".
Да, у каждого реквизита объекта есть свойство "Полнотекстовый поиск".(использовать или не использовать).
Да, база периодически должна индексироваться в монопольном режиме.
29. Епрст (Ёпрст) 12.05.10 17:30
(28) ну, если в профайлере посмотреть на текст запроса - то там скорее всего, обычный like и ничего нового...

А так - один хрен писать хоть в клюшках, хоть в снеговике придётся всё руками.

30. Игорь Исхаков (Ish_2) 12.05.10 17:33
Конечно, Like.
А что там еще может быть ?

Да, я совсем не возражаю против творчества в 77.
Но паровоз ушел слишком далеко...
31. Епрст (Ёпрст) 12.05.10 17:34
32. Евгений Мартыненков (JohnyDeath) 12.05.10 17:37
(23) Давай другой пример. Дано:
"Виски 500 мл производство Волгоград".
Найти похожие.
По твоему алгоритму (как я его понял) помимо прочего получим и такие элементы:
Водка 500 Волгоград
Лимонад Волгоград
Чай 500
...

Так?
33. vip (vip) 12.05.10 17:44
(30) Что ты все про паровоз?
Как бы тебе ни хотелось, никуда он не ушел, пыхтит. И весьма бодро.
34. Игорь Исхаков (Ish_2) 12.05.10 18:09
(32) Нет не так .
Если тупо применить описанный алгоритм к твоему примеру
"Виски 500 мл производство Волгоград".
, то строка поиска будет сотоять из комбинации трех первых слов :
"Виски" , "500" , "мл".

Т.е. программно на вход встроенного менеджера полнотекстового поиска мы подадим строку :
Виски NEAR 500
OR Виски NEAR мл
OR 500 NEAR мл

Отсюда следует что наименование "Водка 500 Волгоград" не содержит вместе ни одной из комбинаций из строки поиска .
А например строка "Волгоград 500 Лимонад мл " содержит вместе слова "500" и "мл" - значит она удовлетворяет критерию поиска. (...OR 500 NEAR мл)
35. Игорь Исхаков (Ish_2) 12.05.10 18:19
(33) Я тут маленько похулиганил ...
но отгадай какие слова лишние ?
"никуда он не ушел, пыхтит на месте. И на вид весьма бодро"
36. vip (vip) 12.05.10 18:29
(35) Сам же понимаешь, что тобой добавленные слова лишние.
На месте пыхтят и будут пыхтеть такие, как ты, типовоконфигопоклонники.
И в 7, и в 8.
37. Вячеслав Ефимов (eslava) 12.05.10 18:36
38. Игорь Исхаков (Ish_2) 12.05.10 18:42
(36) Не угадал. В предложении нет лишних слов.
"Типовоконфигопоклонники" - пусть так.
Нас тьмы и тьмы и тьмы... Попробуйте сразитесь с нами (с)
39. vip (vip) 12.05.10 18:49
(38) Согласен. А нас единицы.
И после вашей тьмы нам работать с заказчиком гораздо легче.
40. Игорь Исхаков (Ish_2) 12.05.10 18:56
(39) Я тебе уже писал
"Единица - вздор, единица -ноль", а ты опять за своё...
41. Игорь Исхаков (Ish_2) 12.05.10 18:59
(39) Перебирайся к нам во тьму - возьми на сопровождение типовую.
Узнаешь, что почём. В темноте , но не в обиде.
42. Natalia Vasilchenko (Natalia) 12.05.10 19:55
Все не прочитала ))
Полнотекстовый поиск - это хорошо - но это совсем не заменит нечеткого сравнения - это совсем разное.

На любую построенную маску - для запроса типа LIKE - легко построю контрпример, заменивши одну букву и получивши в общем-то похожее слово. К тому же "вес чисел" тоже никак не используешь - маска Масло 100* - выберет и Масло 1000. Не говоря уж о том, что я совсем не хочу ломать голову, читать справочники и строить хитрые маски. Я просто укажу - "все похожие". Если нужна маска - сформирую выборку для поиска с использованием маски.

По поводу внешних компонент... Весь спор - "использовать или нет, если в восьмерке все есть?"
А для меня неразгаданная загадка - почему типовой ЗиУП использует внешнюю компоненту для склонения ФИО, если "в восьмерке все есть", и в крайнем случае все можно просто программно реализовать средствами языка .
43. Евгений Мартыненков (JohnyDeath) 12.05.10 20:56
(34) ну ты как-то слишком уж всё упростил. Я ж написал такой пример, состоящий из пяти (читай "не из трех") слов, не для того, чтобы ты применил к нему статический алгоритм для трех слов. Я ж думал, что он у тебя подстраивается под количество строк.
Ну если тупо применять твой алгоритм, тогда давай такой пример
"производство Волгоград 500 мл Виски".

Я как бы намекал, что полнотекстовым поиском добиться универсальности крайне сложно, если вообще возможно.

И дело вообще не в платформе 7.7/8. От неё в данном случае вообще ничего не зависит
44. Игорь Исхаков (Ish_2) 12.05.10 22:27
(43) Ни в коем случае , приведенный мной навскидку алгоритм не является лучшим или оптимальным . Этим примером я лишь продемонстрировал , что в 8-ке достаточно встроенных средств для реализации оптимального алгоритма и не нужны никакие ухищрения и ВК. Вот и всё.

На фразу
" полнотекстовым поиском добиться универсальности крайне сложно, если вообще возможно "
можно ответить только одно :
" любым другим поиском добиться универсальности крайне сложно .... даже (прости меня, vip ) при помощи ВК"

Потому что (и я здесь полностью с тобой согласен) :
".. дело вообще не в платформе 7.7/8. От неё в данном случае вообще ничего не зависит".

45. Игорь Исхаков (Ish_2) 13.05.10 07:38
(42)
1. За то , что разработчики ЗиУП используют внешний компонент для склонения ФИО - мы их осудим.
2. Из Ваших слов непонятно Что Вы понимаете под "нечетким сравнением".
Пример.
В строке поиска , которая подается на вход менеджера полнотекстового поиска в 8-ке, мы указали "Natalia#2" .
Это значит , что критерию поиска удовлетворяют :
"Natelii","Datilia" и т.д.
Вопрос : Это нечеткий поиск ?

3.
Я просто укажу - "все похожие".

Вы то укажете ...
Но "кто-то сидящий внутри программы" должен указать числовой параметр , определяющий степень этой самой нечеткости . В примере п.2 такой числовой параметр равен 2.

46. Natalia Vasilchenko (Natalia) 13.05.10 11:27
(45) :D Я не то чтобы ради осуждения. Я просто к тому, что и в 7.7 и в 8 используются внешние средства, даже "самыми главными разработчиками".
И это хорошо ))
Семерка без возможности использования внешних средств вообще давно умерла бы. Для восьмерки полный отказ от внешних компонент был бы тоже путь к концу.

Про использование полнотекстового поиска в восьмерке - все же - признаю - была не права - возможность нечеткого поиска все-таки есть - так что все не так плохо ))

С сайта фирмы 1С:
Есть возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости. Пример: указав в строке поиска слово "привет" и нечеткость 17 %, найдем все аналогичные слова с ошибками и без: "привет", "превет", "привед". (с)

Насколько я понимаю, чтобы полноценно воспользоваться полнотекстовым поиском - необходимо поддерживать индекс поиска в актуальном состоянии? Т е задача поиска всех двойников может "осложниться" восстановлением индекса? Особенно если нужные на момент поиска поля не были включены в состав этого самого полнотекстового поиска и в общем случае там и не нужны?

"Но "кто-то сидящий внутри программы" должен указать числовой параметр , определяющий степень этой самой нечеткости . В примере п.2 такой числовой параметр равен 2."
Не поняла мысли .... Ну параметр "похожести" - ну и что? StrMatch вполне поддерживает "степень похожести".
Прикрепленные файлы:
47. Игорь Исхаков (Ish_2) 13.05.10 13:56
(46)
Именнно так.
Для полнотекстового поиска в 8-ке индекс должен поддерживаться в актуальном состоянии. Необходимые реквизиты должны быть включены в индекс на уровне конфигуратора. Согласен , некоторые неудобства. Я согласен их терпеть и не устанавливать никакие ВК (пусть даже по отзывам великолепные).

Для восьмерки полный отказ от внешних компонент был бы тоже путь к концу.


Эээээ....Вы бы того , полегче на поворотах.
При полном отказе от ВК работает великая подавляющая часть пользователей (та самая "тьма", к которой имею честь принадлежать).

Извиняюсь. "Тьма" - это не "конец" !
48. Natalia Vasilchenko (Natalia) 13.05.10 14:02
(47) Для быстрого разгребания завалов - перестроить всю конфигурацию - ради полнотекстового поиска???
Неееее. Лучше РАЗОВО внешняя компонента - легко и быстро.Она ведь не нужна постоянно. В семерке я тоже минимумом обхожусь.
49. Игорь Исхаков (Ish_2) 13.05.10 14:15
(47) "Перестроить всю конфигурацию".
95% пользователей используют типовые конфигурации. А в них на реквизитах установлено свойство "Полнотекстовый поиск". Так что проблема надуманная.
Если конфигурация нетиповая , то установить нужное свойство для реквизитов и запустить индексирование - труд небольшой.
Дело вкуса , конечно. Но это лучше , чем ставить неизвестно что на свой компьютер.
50. Natalia Vasilchenko (Natalia) 13.05.10 15:17
(49) "Полнотекстовый поиск" в типовых - по всем реквизитам разве? По-моему "джентельменский минимум" - ради уменьшения времени индексирования... Ну да ладно

Я тоже не очень сторонница внешних компонент, но иногда это действительно необходимость.
Это как раз тот случай.
Тем более что это не для "работы изо дня в день" и не для доступа к данным для записи
А всего лишь внешние функции строковых переменных, остальное штатно. И редкие административные работы.
51. Сергей (Che) Коцюра (CheBurator) 14.05.10 17:38
(23) плохо, не найдет элемент с Wisky LTD. а с ВК - найдет...
52. Игорь Исхаков (Ish_2) 14.05.10 18:06
53. Игорь Исхаков (Ish_2) 14.05.10 22:21
(52) Передумал : нет, не уел.
Специализированное решение , разумеется, эффективнее общего.
Грубо говоря , на любой Like всегда найдется свой Whisky .
Отсюда любители "кустарных" парсеров делают радостный вывод :
время "самопальных" ВК еще не прошло !
Уместить весь алгоритм поиска в одну символьную строку и употребить Like в запросе -
смотрится ущербно , скучно и неинтересно.
54. Аркадий Кучер (Abadonna) 14.05.10 22:51
(13)
regsvr32 с админскими правами
я обычно просто выношу нужную командную строку на ярлычок и запускаю его "от имени администратора"

Ой, мамо! А юзверей 40 и все не в терминале. А потом еще инженер, гад, винду переставлял и прорегить забыл :cry: Плавали - знаем! ;)
55. Natalia Vasilchenko (Natalia) 16.05.10 15:30
(54) Я просто рассказала, как я решаю проблему для себя. Даже наверное кому-то этим помогла.
А Вы как боретесь со своими 40 юзерами и гадами инженерами?
56. Алексей Алексеев (Aleksey_3) 16.05.10 15:59
57. Natalia Vasilchenko (Natalia) 16.05.10 16:04
(56) С vkloader на Win 7 какие-то проблемы были, наспех не получилось, потом разбираться не стала.
Но (54) немножко иронией было - если уж критикуете - то критикуйте конструктивно.
58. Аркадий Кучер (Abadonna) 16.05.10 16:56
(57)
то критикуйте конструктивно.
и (55)
Конструктивно? Да сколько угодно! Варианты:
1. Убить гада-инженера (но это больно уж просто)
2. http://infostart.ru/public/15861/
3. http://infostart.ru/public/59436/ - и сама зверь штука ;) и метод RunAs есть
Чего-то более конструктивного уже нагловато-то бы было просить, а? :D
59. Алексей Алексеев (Aleksey_3) 16.05.10 20:31
(57) Дома стоит вин 7, проблем нет
На работе вин 8, только из-за нее пришлось прикрутить эту длл. Правда справедливости ради нужно отметить, что пришлось несколько релизов сменить, прежде чем удалось запустить ее нормально.
60. Natalia Vasilchenko (Natalia) 17.05.10 00:19
(58) это уже конструктивнее )))
когда у меня будет гад-инженер - то он скорее всего останется жив )))
а пока я все же просто с ярлычка "от имени администратора" - мне пока хватает и этого
61. nicolas eliseev (nicxxx) 05.08.10 08:49
(13) не работает. надо в c:\windows\system32 положить 2 файла mfc71.dll и msvcr71.dll
только после этого strmatch.dll смогла зарегиться
62. nicolas eliseev (nicxxx) 05.08.10 08:50
бага в бух 7.7 рел 517, спр Контрагенты, ползунок на 0%:
Для А = 1 По СколькоОтбирать Цикл
{V:\BASE7\LYASKIN\EXTFORMS\_TRIFLE\DUBL\FIND.ERT(1031)}: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)

63. mosAdm (mosAdm) 23.05.11 11:32
(0)StrMatch.dll битая оказалась, брал здесь http://infostart.ru/public/15765/