как правильно организовать группы в справочнике, если нумерация групп и данных идет
2. группа
2.1. группа
2.1.1. группа
2.1.1.1 группа
2.1.1.1.1 данные
2.1.1.2 группа

как при чтении Excel эту нумерацию соотнести к группам и сделать иерархию ?
---
Да, разбирать по символам. А как иначе? Алгоритмы загрузки могут быть разные. Если отсортировано по иерархии, как ты показал, то приходит в голову что-то типа такого:
1) вычитываешь из Экселя в ТЗ построчно.
При этом код текущего элемента (после последней точки) пишешь в отдельную колонку (для удобства - это будет кодом в справочнике), а часть кода перед ним используешь для поиска родителя среди уже прочитанных строк (ищешь вверх по ТЗ до совпадения). Ссылку на родительскую строку записываешь также в отдельную колонку. При этом в найденной родительской строке проставляешь признак того, что это группа (в отдельной колонке), т.к. она имеет подчиненные элементы. По итогу ты получишь ТЗ с явной иерархией строк (эдакой эмуляцией дерева значений), признаками групп и кодами для справочника.
2) обходишь полученную ТЗ.
Так как она также в порядке иерархии, то просто в процессе обхода все и создаешь. Сначала видишь первую строку с группой первого уровня и без ссылки на родителя - значит просто создаешь/обновляешь группу справочника первого уровня (без родителя) с соответствующим кодом. Важно - полученную ссылку справочника также записываешь в отдельную колонку ТЗ. Для второй строки видишь ссылку на родительскую строку, у которой уже есть ссылка на справочник. Используешь ее как родителя и ищешь/создаешь вложенный элемент/группу. И так далее.
ЗЫ. Можно на самом деле и более эффективный алгорим написать. Но мне нравятся пусть избыточные, но простые и с удобными этапами для простой отладки и доработки.
---
Если это фиксированная нумерация, а не динамическая и иерархия также фиксированная (при периодической загрузке из Excel не будет такого, что существующий элемент оказался под другим номером и между группами перенос также исключен), то можно для справочника включить нумерацию в пределах подчинения и тупо так и загружать один к одному.
ЗЫ. Если критично разделение на группы и элементы, тогда в экселе нужен еще признак группы. Ну или придется его определять при первичном проходе по наличию элементов в группе. В противном случае можно включить иерархию элементов и не париться с группами.
---
саму нумерацию нужно разбирать по символам? как описать в процедуре что если 2. то это группа, если 2.1. то это подчиненная группа и родитель 2. и так далее
---
Да, разбирать по символам. А как иначе? Алгоритмы загрузки могут быть разные. Если отсортировано по иерархии, как ты показал, то приходит в голову что-то типа такого:
1) вычитываешь из Экселя в ТЗ построчно.
При этом код текущего элемента (после последней точки) пишешь в отдельную колонку (для удобства - это будет кодом в справочнике), а часть кода перед ним используешь для поиска родителя среди уже прочитанных строк (ищешь вверх по ТЗ до совпадения). Ссылку на родительскую строку записываешь также в отдельную колонку. При этом в найденной родительской строке проставляешь признак того, что это группа (в отдельной колонке), т.к. она имеет подчиненные элементы. По итогу ты получишь ТЗ с явной иерархией строк (эдакой эмуляцией дерева значений), признаками групп и кодами для справочника.
2) обходишь полученную ТЗ.
Так как она также в порядке иерархии, то просто в процессе обхода все и создаешь. Сначала видишь первую строку с группой первого уровня и без ссылки на родителя - значит просто создаешь/обновляешь группу справочника первого уровня (без родителя) с соответствующим кодом. Важно - полученную ссылку справочника также записываешь в отдельную колонку ТЗ. Для второй строки видишь ссылку на родительскую строку, у которой уже есть ссылка на справочник. Используешь ее как родителя и ищешь/создаешь вложенный элемент/группу. И так далее.
ЗЫ. Можно на самом деле и более эффективный алгорим написать. Но мне нравятся пусть избыточные, но простые и с удобными этапами для простой отладки и доработки.
---
В экселе в строке должны быть данные типа "Это группа", "Код текущего Элемента","Наименование текущего элемента", "Реквизит текущегшо элемента", "КОД ГРУППЫ"
При загрузке Родителя определяешь по коду группы.

Как вариант - иерархию групп загрузить отдельно.
Тогда будет
"Код Родительской группы", "Код текущей группы", "Наименование текущей группы".
Все зависит от того где делаешь таблицу для загрузки
---
На самом деле, можно искать родительскую строку в ТЗ не вверх (на больших справочниках с небольшим количеством групп может быть долго), а через НайтиСтроку(). А еще быстрее - через соответствие кодов ссылкам на строки, которое заполнять в процессе обхода. Получение по соответствию вообще мгновенное и в этом случае скорость обхода будет прямо пропорциональна количеству строк, без загадочных "просадок" на больших ТЗ.