Добрый день!

Пишу обработку которая по каждой строке из excel будет создавать документ и заполнять его данными из колонок.
Так как только разбираюсь в этом деле вот что вышло:

```1c
    Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл

    // Создание документа и заполнение реквизитов
    НовыйДокумент = Документы.ПередачаНМА.СоздатьДокумент();
    НовыйДокумент.Дата = ТекущаяДата();
    НовыйДокумент.Ответственный = ПараметрыСеанса.ТекущийПользователь;

    Для каждого СтрокаМассив из МассивКолонок Цикл

    ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Text;

    // Получение имени колонки
    ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;

    // Заполнение данными
    Если ИмяКолонки = "Организация" тогда
    НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию(ТекущееЗначение,Истина);
    ИначеЕсли ИмяКолонки = "Контрагент" тогда
    НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ТекущееЗначение,Истина);
    КонецЕсли;

    КонецЦикла;

    НовыйДокумент.Записать();

    КонецЦикла;
```

Это работает, но колонок не две а 15+- и для каждой писать условие вроде как не правильно. Есть ли способ чем можно заменить часть кода которая ниже?

```1c
    // Заполнение данными
    Если ИмяКолонки = "Организация" тогда
    НовыйДокумент.Организация = Справочники.Организации.НайтиПоНаименованию(ТекущееЗначение,Истина);
    ИначеЕсли ИмяКолонки = "Контрагент" тогда
    НовыйДокумент.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(ТекущееЗначение,Истина);
    КонецЕсли;
```
---
1. выгружаем данные по колонкам в массивы
2. формируем из каждого массива ТЗ
3. ТЗ используем в качестве параметра запроса и получаем сразу те элементы, которые уже есть в БД и те, которые еще нужно создать.
4. В результате запроса отбираем те, которые нужно создать, создаем.
5. После всех созданных элементов формируем документ и заполняем данными из строки.

Изи мани © не помню откуда
---
1. выгружаем данные по колонкам в массивы
2. формируем из каждого массива ТЗ
3. ТЗ используем в качестве параметра запроса и получаем сразу те элементы, которые уже есть в БД и те, которые еще нужно создать.
4. В результате запроса отбираем те, которые нужно создать, создаем.
5. После всех созданных элементов формируем документ и заполняем данными из строки.

Изи мани © не помню откуда
---
Спасибо!
 Буду пробовать.
---
Не смотря на красоту это спорный путь, не ходите по нему. Оставьте как есть - что заказчик и создатель этих файлов экселя завтра в них изменит он сам не знает и вспоминать как "общий механизм" работает что бы снова написать "общий механизм" займет много больше времени разрабочиков коллег чем разбор 15 условий.

Можете справочники сделать одной веткой, доки другой, перечисления третей условно. но все равно у вас могут динамически менятся поля синхронизации и вписывать эти изменения в общий механизм будет пыткой.

Это я как человек писавший и склонный к написанию каких то заоблочных для понмания абстракций говорю.
---
еще добавлю что не старайтесь перетаскивать логику предприятия в СУБД. Это тоже спорный путь который будет висеть на вас неподъемными кандалами когда вопрос зайдет о более менее серьезной реорганизации данных. Вы себе отрезаете путь к точечному изменинию в API в таких случаях и будете вынуждены переписывать все запросы к таблицам измененных данных, т.к. по сути Вы сами эти таблицы сделали своим API.