Цитата(Flexy @ 07.09.11, 17:48) необходимо зарегистрироваться для просмотра ссылки
Классная у вас Фирма!

И Юристы есть и даже Администраторы 1С!!!11
А пару строк кода проверки дублей контрагентов написать некому

Пичалька
Вот извлечение из глобального модуля для проверки ввода повторных контрагентов:
Перем ТаблКА Экспорт;
Перем Хвосты;
Функция БезХвостов(Стр)
Ст=СокрЛП(Стр);
Для К=1 По Хвосты.РазмерСписка() Цикл
Хвост=Хвосты.ПолучитьЗначение(К);
П=Найти(Ст,Хвост);
Если П>0 Тогда
Ст=Лев(Ст,П-1)+Сред(Ст,П+СтрДлина(Хвост));
КонецЕсли;
КонецЦикла;
Возврат Ст;
КонецФункции
Процедура ЗаменитьСимволы(Стр, Что, НаЧто)
Пока Найти(Стр, Что) > 0 Цикл
Стр = СтрЗаменить(Стр, Что, НаЧто);
КонецЦикла;
КонецПроцедуры
Функция Нормализация(Стр)
Какашки="`~!@#$%^&*()_+|\/;:""№?{}[]-,";
// Уберем хвосты
Ст=СокрЛП(БезХвостов(НРег(Стр)));
// Уберем какашки
Для Инд=1 По СтрДлина(Какашки) Цикл
Какашка = Сред(Какашки, Инд, 1);
ЗаменитьСимволы(Ст, Какашка, "");
КонецЦикла;
// Оставим по одному пробелу между словами
ЗаменитьСимволы(Ст, " ", " ");
ЗаменитьСимволы(Ст, " .", ".");
Возврат Ст;
КонецФункции
Функция ПоСловам(Стр)
Сп=СоздатьОбъект("СписокЗначений");
Слово="";
Для К=1 По СтрДлина(Стр) Цикл
С=Сред(Стр,К,1);
Если С=" " Тогда
Сп.ДобавитьЗначение(Слово);
Слово="";
Иначе
Слово=Слово+С;
КонецЕсли;
КонецЦикла;
Если Слово<>"" Тогда
Сп.ДобавитьЗначение(Слово);
КонецЕсли;
Возврат Сп;
КонецФункции //ПоСловам
Процедура глВнестиКонтрагента(Контр) Экспорт
Назв=Нормализация(Контр.Наименование);
Если Назв="" Тогда
Возврат;
КонецЕсли;
П=0;
Сп=ПоСловам(Назв);
Если ТаблКА.НайтиЗначение(Контр,П,"Контрагент") = 1 Тогда
ТаблКА.ПолучитьСтрокуПоНомеру(П);
Сп.Выгрузить(ТаблКА.Список);
Иначе
ТаблКА.НоваяСтрока();
ТаблКА.Контрагент=Контр;
ТаблКА.Список=Сп;
КонецЕсли;
ТаблКА.Краткое=Назв;
КонецПроцедуры
Процедура ЗагрузитьКонтрагентов(Табл)
Состояние("Загрузка справочника контрагентов...");
Контр= СоздатьОбъект("Справочник.Контрагенты");
Контр.ВыбратьЭлементы();
П=0;
ПП=100;
Пока Контр.ПолучитьЭлемент()=1 Цикл
П=П+1;
Если П>=ПП Тогда
Состояние("Загрузка справочника контрагентов ("+Строка(ПП)+")...");
ПП=ПП+100;
КонецЕсли;
Если Контр.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Назв=Нормализация(Контр.Наименование);
Если Назв="" Тогда
Продолжить;
КонецЕсли;
Сп=ПоСловам(Назв);
Табл.НоваяСтрока();
Табл.Контрагент=Контр.ТекущийЭлемент();
Табл.Краткое=Назв;
Табл.Список=Сп;
КонецЦикла;
КонецПроцедуры
Функция СравнитьСписки(Наим1,Сп1,Наим2,Спп2,Т,Сп)
Т.УдалитьСтроки();
Сп2=Спп2;
Наим11=Наим1;
Наим22=Наим2;
Если ПустоеЗначение(Сп1)=0 Тогда
Для К=1 По Сп1.РазмерСписка() Цикл
Слово1=Сп1.ПолучитьЗначение(К);
Слово="";
Дл=0;
П=0;
Дл1=СтрДлина(Слово1);
Если ПустоеЗначение(Сп2)=0 Тогда
Для Л=1 По Сп2.РазмерСписка() Цикл
Слово2=Сп2.ПолучитьЗначение(Л);
Дл2=СтрДлина(Слово2);
Если СтрДлина(Слово1)<СтрДлина(Слово2) Тогда
Если Лев(Слово2,Дл1)=Слово1 Тогда
Если Дл<Дл1 Тогда
Дл=Дл1;
П=Л;
Слово=Слово2;
КонецЕсли;
КонецЕсли;
Иначе
Если Лев(Слово1,Дл2)=Слово2 Тогда
Если Дл<Дл2 Тогда
Дл=Дл2;
Слово=Слово2;
П=Л;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Дл>0 Тогда
Т.НоваяСтрока();
Т.Слово1=Слово1;
Т.Слово2=Слово;
Т.Длина=Дл;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Т.Сортировать("-Длина,+Слово1");
Сп.УдалитьВсе();
БылСлово="";
Т.ВыбратьСтроки();
Пока Т.ПолучитьСтроку()=1 Цикл
Если Т.Слово1=БылСлово Тогда
Продолжить;
КонецЕсли;
Если Сп.НайтиЗначение(Т.Слово2)>0 Тогда
Продолжить;
КонецЕсли;
БылСлово=Т.Слово1;
П=Найти(Наим11,Т.Слово1);
Если П>0 Тогда
Наим11=Лев(Наим11,П-1)+Сред(Наим11,П+СтрДлина(Т.Слово1));
КонецЕсли;
П=Найти(Наим22,Т.Слово2);
Если П>0 Тогда
Наим22=Лев(Наим22,П-1)+Сред(Наим22,П+СтрДлина(Т.Слово2));
КонецЕсли;
КонецЦикла;
Кол=0;
Для К=1 По СтрДлина(Наим11) Цикл
С=Сред(Наим11,К,1);
П=Найти(Наим22,С);
Если П>0 Тогда
Кол=Кол+1;
Наим22=Лев(Наим22,П-1)+Сред(Наим22,П+1);
КонецЕсли;
КонецЦикла;
Возврат Макс(СтрДлина(Наим11)-Кол,СтрДлина(Наим22));
КонецФункции
Функция глПоискПовторенийВСправочнике(Наим, Эл="") Экспорт
Если ПустоеЗначение(ТаблКА)=1 Тогда
ТаблКА.НоваяКолонка("Контрагент","Справочник.Контрагенты");
ТаблКА.НоваяКолонка("Краткое","Строка");
ТаблКА.НоваяКолонка("Список");
ЗагрузитьКонтрагентов(ТаблКА);
КонецЕсли;
Гран=0.005; //! Граница чуствительности числа одинаковых символов
СпКА=СоздатьОбъект("СписокЗначений");
Назв=Нормализация(Наим);
Сп1=ПоСловам(Назв);
К=0;
КК=50;
ТТТ=СоздатьОбъект("ТаблицаЗначений");
ТТТ.НоваяКолонка("Слово1","Строка");
ТТТ.НоваяКолонка("Слово2","Строка");
ТТТ.НоваяКолонка("Длина","Число");
Спп=СоздатьОбъект("СписокЗначений");
Шаг=Окр(ТаблКА.КоличествоСтрок()/30,0,1);
КК=Шаг;
ТаблКА.ВыбратьСтроки();
Пока ТаблКА.ПолучитьСтроку()=1 Цикл
К=К+1;
Если К>=КК Тогда
Состояние("Поиск "+КК+" из "+ТаблКА.КоличествоСтрок()+" ...");
КК=КК+Шаг;
КонецЕсли;
Если Эл<>"" Тогда
Если Эл=ТаблКА.Контрагент Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Сп2=ТаблКА.Список;
Р=СравнитьСписки(Назв,Сп1,ТаблКА.Краткое,Сп2,ТТТ,Спп);
Если Р=0 Тогда
В=1;
Иначе
М=Мин(СтрДлина(Назв),СтрДлина(ТаблКА.Краткое));
В=?(?(М=0,100,Р/М)<=Гран,1,0);
КонецЕсли;
Если В=1 Тогда
СпКА.ДобавитьЗначение(ТаблКА.Контрагент);
КонецЕсли;
КонецЦикла;
Если СпКА.РазмерСписка()>0 Тогда
Сп=СоздатьОбъект("СписокЗначений");
Сп.ДобавитьЗначение(СпКА,"Список");
Сп.ДобавитьЗначение(Наим,"Наименование");
ОткрытьФормуМодально("Обработка.ПовторенияКонтрагентов",Сп);
Если Число(Сп.Получить("Отменено"))=1 Тогда
Возврат 0;
КонецЕсли;
КонецЕсли;
Возврат 1;
КонецФункции //ПоискПовторенийВСправочнике
...
// В конце гл.модуля
ТаблКА= СоздатьОбъект("ТаблицаЗначений");
Хвосты=СоздатьОбъект("СписокЗначений");
Хвосты.ДобавитьЗначение("ооо");
Хвосты.ДобавитьЗначение("аозт");
Хвосты.ДобавитьЗначение("гоао");
Хвосты.ДобавитьЗначение("чп");
Хвосты.ДобавитьЗначение("ч.п.");
Хвосты.ДобавитьЗначение("муп");
Хвосты.ДобавитьЗначение("атп");
Хвосты.ДобавитьЗначение("оао");
Хвосты.ДобавитьЗначение("имнс");
Хвосты.ДобавитьЗначение("гни");
Хвосты.ДобавитьЗначение("пни");
Хвосты.ДобавитьЗначение("зао");
Хвосты.ДобавитьЗначение("ч/п");
Хвосты.ДобавитьЗначение("ч.п");
Хвосты.ДобавитьЗначение("предприниматель");
Хвосты.ДобавитьЗначение("предпринимат");
Хвосты.ДобавитьЗначение("предприн");
Хвосты.ДобавитьЗначение("предпр");
Хвосты.ДобавитьЗначение("предп");
В модуле формы справочника Контрагенты, в процедуре ПриЗаписи(), добавляем фрагмент:
Эл=?(Выбран()=1,ТекущийЭлемент(),"");
Если глПоискПовторенийВСправочнике(Наименование, Эл)=0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Записать();
глВнестиКонтрагента(ТекущийЭлемент());