нужно из excel загрузить в 1с элементы в справочник.
мой код просто загружает все элементы и все.
А нужно сделать Чтобы код "А" был группой с названием что на скрине , а "01" была подгруппой "А" и тоже название как на скрине
Прошу помощи.

```1c
    Прогресс=0;
    ТабДок = ПрочитатьТабличныйДокумент();

    ДанныеФайла = Новый ТаблицаЗначений;
    ДанныеФайла.Колонки.Добавить("Код");
    ДанныеФайла.Колонки.Добавить("Наименование");

    Если не ТабДок=null тогда
    КоличествоСтрокТаблицы = ТабДок.ВысотаТаблицы;
    Для НомерСтрокиТаблицы = 2 по КоличествоСтрокТаблицы цикл

    СтрокаДанных = ДанныеФайла.Добавить();
    Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C1");
    ТекущаяОбласть = Область.ТекущаяОбласть;
    СтрокаДанных.Код = СокрЛП(ТекущаяОбласть.Текст);

    Область = ТабДок.ПолучитьОбласть("R" + Формат(НомерСтрокиТаблицы,"ЧГ=0") + "C2");
    ТекущаяОбласть = Область.ТекущаяОбласть;
    СтрокаДанных.Наименование = СокрЛП(ТекущаяОбласть.Текст);

    Для каждого ТекСтрока из ДанныеФайла цикл
    спр = Справочники.СВ_КлассификаторПродукцииПоВидамЭкономическойДеятельности;
    НовыйЭлемент = спр.СоздатьЭлемент();
    НовыйЭлемент.Код = ТекСтрока.Код;
    НовыйЭлемент.Наименование = ТекСтрока.Наименование;
    Попытка
    НовыйЭлемент.Записать();
    Исключение
    Сообщить("Не удалось записать элемент! Код="+ТекСтрока.Код);
    Продолжить;
    КонецПопытки;
    КонецЦикла;

    Сообщить(СтрокаДанных.Код +" " + СтрокаДанных.Наименование);
    Прогресс = Окр(НомерСтрокиТаблицы/КоличествоСтрокТаблицы*100);

    КонецЦикла;
    Прогресс = 100;
    Предупреждение("Выполнено!!!");
    Прогресс = 0;
```
---
СтрРазделить доступна начиная с версии 8.3.6. Если у вас старее релиз, используйте самописную, например:

```1c
    Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
    Знач ПропускатьПустыеСтроки = Неопределено)

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

    // для обеспечения обратной совместимости
    Если ПропускатьПустыеСтроки = Неопределено Тогда
    ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
    Если ПустаяСтрока(Строка) Тогда
    Если Разделитель = " " Тогда
    Результат.Добавить(");
    КонецЕсли;
    Возврат Результат;
    КонецЕсли;
    КонецЕсли;
    //

    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
    Подстрока = Лев(Строка, Позиция - 1);
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
    Результат.Добавить(Подстрока);
    КонецЕсли;
    Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
    Позиция = Найти(Строка, Разделитель);
    КонецЦикла;

    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
    Результат.Добавить(Строка);
    КонецЕсли;

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

    КонецФункции
```
---
Через СтрРазделить() получаете массив кодов. В зависимости от количества элементов определяете группа это или элемент. Формируете из массива полный код родителя, находите и присваиваете новому элементу/группе.
---
Процедура или функция с указанным именем не определена (СтрРазделить) всю дорогу так пишет, я уже пробовал через СтрРазделить
---
Как релиз платформы?
---
версия конфы 1.6.6.58
---
А нужно сделать Чтобы код "А" был группой с названием что на скрине , а "01" была подгруппой "А" и тоже название как на скрине

```1c
    Если Код = "А" Тогда
    Группа = Справочник.СоздатьГруппу();
    Группа.Наименование = КакНаСкрине;
    Группа.Записать();
    КонецЕсли;

    Если Код = "01" Тогда
    Группа01 = Справочник.СоздатьГруппу();
    Группа01.Наименование = КакНаСкрине;
    Группа01.Родитель = Группа;
    Группа01.Записать();
```
---
это я для 1 строчки написал там же на картинке дальше есть, я же не буду расписывать каждую)
---
В итоге будет типо такого?

```1c
    Если Код = "А" Тогда

    ИначеЕсли Код = "01" Тогда

    ИначеЕсли Код = "01.1" Тогда

    ИначеЕсли Код = "01.11" Тогда

    ИначеЕсли Код = "01.11.1" Тогда

    ИначеЕсли Код = "01.11.11" Тогда

    ИначеЕсли Код = "01.11.11.100" Тогда

    ИначеЕсли Код = "01.11.11.110" Тогда
```
---
А платформа 1С?
---
8.2
---
8.3 описался))
---
СтрРазделить доступна начиная с версии 8.3.6. Если у вас старее релиз, используйте самописную, например:

```1c
    Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
    Знач ПропускатьПустыеСтроки = Неопределено)

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

    // для обеспечения обратной совместимости
    Если ПропускатьПустыеСтроки = Неопределено Тогда
    ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
    Если ПустаяСтрока(Строка) Тогда
    Если Разделитель = " " Тогда
    Результат.Добавить(");
    КонецЕсли;
    Возврат Результат;
    КонецЕсли;
    КонецЕсли;
    //

    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
    Подстрока = Лев(Строка, Позиция - 1);
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
    Результат.Добавить(Подстрока);
    КонецЕсли;
    Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
    Позиция = Найти(Строка, Разделитель);
    КонецЦикла;

    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
    Результат.Добавить(Строка);
    КонецЕсли;

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

    КонецФункции
```
---
это мы типа будем отбирать по точкам в поле код, да?
---
Мы будем получать массив кодов родителей из строки с разделителем, и по количеству кодов в массиве определять это группа или элемент. По вашему скрину я предполагаю, что если в массиве кодов 4 значения, то это элемент, первые 3 элемента + "А" это коды родителей. Если в массиве кодов значений меньше 4, то это группы. Первую группу с кодом "А" я бы создал вручную и файл раздробил по корневым группам с буквенным кодом, меньше проблем
---
а можешь написать как вызвать эту функцию в процедуре)я просто ученик еще) а задачку нужно решить) помоги пожалуйста)
---
//начало процедуры
бла-бал-бла
МассивКодов = РазложитьСтрокуВМассивПодстрок(Код, ".");
Если МассивКодов.Количество() = 4 Тогда
Иначе
КонецЕсли;
бла-бла-бла
КонецПроцедуры;
---
Добавлю к коллеге что можно вместо РазложитьСтрокуВМассивПодстрок() использовать платформенную СтрРазделить(), если платформа не древняя.
---
Да там чуть выше автор писал, что у него ошибка при вызове, но точный релиз платформы так и не поведал, наверное, подписал лютое соглашение о неразглашении...
---
я так понял он смотрит 3 символ что то точка тогда функция начинает работать, но а если такая ситуация что по дальше будет код 01.11.12 и он должен будет стать подгруппой его "01.11" а по нынешней функции я так понимаю он будет подгруппой "01", да?
---
Функция делит по разделителю строку на подстроки и формирует из них массив. Например: "01.11.11.100", получим массив из 4 элементов "01", "11", "11", "100". Посмотрел твой скрин еще раз, просто разделить строку не получится, у тебя "01.1" и "01.11" две разных группы, и между единицами разделителя уже нет.
Можешь выложить файл, который нужно загрузить?
---
я когда отладкой пробежал он этот элемент 01.11.11.100 в позиции пишет 3 а не 4
---
извиняюсь! все работает)))))
---
МассивКодов = РазложитьСтрокуВМассивПодстрок(Столбец2, ".");
   Если МассивКодов.Количество() >= 4 Тогда
    ЭтоЭлементВГруппе = Истина;
                ЭтоГруппа = Ложь;
   Иначе
    ЭтоГруппа = Истина;
                ЭтоЭлементВГруппе = Ложь;
   КонецЕсли;

а как мне создание элемента написать в справочник уже?
---
Нужно учесть еще этот момент: "Посмотрел твой скрин еще раз, просто разделить строку не получится, у тебя "01.1" и "01.11" две разных группы, и между единицами разделителя уже нет."
Создать так: https://helpf.pro/faq/view/298.html
---
все пойдет) я имел ввиду что, когда я жму выполнить он проходит начало процедуры, попадает в функцию в твою, и потом смотрит результат что выше писали код. А что дальше писать чтобы он создавал уже в справочник группа и элементы по списку который проходит.
---
Дальше формировать полный код родителя по "количеству записей - 1" искать по нему родителя и создавать либо группу либо элемент в зависимости от количества записей
---
тот пример подойдет который ты скинул?
---
можешь написать если я хочу смотреть по количеству точек , если 1 ли 2 точке то я буду писать что это группа , а если 3 или 4 точки то это элемент в группе