Имя: Пароль:
1C
1С v8
парсинг файла из ексел
🠗 (Волшебник 09.02.2023 09:14)
0 shaman_blr
 
09.02.23
08:58
Создал функцию которая считает количество элементов в строке.
Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",")
Результат = Новый Массив;
Если ПустаяСтрока(Строка) Тогда
Возврат Результат;
КонецЕсли;
Позиция = Найти(Строка, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Строка, Позиция - 1);
Если Не ПустаяСтрока(Подстрока) Тогда
Результат.Добавить(Подстрока);
КонецЕсли;
Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
Позиция = Найти(Строка, Разделитель);
КонецЦикла;
Если Не ПустаяСтрока(Строка) Тогда
Результат.Добавить(Строка);
КонецЕсли;
Возврат Результат;
КонецФункции;

В процедуре я ссылаюсь на функцию
МассивКодов = РазложитьСтрокуВМассивПодстрок(Столбец2, ".");
            Если МассивКодов.Количество() >= 4 Тогда
                        .....
            Иначе
                        .....
            КонецЕсли;
Вопрос что мне писать в тогда и иначе?
У меня будет так если >=4 то это элемент в группе
а если <4 то это группа
1 Fish
 
09.02.23
09:07
Так и пиши.
Если МассивКодов.Количество() >= 4 Тогда
                        ЭтоЭлементВГруппе = Истина;
                        ЭтоГруппа = Ложь;
            Иначе
                        ЭтоГруппа = Истина;
                        ЭтоЭлементВГруппе = Ложь;
            КонецЕсли;
2 mikecool
 
09.02.23
09:07
дважды прочитал вопрос, еле понял...
3 shaman_blr
 
09.02.23
09:08
Пример ексел уже кидал где то
код наименование
01 молоко (Это группа)
01.1 мол (Это подгруппа в группе 01)
01.11 йцу (Это подгруппа в группе 01)
01.11.11 кен (Это подгруппа в группе 01)
01.11.11.100 йцу (Это элемент в группе 01.11.11)
4 Asmody
 
модератор
09.02.23
09:09
(0) Тема не отражает суть сообщения
5 Волшебник
 
модератор
09.02.23
09:15
(0) За отсутствие "лесенки" надо руки отрывать
6 shaman_blr
 
09.02.23
09:16
(1) я имел ввиду как написать что создавать в справочнике.
спр = Справочники.цйуйцуйцуцуцуцу;
                НовыйЭлемент = спр.СоздатьЭлемент();
                НовыйЭлемент.Код = Столбец2.Код;
                НовыйЭлемент.Наименование = Столбец3.Наименование;
Типа этого. Тока как это рассписать
7 Fedor-1971
 
09.02.23
09:19
(6) У массива нет столбцов

(3) Вот это "01.11.11.100" прямо в одну строку или таки это разные колонки в Екселе?
8 shaman_blr
 
09.02.23
09:23
(7) это в одной строке. В колонке Код.
9 Fedor-1971
 
09.02.23
09:39
7+ Делим 01.11.11.100 йцу

делимаяСтрока ="01.11.11.100 йцу";
масКодНаименование = стрЗаменить(делимаяСтрока, " ", Символы.ПС);
Если СтрЧислоСтрок(масКодНаименование) = 2 тогда
  стрКод = СтрПолучитьСтроку(масКодНаименование, 1);
  стрНаименование = СтрПолучитьСтроку(масКодНаименование, 2);
  масКода = СтрЗаменить(стрКод, ".", Символы.ПС);
  
  числоРазделов = СтрЧислоСтрок(масКода);
  Для поз = 1 по числоРазделов цикл
     КодЭлемента = СтрПолучитьСтроку(масКода, 1);
     чтоНашли = Справочники.цйуйцуйцуцуцуцу.НАйтиПоКоду(КодЭлемента);
     Если ЧтоНашли.Пустая() тогда
       Если поз < 4 тогда
          Создаём группу с КоэЭлемента и стрНаименование
       Иначе
          Создаём элемент
       КонецЕсли;

     КонецЕсли;
  КонецЦикла;
Иначе
  Сообщить("Облажались со строкой");
КонецЕсли;
10 Fedor-1971
 
09.02.23
09:56
9+ мелочи поправишь сам
Независимо от того, куда вы едете — это в гору и против ветра!