Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 окт 2025, 07:04

!!!перемещение части текста до разделителя в соседнюю ячейку

Автор MarinaTroshina, 01 окт 2025, 19:27

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

MarinaTroshina

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

MarinaTroshina

И потом еще полученный табличный документ нужно вновь преобразовать в формат Excel

sali

то есть в excel в строку написаны все данные и тебе надо их разделить? отлично ищешь правописание разделителя и передашь с поля выбора символ разделителя

MarinaTroshina

sali, в экселе строк может быть много и получается нужно каждую в цикле обойти, чтобы из всех было перемещено, например, значение артикула до первого разделителя. В силу своей неопытности, я сейчас встряла на том, что не знаю как мне правильно обратиться к ячейкам. К выделенным обращаться или же может ко всей колонке можно... Не могли бы Вы, пожалуйста, подсказать мне? Я много уже облазила сайтов, а результата нет(

sali



sali

Цитата: MarinaTroshina от 01 окт 2025, 20:43не знаю как мне правильно обратиться к ячейкам.
ну ты когда работаешь с excel , ты первым делом выбираешь/получаешь сам файл ,да. потом ты его читаешь , чтобы получить с него данные . прям так и пишется
переменнаяexcel.прочитать(выбранныйфайл);
потом тебе нужно посчитать с какой строки начинают идти твои данные, предположим у тебя имя Фёдор на 8 строке, и тебе нужно задать количество колонок
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
      КоличествоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
 

потом просто перебираешь в цикле
Для НомерСтроки = 1 По КоличествоСтрок Цикл     
// к примеру,  нужно создать документ новый. так и пишешь
          нДок = Документы.РеализацияТоваровИУслуг.СоздатьДокумент();
          нДок.Дата = Лист.Cells(НомерСтроки, 3).Value;
          Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ЛицевойСчёт", Лист.Cells(НомерСтроки, 5).Value);
            Если ЗначениеЗаполнено(Контрагент) Тогда
                нДок.Контрагент = Контрагент;
            Иначе
                Сообщить("В строке табличной части " + НомерСтроки + ", не был найден контрагент" + Лист.Cells(НомерСтроки, 7).Text);
            КонецЕсли;

НомерСтроки - это номер строки на котором находится цикл
цифра после запятой - это номер колонки с твоими данными

sali

MarinaTroshina, ну ёмаё .. я ж сказал , используй СтрЗаменить() для твоего разделителя.
МояСтрока = "Это строка с пробелами";
    НоваяСтрока = СтрЗаменить(МояСтрока, " ", "");
хотя тебе ж надо найти и передать обратно, значит
МояСтрока = "Значение1;Значение2;Значение3";
Разделитель = ";";

ПозицияРазделителя = НайтиСтроку(МояСтрока, Разделитель);

Если ПозицияРазделителя > 0 Тогда
    // Разделитель найден, его позиция - ПозицияРазделителя
    Сообщить("Разделитель найден на позиции " + ПозицияРазделителя);
    // Здесь можно использовать найденную позицию для передачи в excel
Иначе
    // Разделитель не найден
    Сообщить("Разделитель не найден");
КонецЕсли;

Теги:

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

Рейтинг@Mail.ru

Поиск