Здравствуйте,

Есть обработка которая загружает картинки из каталога в 1С,

Картинки у меня хранятся в папке C:\pic
Вид хранения

Основная картинка
КодДляПоиска
Доп.
КодДляПоиска_1
Доп.
КодДляПоиска_2
и.т.д

Подскажите, что нужно поправить в коде, чтоб загружались картинки _1, _2 с одинаковым кодом, номером и присваивались нужной Номенклатуре.

Сейчас получается выгрузить несколько картинок в одну карточку, только если поменять расширение.

Вот весь код.

```1c
    &НаКлиенте
    Процедура ПапкаСКартинкамиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    ВыборКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
    Если ВыборКаталога.Выбрать() Тогда
    Объект.ПутьККаталогу = ВыборКаталога.Каталог;
    КонецЕсли;

    СтандартнаяОбработка = Ложь;

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция МассивРасширенийКартинок()

    МассивРасширений = Новый Массив;
    МассивРасширений.Добавить("*.bmp");
    МассивРасширений.Добавить("*.gif");
    МассивРасширений.Добавить("*.png");
    МассивРасширений.Добавить("*.jpeg");
    МассивРасширений.Добавить("*.dib");
    МассивРасширений.Добавить("*.rle");
    МассивРасширений.Добавить("*.tif");
    МассивРасширений.Добавить("*.jpg");
    МассивРасширений.Добавить("*.ico");
    МассивРасширений.Добавить("*.wmf");
    МассивРасширений.Добавить("*.emf");

    Возврат МассивРасширений;

    КонецФункции

    &НаКлиенте
    Процедура ЗагрузитьКартинки(Команда)

    Каталог = Новый Файл(Объект.ПутьККаталогу);
    Если НЕ Каталог.Существует() Тогда
    Сообщить("Не верно указан каталог!");
    Возврат;
    КонецЕсли;

    //МассивФайлов = НайтиФайлы(Объект.ПутьККаталогу, "*", Истина);

    МассивФайлов = Новый Массив;
    МассивРасширений = МассивРасширенийКартинок();
    Для каждого ТекРасширение Из МассивРасширений Цикл
    цМассивФайлов = НайтиФайлы(Объект.ПутьККаталогу, ТекРасширение, Истина);
    Для каждого ТекФайл Из цМассивФайлов Цикл
    МассивФайлов.Добавить(ТекФайл);
    КонецЦикла;
    КонецЦикла;

    МассивФайловДляЗагрузки = Новый Массив;

    Для каждого Файл Из МассивФайлов Цикл
    СтруктураФайла = Новый Структура("КодДляПоиска,Размер,ПолноеИмя,ИмяБезРасширения,Расширение,ВремяИзменения,УниверсальноеВремяИзменения");
    СтруктураФайла.КодДляПоиска = СтрЗаменить(Файл.ИмяБезРасширения," ",");
    СтруктураФайла.Размер = Файл.Размер();
    СтруктураФайла.ПолноеИмя = Файл.ПолноеИмя;
    СтруктураФайла.ИмяБезРасширения = Файл.ИмяБезРасширения;
    СтруктураФайла.Расширение = Файл.Расширение;
    СтруктураФайла.ВремяИзменения = Файл.ПолучитьВремяИзменения();
    СтруктураФайла.УниверсальноеВремяИзменения = Файл.ПолучитьУниверсальноеВремяИзменения();
    МассивФайловДляЗагрузки.Добавить(СтруктураФайла);
    КонецЦикла;

    МассивФайловДляЗагрузки = ПроверитьМассивФайловДляЗагрузки(МассивФайловДляЗагрузки);

    СоответствиеАдресовВХранилище = Новый Соответствие;

    Для Каждого Файл Из МассивФайловДляЗагрузки Цикл
    Если ЗначениеЗаполнено(СоответствиеАдресовВХранилище.Получить(Файл.ПолноеИмя)) Тогда
    Файл.Вставить("АдресВременногоХранилищаФайла", СоответствиеАдресовВХранилище.Получить(Файл.ПолноеИмя));
    Иначе
    ДвоичныеДанные = Новый ДвоичныеДанные(Файл.ПолноеИмя);
    АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные,ЭтаФорма.УникальныйИдентификатор);
    Файл.Вставить("АдресВременногоХранилищаФайла", АдресВременногоХранилищаФайла);
    СоответствиеАдресовВХранилище.Вставить(Файл.ПолноеИмя, АдресВременногоХранилищаФайла);
    КонецЕсли;
    КонецЦикла;

    ЗагрузитьКартинкиСервер(МассивФайловДляЗагрузки);

    //Сообщить("Загрузка окончена! Добавлено картинок: " + МассивФайловДляЗагрузки.Количество() + " шт.");

    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПроверитьМассивФайловДляЗагрузки(МассивФайловДляЗагрузки)

    Результат = Новый Массив;

    Для каждого Файл Из МассивФайловДляЗагрузки Цикл

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | Номенклатура.Ссылка
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
    | ПО (НоменклатураПрисоединенныеФайлы.ВладелецФайла = Номенклатура.Ссылка)
    | И (НоменклатураПрисоединенныеФайлы.Наименование ПОДОБНО &КодДляПоиска)
    | И (НоменклатураПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ)
    | И (НоменклатураПрисоединенныеФайлы.Размер = &Размер)
    |ГДЕ
    | Номенклатура.КодДляПоиска ПОДОБНО &КодДляПоиска
    | И НоменклатураПрисоединенныеФайлы.Ссылка ЕСТЬ NULL ";

    Запрос.УстановитьПараметр("КодДляПоиска" , Файл.КодДляПоиска);
    Запрос.УстановитьПараметр("Размер" , Файл.Размер);

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    НовыйФайл = Новый Структура("Номенклатура,КодДляПоиска,Размер,ПолноеИмя,ИмяБезРасширения,Расширение,ВремяИзменения,УниверсальноеВремяИзменения", Выборка.Ссылка);
    ЗаполнитьЗначенияСвойств(НовыйФайл, Файл);
    Результат.Добавить(НовыйФайл);
    КонецЦикла;
    КонецЦикла;

    Возврат Результат;

    КонецФункции // ПроверитьМассивФайловДляЗагрузки()

    &НаСервереБезКонтекста
    Функция ЗагрузитьКартинкиСервер(МассивФайловДляЗагрузки)

    Для Каждого Файл Из МассивФайловДляЗагрузки Цикл

    ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл( Файл.Номенклатура,
    Файл.КодДляПоиска,
    СтрЗаменить(Файл.Расширение, ".", "),
    Файл.ВремяИзменения,
    Файл.УниверсальноеВремяИзменения,
    Файл.АдресВременногоХранилищаФайла,
    Файл.ПолноеИмя,
    ");

    ТекСпр = Файл.Номенклатура.ПолучитьОбъект();
    ТекСпр.ФайлКартинки = ПрисоединенныйФайл;
    ТекСпр.Записать();
    КонецЦикла;

    КонецФункции
```
---
Это будет работать, только если картинок не больше 9

```1c
    Для каждого Файл Из МассивФайлов Цикл
    СтруктураФайла = Новый Структура("КодДляПоиска,Размер,ПолноеИмя,ИмяБезРасширения,Расширение,ВремяИзменения,УниверсальноеВремяИзменения");
    ИмяБезРасширения = Файл.ИмяБезРасширения;
    Если Сред(ИмяБезРасширения, СтрДлина(ИмяБезРасширения) - 1, 1) = "_" Тогда
    ИмяБезРасширения = Лев(ИмяБезРасширения, СтрДлина(ИмяБезРасширения) - 2);
    КонецЕсли;
    СтруктураФайла.КодДляПоиска = СокрЛП(ИмяБезРасширения);
    // Продолжения цикла ....................................
    КонецЦикла;
```
---
Я делал это так - шел циклом по каталогу, и искал конкретное имя файла, зная что у него постфикс имеет вид "_ИтерацияЦикла", пока файлы находились, я добавлял их путь в массив, когда файл не нашелся, значит все, иду и добавляю то что в массиве. Здесь важно, чтобы названия были по порядку, и не было сценария, когда есть файл "_3", и нет файла "_2".
---
Если не трудно, можете поправить код который я скинул, я просто уже по всякому игрался с кодом как мог, но пока нужного результата добиться не смог.
---
*Первый файл у меня просто КодДляПоиска.jpg без _ИтерацияЦикла.
---
Это будет работать, только если картинок не больше 9

```1c
    Для каждого Файл Из МассивФайлов Цикл
    СтруктураФайла = Новый Структура("КодДляПоиска,Размер,ПолноеИмя,ИмяБезРасширения,Расширение,ВремяИзменения,УниверсальноеВремяИзменения");
    ИмяБезРасширения = Файл.ИмяБезРасширения;
    Если Сред(ИмяБезРасширения, СтрДлина(ИмяБезРасширения) - 1, 1) = "_" Тогда
    ИмяБезРасширения = Лев(ИмяБезРасширения, СтрДлина(ИмяБезРасширения) - 2);
    КонецЕсли;
    СтруктураФайла.КодДляПоиска = СокрЛП(ИмяБезРасширения);
    // Продолжения цикла ....................................
    КонецЦикла;
```
---
Спасибо, меня Ваш код вполне устраивает.
---
Вашим кодом получается выгрузить 11 картинок КодДляПоиска, КодДляПоиска_0, КодДляПоиска_1 и так до 9, в сумме 11 👍