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

```1c
    Процедура ВыгрузитьВДбф ()
    Счетчик = 0;
    Объект.Путь = "C:\1c\upload";
    Путь = "C:\1c\";
    БД = Новый XBase;
    БД.Кодировка = КодировкаXBase.ANSI;
    БД.Поля.Добавить("Code", "S", 8);
    БД.Поля.Добавить("Name", "S", 40);
    Бд.СоздатьФайл(Путь + "upload" + ".dbf", Путь + "index.cdx");
    Бд.Индексы.Добавить("IDXCODE", "CODE");
    ФлИБД = БД.СоздатьИндексныйФайл(Путь + "Index.cdx");
    БД.АвтоСохранение = Истина;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Наименование,
    | Номенклатура.Код
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    Пока Выборка.Следующий() Цикл

    БД.Добавить();
    БД.CODE = Выборка.Код;
    БД.NAME = Выборка.Наименование;
    Счетчик = Счетчик + 1;
    Сообщить("Выгруженно " + Выборка.Наименование);

    КонецЦикла;

    Сообщить("Общее количество выгруженных элементов равно " + Счетчик);
    Сообщить("Путь выгрузки C:\1c\upload");
    БД.ЗакрытьФайл();

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

Решил так, все правильно работает. Но потом понял, что не правильно все делаю. И что каждая номеклатура находится в своей подразделе. То есть Раздел Материал а уже в нем Молоток, Доска, гвозди. И так же раздел услуги а в нем Установка дивана, и тд.
Так же в некоторых разделах есть подразделы. т.е Услуги ---> услуги за 2015 год.
Подскажите пожалуйста Можно ли как нибудь это сделать?
Я хотел сделать так

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Родитель.Код КАК РодительКод,
    | ЕСТЬNULL(Номенклатура.Родитель.Наименование, 0) КАК РодительНаименование,
    | Номенклатура.Код КАК Код,
    | Номенклатура.Наименование КАК Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | Номенклатура.Родитель.Код,
    | Номенклатура.Код,
    | Номенклатура.Наименование,
    | ЕСТЬNULL(Номенклатура.Родитель.Наименование, 0)";

    Запрос.УстановитьПараметр("Наименование", Наименование);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    Сообщить((ВыборкаДетальныеЗаписи.РодительНаименование) + " " + (ВыборкаДетальныеЗаписи.Наименование));

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

```1c
    {Обработка.Обработка124.Форма.Форма.Форма(20,44)}: Переменная не определена (Наименование)
    Запрос.УстановитьПараметр("Наименование", <<?>>Наименование); (Проверка: Сервер)
```

Получаю ошибку. Хотя в консоле работало. На сколько в правильном направлению думаю?
---
```1c
    Путь = "C:\1c\";
    БД = Новый XBase;
    БД.Кодировка = КодировкаXBase.ANSI;
    БД.Поля.Добавить("Code", "S", 10);
    БД.Поля.Добавить("RoditeMain", "S",40);
    БД.Поля.Добавить("Roditel", "S", 40);
    БД.Поля.Добавить("Name", "S", 40);
    Бд.СоздатьФайл(Путь + "upload1" + ".dbf", Путь + "index.cdx");
    Бд.Индексы.Добавить("IDXCODE", "CODE");
    ФлИБД = БД.СоздатьИндексныйФайл(Путь + "Index.cdx");
    БД.АвтоСохранение = Истина;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Родитель.Код КАК РодительКод,
    | Номенклатура.Родитель.Родитель.Наименование КАК РодительРодительНаименование,
    | Номенклатура.Родитель.Наименование КАК РодительНаименование,
    | Номенклатура.Наименование КАК Наименование,
    | Номенклатура.Код КАК Код,
    | Номенклатура.ЭтоГруппа
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    | РодительРодительНаименование";

    //Запрос.УстановитьПараметр("Наименование", Наименование);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    БД.Добавить();
    БД.CODE = ВыборкаДетальныеЗаписи.Код;
    БД.RoditeMain = ВыборкаДетальныеЗаписи.РодительРодительНаименование;
    БД.Roditel = ВыборкаДетальныеЗаписи.РодительНаименование;
    БД.Name = ВыборкаДетальныеЗаписи.Наименование;
    //БД.Group3 = ВыборкаДетальныеЗаписи.Код;
    //Если НЕ БД.Group Тогда
    // БД.Group2 = ВыборкаДетальныеЗаписи.НаименованиеГруппы;
    //Иначе
    // БД.Group2 = "Главный";
    //КонецЕсли;

    НоваяГруппа = Справочники.Тест.СоздатьГруппу();

    Если ВыборкаДетальныеЗаписи.РодительРодительНаименование = Null И ВыборкаДетальныеЗаписи.РодительНаименование = Null Тогда
    НоваяГруппа.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    НоваяГруппа.Записать();
    КонецЕсли;

    Если ВыборкаДетальныеЗаписи.РодительРодительНаименование = Null И ВыборкаДетальныеЗаписи.РодительНаименование <> Null Тогда
    Родитель = Справочники.Тест.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.РодительНаименование, Истина);
    НоваяГруппа.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    НоваяГруппа.Родитель = Родитель;
    НоваяГруппа.Записать();
    КонецЕсли;

    Если ВыборкаДетальныеЗаписи.ЭтоГруппа = ЛОЖЬ Тогда
    НоваяГруппа = Справочники.Тест.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.РодительНаименование, Истина);
    НовыйОбъект = Справочники.Тест.СоздатьЭлемент();
    НовыйОбъект.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    НовыйОбъект.Родитель = НоваяГруппа.Ссылка;

    НовыйОбъект.Записать();

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

Решил проблему так, если кому нужно
---
Так а где у тебя переменная "Наименование" ? В консоли-то она автоматом создается и ты ей значение прописываешь, а в твоем, выше приведенном, тексте данной переменной нет как таковой, кроме попытки передать ее в качестве параметра...
---
точно, это что то проглядел).
А как мне тогда в общем сделать задуманное мною? Я думаю вообще в верном направлении?
---
Если я правильно понимаю, то

```1c
    // Это убрать
    | ЕСТЬNULL(Номенклатура.Родитель.Наименование, 0) КАК РодительНаименование

    // Это добавить
    | ГДЕ
    | Номенклатура.ЭтоГруппа = Ложь
```
---
Но если
В дб выгруженно все одним список, мне бы как нибудь флаг какой нибудь поставить, чтобы отличать, что раздел что подраздел
---
Еще вот мысль появилась

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЕСТЬNULL(Номенклатура.Родитель.Наименование, 0) КАК Поле1
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | Номенклатура.Родитель.Наименование";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    СоздатьМассив = Новый Массив();
    СоздатьМассив.
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    СоздатьМассив.Добавить(ВыборкаДетальныеЗаписи.Поле1);
    КонецЦикла;
```

И передать в значение параметра Наименование уже нужное наименование группы
---
У тебя нигда нету условия (секция "ГДЕ"), поэтому, даже вот это предложение

```1c
    Запрос.УстановитьПараметр("Наименование", Наименование);
```

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

```1c
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Родитель.Код КАК РодительКод,
    | Номенклатура.ЭтоГруппа КАК ФлагГруппы,
    | Номенклатура.Код КАК Код,
    | Номенклатура.Наименование КАК Наименование
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | Номенклатура.Родитель.Код,
    | Номенклатура.Код,
    | Номенклатура.Наименование,
    | Номенклатура.ЭтоГруппа";
```
---
Гениально, спасибо) все было проще. А если есть подгруппа в Группе а в это группе уже значения?
---
Да и все немного в разнаброс получается немного, хотел бы материалы записались в группе где только материалы.
---
Так же Я не вижу общую группу, почему подгруппу в котороый материал определили записал, а группу в которой подгруппы нет
---
```1c
    Путь = "C:\1c\";
    БД = Новый XBase;
    БД.Кодировка = КодировкаXBase.ANSI;
    БД.Поля.Добавить("Code", "S", 10);
    БД.Поля.Добавить("RoditeMain", "S",40);
    БД.Поля.Добавить("Roditel", "S", 40);
    БД.Поля.Добавить("Name", "S", 40);
    Бд.СоздатьФайл(Путь + "upload1" + ".dbf", Путь + "index.cdx");
    Бд.Индексы.Добавить("IDXCODE", "CODE");
    ФлИБД = БД.СоздатьИндексныйФайл(Путь + "Index.cdx");
    БД.АвтоСохранение = Истина;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Номенклатура.Родитель.Код КАК РодительКод,
    | Номенклатура.Родитель.Родитель.Наименование КАК РодительРодительНаименование,
    | Номенклатура.Родитель.Наименование КАК РодительНаименование,
    | Номенклатура.Наименование КАК Наименование,
    | Номенклатура.Код КАК Код,
    | Номенклатура.ЭтоГруппа
    |ИЗ
    | Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    | РодительРодительНаименование";

    //Запрос.УстановитьПараметр("Наименование", Наименование);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

    БД.Добавить();
    БД.CODE = ВыборкаДетальныеЗаписи.Код;
    БД.RoditeMain = ВыборкаДетальныеЗаписи.РодительРодительНаименование;
    БД.Roditel = ВыборкаДетальныеЗаписи.РодительНаименование;
    БД.Name = ВыборкаДетальныеЗаписи.Наименование;
    //БД.Group3 = ВыборкаДетальныеЗаписи.Код;
    //Если НЕ БД.Group Тогда
    // БД.Group2 = ВыборкаДетальныеЗаписи.НаименованиеГруппы;
    //Иначе
    // БД.Group2 = "Главный";
    //КонецЕсли;

    НоваяГруппа = Справочники.Тест.СоздатьГруппу();

    Если ВыборкаДетальныеЗаписи.РодительРодительНаименование = Null И ВыборкаДетальныеЗаписи.РодительНаименование = Null Тогда
    НоваяГруппа.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    НоваяГруппа.Записать();
    КонецЕсли;

    Если ВыборкаДетальныеЗаписи.РодительРодительНаименование = Null И ВыборкаДетальныеЗаписи.РодительНаименование <> Null Тогда
    Родитель = Справочники.Тест.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.РодительНаименование, Истина);
    НоваяГруппа.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    НоваяГруппа.Родитель = Родитель;
    НоваяГруппа.Записать();
    КонецЕсли;

    Если ВыборкаДетальныеЗаписи.ЭтоГруппа = ЛОЖЬ Тогда
    НоваяГруппа = Справочники.Тест.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.РодительНаименование, Истина);
    НовыйОбъект = Справочники.Тест.СоздатьЭлемент();
    НовыйОбъект.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    НовыйОбъект.Родитель = НоваяГруппа.Ссылка;

    НовыйОбъект.Записать();

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

Решил проблему так, если кому нужно