Имя: Пароль:
1C
1С v8
НайтиФайлы по маске "?"
0 Повелитель
 
04.12.13
09:26
По артикулам из карточки номенклатуры ищем картинку, в папке с изображениями "\\SERV3\image\".
Артикула в базе занесен как 063-183
В базе 1с артикулы, для стандарта всегда идут с "-", в пути картинки вместо дефисов могут быть "." или ",".

Картинка которая соответствует изображению есть, вот путь:
\\SERV3\image\mirp\425\063.183.jpg

Пытаюсь найти картинку:
Маска = Строка(Строчка.Номенклатура.Артикул)+".jpg";
Маска = СтрЗаменить(Маска,"-","?");
НайденныеФайлы = НайтиФайлы("\\SERV3\image",Маска,Истина);
Не находит.

Находит если ставить "*":
Маска = СтрЗаменить(Маска,"-","*");
Но звездочкой пользоваться нельзя, потомучто в папке может находиться и такая картинка:
\\SERV3\image\mirp\425\0631.183.jpg

Подскажите что делать?
Может использовать api функции лучше?
1 Apokalipsec
 
04.12.13
09:28
Приклеить ".жипег" после СтрЗаменить не предлагать - неинтересно?
2 Повелитель
 
04.12.13
09:29
(1) А какая разница?
На выходе все равно получаем
Маска = "063*183.jpg"
3 Мутабор
 
04.12.13
09:31
Переименуй картинки нафиг и не парься
4 Повелитель
 
04.12.13
09:35
(3) Да картинки то как раз правильно называются. Артикул такой же как на товаре.
Это мы перемудрили, когда сделали единый стандарт для Артикулов с дефисом.
Переделать артикулы будет проблематично, товаров около 70000.
5 Apokalipsec
 
04.12.13
09:37
(2) Точки тебе тоже надо заменить, неважно на * или на ?, поэтому расширение приклеивается к маске в конце. Может у тебя там после "-" ещё пробел, или перед поэтому и не находит. Ты не учел все случаи и не привел строку к нормальной маске.
6 Повелитель
 
04.12.13
09:42
(5) не находит конкретный пример, через "?"
лишних символов нет
причем если в проводнике искать, копируя из отладчика маску
*063?183.jpg, то находит
7 Мутабор
 
04.12.13
09:45
\\SERV3\image\
а так?
8 Повелитель
 
04.12.13
09:52
(7) Пробовал, не ищет
9 Apokalipsec
 
04.12.13
09:56
(8) "063?183.jpg" а так в проводнике тоже не находит?
10 Повелитель
 
04.12.13
09:59
(9) Находит
11 Повелитель
 
04.12.13
10:01
(9) Если стоять в папке \\SERV3\image\
если внутри диска С:\ стоять, то не находит
12 Apokalipsec
 
04.12.13
10:05
(11) логично)
а если сделать Маска = СтрЗаменить(Маска,"-",".") то всё равно не находит?
13 Повелитель
 
04.12.13
10:11
(12) Попробовал, так находит.
Я просто не хочу перебором искать:
Если так не нашел,Маска = "063-183.jpg"
то Маска = СтрЗаменить(Маска,"-",".") если так не нашел, то
Маска = СтрЗаменить(Маска,".",",")
Думал меня спасет "?", который в СП рекомендуют
14 Повелитель
 
04.12.13
10:19
Все нашел вариант.
Маска = "*.jpg".
Массив для 47000 картинок, получается за 5 секунд.
Перегоню его в ТЗ, ТЗ возьму менеджером временных таблиц, и там все найду запросом
15 Kerk
 
04.12.13
10:25
(14) А ещё загони эту ТЗ в регистр сведений и бери все от туда. А сам регистр обновляй раз в 15 минут-1 час.
16 Повелитель
 
04.12.13
11:28
(15) Регистр, то зачем? По ТЗ в запросе и так хорошо будет искать.
17 Kerk
 
04.12.13
13:42
(16) Это одну картинку, а если тебе их 100 получить разом надо и в разных процедурах?

Ну в общем, на твоей совести(кошельке) вопрос оптимизации :)