Имя: Пароль:
1C
1С v8
Причесать контрагентов
0 Balabass
 
15.05.13
03:44
Есть 4 баз Бух. Везде естественно контрагенты заведены как попало - нет стандарта. ООО"РОГА" ООО "РОГА" ООО РОГА "РОГА" ООО.
По сути - одно и тоже, но в 2х - есть ИНН, в 2х - нет. В 1 есть КПП - в 3х Нет.
Поставили задачу - привести контрагентов в порядок, убрать дубли, сделать няшку из говнишка.
Сижу ломаю голову. Есть велосипед или теория как это делать? Или изобретать?

Сам делаю так - слил всех контрагентов из всех баз в 1 единую.
Объединяю контрагентов по реквизитам опорным, удаляю дубли-бубли.
А вот следующий щаг по выгрузке обратно и замене элементов представляю смутно.
Вообщем советы в студию.
1 Ursus maritimus
 
15.05.13
03:48
Универсальная обработка на ИТС: ПоискИЗаменаЗначений.
ЗЫ: Контрагентов нужно обувать, а не причесывать.
2 Balabass
 
15.05.13
03:51
(1) Увы - не на том стуле сижу, чтобы обувать.
Замена и поиск - это финальный этап мне кажется, после причесывания.
Или сначала лучше найти и заменить? а потом причесать остатки?
3 vJet
 
15.05.13
04:05
По поводу наименования.
Кури регулярные выражения, разбивай наименование на отдельные слова, и ищи соответствия по словам. Text minig же)
4 Balabass
 
15.05.13
04:23
(3) Думал на эту тему. Спасибо за совет.
5 vJet
 
15.05.13
06:22
(4)Поделюсь кодом

объектРегЕксп = Новый COMОбъект("VBScript.RegExp");
Функция разобратьТекстРегЕксп(данныеТекст,Шаблон,многоСтрочн,глобальн,игнорироватьРегистр)
   Результат = Новый Массив;
   ОбъектРегЕксп.MultiLine = МногоСтрочн;
   ОбъектРегЕксп.Global = Глобальн;
   ОбъектРегЕксп.IgnoreCase = ИгнорироватьРегистр;
   ОбъектРегЕксп.Pattern = Шаблон;
   результатПоиска = ОбъектРегЕксп.Execute(данныеТекст);
   Для сч = 0 по результатПоиска.count-1 Цикл
       Для сч1=0 по результатПоиска.item(сч).SubMatches.Count-1 Цикл
           Результат.Добавить(результатПоиска.item(сч).SubMatches.item(сч1));
       КонецЦикла;
   КонецЦикла;    
   Возврат Результат;
КонецФункции

Функция разобратьТекстНаСлова(пТекст)
   обработанныйТекст = черноваяобработкаТекста(пТекст);
   результатПоиска = разобратьТекстРегЕксп(обработанныйТекст+" ","(.+?[\s|$])",Ложь,истина,истина);
   Возврат результатПоиска;
КонецФункции
6 andreymongol82
 
15.05.13
06:52
(5) Спасибо. Пригодится. Закладка.