Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 мая 2024, 22:36

Получение данных с эксел

Автор Shaman_blr, 08 фев 2023, 20:44

0 Пользователей и 1 гость просматривают эту тему.

Shaman_blr

Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
    Знач ПропускатьПустыеСтроки = Неопределено)
 
    Результат = Новый Массив;
 
    // для обеспечения обратной совместимости
    Если ПропускатьПустыеСтроки = Неопределено Тогда
        ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
        Если ПустаяСтрока(Строка) Тогда
            Если Разделитель = " " Тогда
                Результат.Добавить("");
            КонецЕсли;
            Возврат Результат;
        КонецЕсли;
    КонецЕсли;
    //
 
    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
        Подстрока = Лев(Строка, Позиция - 1);
        Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
            Результат.Добавить(Подстрока);
        КонецЕсли;
        Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
        Позиция = Найти(Строка, Разделитель);
    КонецЦикла;
 
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
        Результат.Добавить(Строка);
    КонецЕсли;
 
    Возврат Результат;
 
КонецФункции
Смотрю в строку если точка это 4 знак то будет элемент в группе если 3 знак то будет группа в справочнике.
Можете помочь как сделать чтобы смотрел какое количество точек в строке! Если в строке три точки то это элемент в группе , если две точки то это группа
Стрразделить в моей конфе не работает!

Максим75

Shaman_blr, СтрЧислоВхождений надо курить...

Shaman_blr

Максим75, не подскажешь где мне надо это изменить, а то я слабоват пока

Максим75

Shaman_blr,
Результат = СтрЧислоВхождений(Строка, ".");
вернет количество "точек" в Строке.

такой же был вопрос: Если в строке три точки то это элемент в группе , если две точки то это группа?

Shaman_blr

Максим75, да такой если <3 то это группа, если >3 то это элемент в группе

Максим75

Shaman_blr, так и проверять Результат на больше 3 - то что-то делать с элементом,иначе - то с группой

Если Результат>=3 тогда
   //что-то делаем с элементом
иначе
   //что-то делаем с группой
КонецЕсли

Shaman_blr

Максим75, я написал.
МассивКодов = РазложитьСтрокуВМассивПодстрок(Столбец2, ".");
Если МассивКодов.Количество() >= 4 Тогда
ЭтоЭлементВГруппе = Истина;
                ЭтоГруппа = Ложь;
//Сообщить(Столбец2 + " ЭтоЭлемент");
Иначе
ЭтоГруппа = Истина;
                ЭтоЭлементВГруппе = Ложь;
//Сообщить(Столбец2 + " ЭтоГруппа");
КонецЕсли;
а как теперь написать чтобы создавал уже в справочнике группы и элементы?

Afinogen

 B) можете использовать СтрРазделить(ВашаСтрока,".")

вернет массив разбитый по точкам

то есть строку типа

ААА.ААА.ААА

преобразует в массив из 3-х значений

ААА
ААА
ААА

Afinogen

пардон не увидел стрразделить)

Shaman_blr

Afinogen, Afinogen, МассивКодов возвращает значение в количестве А - это 1 значение
01.1 - это 2 значение 01.11.1 - это 3значение.
Просто я дальше не знаю что писать.
Я хочу из этого всего заполнить уже справочник, а опыта мало.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск