Имя: Пароль:
1C
1С v8
Запись данных в excel
0 olgakrylova86
 
23.10.19
11:34
Всем добрый день! В общем есть вот такой код:

&НаКлиенте
Процедура Команда1(Команда)
                                                                    
    ИтоговыйФайл = "%USERPROFILE%\Desktop]art_2.xls";

    Эксель = Новый COMОбъект("Excel.Application");
    Книга = Эксель.WorkBooks.Open("%USERPROFILE%\Desktop\art_.xls");
    Эксель.ScreenUpdating = 0;
    Эксель.Calculation = -4135;
    Лист = Книга.WorkSheets(1);
    RangeAll = Книга.ActiveSheet.UsedRange;

    КолВоСтрок = RangeAll.Rows.Count;

    УдаленнаяЧасть = "";

    Для i = 1 По КолВоСтрок Цикл
        Модель = "Модель";
        Длина = СтрДлина(Лист.Cells(i, 2).value);
        ПоискМодель = Найти(Лист.Cells(i, 2).value, Модель);
        Лист.Cells(i, 2).value = Mid(Лист.Cells(i, 2).value, ПоискМодель, Длина);
            Если i > КолВоСтрок Тогда
                    Прервать;
            КонецЕсли;
    КонецЦикла;    

    Для j = 1 По КолВоСтрок Цикл
        
        Модель = Лист.Cells(j, 2).value;
        Длина = СтрДлина(Лист.Cells(j, 2).value);
        ПоискПробела = Найти(Модель, " ");
        
        Характеристика = Mid(Модель, ПоискПробела - 1 + ПоискПробела, Длина);
        Модель = СтрЗаменить(Модель, ШКХарактеристика, "");
        
        Если j > КолВоСтрок Тогда
                    Прервать;
            КонецЕсли;
    КонецЦикла;

    Для k = 1 По КолВоСтрок Цикл
        Лист.Cells(k, 4).value = ШКХарактеристика;
        Лист.Cells(k, 3).value = ШКМодель;
        Лист.Cells(k, 1).NumberFormat="0";
            Если k > КолВоСтрок Тогда
                Прервать;
            КонецЕсли;
    КонецЦикла;

    Лист.UsedRange.Worksheet.Columns("B:B").Delete(-4159);

    Эксель.DisplayAlerts=0;
    Книга.SaveAs(ИтоговыйФайл,-4143);
    Книга.Close();
    Эксель.DisplayAlerts=1;
    Эксель.Quit();
КонецПроцедуры

Для чего он мне? Что бы разобрать колонку "B"
Исходный вариант https://i.imgur.com/Hzj9vvx.png
Но при сохранении данные записываються одинаковые
Итоговый вариант https://i.imgur.com/Hzj9vvx.png
Подскажите пожалуйта где у меня ошибка или чего не хватает!
1 olgakrylova86
 
23.10.19
11:36
Приношу извинения вот скриншот итогового  файла https://i.imgur.com/FP8MqVc.png
2 evgeniy_n
 
23.10.19
12:13
У Вас цикл по переменной k работает отдельно. когда ШКХарактеристика и ШКМодель уже определены в предыдущем цикле.
Надо, видимо, строки из цикла k вставить в предыдущий цикл (цикл по k не нужен).
3 evgeniy_n
 
23.10.19
12:14
Или массивы используйте (для ШКХарактеристика и ШКМодель).
4 Chum
 
23.10.19
12:16
(0) ничего не смущает в полном имени файла итогового?
    ИтоговыйФайл = "%USERPROFILE%\Desktop]art_2.xls";

Для сравнения полное имя файла исходного
    Книга = Эксель.WorkBooks.Open("%USERPROFILE%\Desktop\art_.xls");
5 olgakrylova86
 
23.10.19
12:19
(2) спасибо , да цикл с "k" не нужен
6 olgakrylova86
 
23.10.19
12:19
(4) а если ты еще пресмотришься то
Характеристика = Mid(Модель, ПоискПробела - 1 + ПоискПробела, Длина);
        Модель = СтрЗаменить(Модель, ШКХарактеристика, "");
        
        Если j > КолВоСтрок Тогда
                    Прервать;
            КонецЕсли;
    КонецЦикла;

    Для k = 1 По КолВоСтрок Цикл
        Лист.Cells(k, 4).value = ШКХарактеристика;
        Лист.Cells(k, 3).value = ШКМодель;
        Лист.Cells(k, 1).NumberFormat="0";
            Если k > КолВоСтрок Тогда
                Прервать;
            КонецЕсли;
    КонецЦикла;