Имя: Пароль:
1C
1C 7.7
v7: Поиск имени файла в строке
0 namazi74
 
18.03.14
08:13
Доброе утро. 1С 7.7 ТиС 8.7. Обработка осуществляет перебор файлов картинок (.jpg) в каталоге на локальной машине и сравнивает их название с переменной, которая содержит название контрагента. Если имя файла совпадает с названием контрагента, то файл картинки крепится в форму и выводится на экран. Код обработки:
Процедура ПриОткрытии()
    Если СокрЛП(Форма.Параметр) <> "" Тогда
        КодКлиента    = Форма.Параметр;  
        ПутьПодписей = СокрЛП(Константа.ПапкаДоверенностей);
        Если ФС.СуществуетФайл(ПутьПодписей+"\*.*") = 1 Тогда
            ФС.УстТекКаталог(ПутьПодписей+"\");
            Файл="";
            Файл=ФС.НайтиПервыйФайл("*.*");
            ФайлНайден = 0;
            ФайлЗ="";                              
            Пока ПустаяСтрока(Файл)=0 Цикл  
                ФайлЗ=СтрЗаменить(Файл,".jpg",""); //отсекается .jpg из имена файла
                Если Найти(СокрЛП(КодКлиента),СокрЛП(ФайлЗ)) = 1 Тогда  
                    Сообщить("Совпадение найдено:"+Файл+" принадлежит Клиенту "+КодКлиента);
                    ФайлНайден = 1;
                    Прервать;
                КонецЕсли;    
                Файл=ФС.НайтиСледующийФайл();
            КонецЦикла;
            
            Если ФайлНайден = 1 Тогда
                Картинка.Загрузить(Файл);
            Иначе
                Сообщить("Файл Клиента не найден!");
            КонецЕсли;
        Иначе
            Сообщить("Каталог картинок не найден!");
        КонецЕсли;  
    КонецЕсли;
КонецПроцедуры

Всё работает если название файла в точности совпадает с названием клиента. Например, файл "Кабанов А.В. ИП.jpg" выводится в форму, а если будет название "Кабанов.jpg" или просто "а.jpg" не выводится. Но ведь вхождения в строку есть.
Каким образом реализовать?
2 povar
 
18.03.14
08:18
Если Найти(СокрЛП(КодКлиента),СокрЛП(ФайлЗ)) >0 Тогда
3 namazi74
 
18.03.14
08:31
(2) "Файл Клиента не найден!"
как-то не так
4 namazi74
 
18.03.14
08:35
(2) вру, всё работает. надо было добавить ещё одно условие:
                Если ФайлЗ<>"" Тогда
                    Если Найти(СокрЛП(КодКлиента),СокрЛП(ФайлЗ)) > 0 Тогда  
                        Сообщить("Совпадение найдено:"+Файл+" принадлежит Клиенту "+КодКлиента);
                        ФайлНайден = 1;
                        Прервать;
                    КонецЕсли;
                КонецЕсли;

Иначе он находит нулевое вхождение и срабатывает. povar, спасибо огромное!
5 namazi74
 
18.03.14
08:36
povar, спасибо большое!
6 SleepyHead
 
гуру
18.03.14
08:42
Сделайте имя файла равным ИНН или СНИЛС, и будет вам счастье..
7 SleepyHead
 
гуру
18.03.14
08:45
Если код контрагента уникальный, еще лучше сделать имя картинки равной коду.
8 namazi74
 
18.03.14
09:01
(7) да, так и было реализовано с другой группой файлов. Это правильно. Но конкретно эта группа файлов изначально создавалась без кода контрагента. Пронумеровывать их сейчас - практически нереально (файлов накопилось почти тысяча). Потому делаю вот такое извращение.