|
ошибка "не хватает памяти" | ☑ | ||
---|---|---|---|---|
0
LEXA232
26.02.12
✎
15:19
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
МассивНайденных = НайтиФайлы(Путь, "*.jpg"); счетчик = 1; ЗапросКартинок = Новый Запрос; ЗапросКартинок.Текст = "ВЫБРАТЬ | ХранилищеДополнительнойИнформации.Ссылка, | ХранилищеДополнительнойИнформации.Наименование, | ХранилищеДополнительнойИнформации.ВидДанных, | ХранилищеДополнительнойИнформации.ИмяФайла, | ХранилищеДополнительнойИнформации.Объект, | ХранилищеДополнительнойИнформации.Хранилище, | ХранилищеДополнительнойИнформации.ТекстФайла, | ХранилищеДополнительнойИнформации.Представление |ИЗ | Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации"; Результат = ЗапросКартинок.Выполнить().Выгрузить(); Отбор = Новый Структура; СчетчикСозданных = 0; код = ""; Для Каждого Файл из МассивНайденных Цикл Состояние("обрабатывается объект " + Строка(счетчик) + " из " + Строка(МассивНайденных.Количество())); счетчик = счетчик + 1; Позиция = Найти(Файл.Имя , "_" ); Если Позиция <> 0 Тогда код = Сред(Файл.Имя, 1, Позиция - 1); Если СОКРЛП(Справочники.Номенклатура.НайтиПоКоду(код).Код) = код Тогда Отбор.Вставить("ИмяФайла" ,Файл.Имя); Массив = Результат.НайтиСтроки(Отбор); Если Массив.Количество() = 0 Тогда Номенклатура = Справочники.Номенклатура.НайтиПоКоду(код).ПолучитьОбъект(); Справочник = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент(); Справочник.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение; Справочник.ИмяФайла = Файл.Имя; Справочник.Наименование = Файл.Имя; Справочник.Объект = Номенклатура.Ссылка; Справочник.Хранилище = Новый ХранилищеЗначения(Новый Картинка(Файл.ПолноеИмя),Новый СжатиеДанных); Справочник.Записать(); СчетчикСозданных = СчетчикСозданных + 1; Если Найти(Файл.Имя , "v01_s" ) <> 0 и Номенклатура.ОсновноеИзображение.ИмяФайла = "" Тогда Номенклатура.ОсновноеИзображение = Справочник.Ссылка; Номенклатура.Записать(); ИначеЕсли Найти(Файл.Имя , "v02_s" ) <> 0 и Номенклатура.ОсновноеИзображение.ИмяФайла = "" Тогда Номенклатура.ОсновноеИзображение = Справочник.Ссылка; Номенклатура.Записать(); ИначеЕсли Найти(Файл.Имя , "v03_s" ) <> 0 и Номенклатура.ОсновноеИзображение.ИмяФайла = "" Тогда Номенклатура.ОсновноеИзображение = Справочник.Ссылка; Номенклатура.Записать(); ИначеЕсли Найти(Файл.Имя , "v04_s" ) <> 0 и Номенклатура.ОсновноеИзображение.ИмяФайла = "" Тогда Номенклатура.ОсновноеИзображение = Справочник.Ссылка; Номенклатура.Записать(); ИначеЕсли Найти(Файл.Имя , "v05_s" ) <> 0 и Номенклатура.ОсновноеИзображение.ИмяФайла = "" Тогда Номенклатура.ОсновноеИзображение = Справочник.Ссылка; Номенклатура.Записать(); ИначеЕсли Найти(Файл.Имя , "v06_s" ) <> 0 и Номенклатура.ОсновноеИзображение.ИмяФайла = "" Тогда Номенклатура.ОсновноеИзображение = Справочник.Ссылка; Номенклатура.Записать(); КонецЕсли; Иначе КонецЕсли; Иначе КонецЕсли; КонецЕсли; КонецЦикла; Сообщить("обработано " + Строка(МассивНайденных.Количество()) + " картинок и создано " + строка(СчетчикСозданных)); КонецПроцедуры |
|||
1
Grusswelle
26.02.12
✎
15:22
|
Неудивительно. Попробуй поставить условия в запросе - уменьшить объём результата.
|
|||
2
DrShad
26.02.12
✎
15:22
|
(0) а что собственно удивляет?
|
|||
3
Нуф-Нуф
26.02.12
✎
15:23
|
ужаснах
|
|||
4
Wobland
26.02.12
✎
15:24
|
(2) это он хвастается
|
|||
5
LEXA232
26.02.12
✎
15:26
|
Неудивительно. Попробуй поставить условия в запросе - уменьшить объём результата
не могли бы подсказать как это сделать |
|||
6
DrShad
26.02.12
✎
15:27
|
(5) пилять, ручками - чем же еще
|
|||
7
LEXA232
26.02.12
✎
15:29
|
даже если одну картинку загружаю
|
|||
8
DrShad
26.02.12
✎
15:35
|
(7) тем более если одну, накуя весь справочник со всеми полями в память загонять?
|
|||
9
Нуф-Нуф
26.02.12
✎
15:35
|
оставь в запросе только
"ВЫБРАТЬ | ХранилищеДополнительнойИнформации.Ссылка, |ИЗ | Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации"; да и вообще, от поиска по коду можно избавиться если соединять хранилище и номенклатуру в запросе |
|||
10
Нуф-Нуф
26.02.12
✎
15:36
|
и на будущее, не стоит в запросе выбирать те поля, которые ты не собираешься использовать. тем более когда касается дело ХранилищеДополнительнойИнформации.Хранилище
|
|||
11
LEXA232
26.02.12
✎
16:41
|
спасибо большое помогло уменьшить запрос
|
|||
12
LEXA232
26.02.12
✎
17:04
|
подскажите а как сделать так чтобы программа при запуски если указанна папка открывала все папки внутри и пробигала по каждой папке в поиске изображения
|
|||
13
LEXA232
26.02.12
✎
17:08
|
Процедура ПутьНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; РезультатВыбора = РаботаСФайлами.ВыбратьКаталог(Элемент.Значение); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |