|   |   | 
| 
 | ошибка "не хватает памяти" | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Процедура ПутьНачалоВыбора(Элемент, СтандартнаяОбработка)
  СтандартнаяОбработка = Ложь; РезультатВыбора = РаботаСФайлами.ВыбратьКаталог(Элемент.Значение); КонецПроцедуры | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |